expo-sqlite 58.0.8 → 58.0.10

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 (68) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/cpp/NativeDatabaseBinding.cpp +0 -22
  4. package/android/src/main/cpp/NativeDatabaseBinding.h +0 -1
  5. package/android/src/main/cpp/NativeStatementBinding.cpp +3 -1
  6. package/android/src/main/cpp/NativeStatementBinding.h +1 -1
  7. package/android/src/main/java/expo/modules/sqlite/NativeDatabase.kt +5 -0
  8. package/android/src/main/java/expo/modules/sqlite/NativeDatabaseBinding.kt +0 -1
  9. package/android/src/main/java/expo/modules/sqlite/NativeStatement.kt +9 -1
  10. package/android/src/main/java/expo/modules/sqlite/SQLiteModule.kt +78 -48
  11. package/dev-plugin-dist/+not-found.html +1 -1
  12. package/dev-plugin-dist/_expo/static/js/web/{__common-b5c30377ac28ec1a3c7472c7feddcab4.js → __common-9b94dd2fbdbb825a662f42cf8d2077ee.js} +36 -36
  13. package/dev-plugin-dist/_expo/static/js/web/{_layout-bdc15c267ba9298fc3df49fa915a8895.js → _layout-b2894030c1dfbd95b717a85901b6c271.js} +21 -21
  14. package/dev-plugin-dist/_expo/static/js/web/{entry-182fd72f164b90bb353bfd4ca3257c12.js → entry-04fdb7d857a65c0ed638ef2d774a4b6e.js} +547 -550
  15. package/dev-plugin-dist/_expo/static/js/web/{index-5d44464b52f351ee1a8d579d6ec31de6.js → index-4bf2da199f699eb47a42074d5e183c07.js} +1740 -1740
  16. package/dev-plugin-dist/_expo/static/js/web/{worker-634941622d077e92764ccbb4960edffc.js → worker-d51aa6be89e271e571111274ab8e7f5c.js} +17 -17
  17. package/dev-plugin-dist/_sitemap.html +1 -1
  18. package/dev-plugin-dist/index.html +1 -1
  19. package/ios/Benchmarks/JavaScriptBenchmarks.swift +65 -0
  20. package/ios/DatabaseChangeEvent.swift +4 -3
  21. package/ios/NativeDatabase.swift +14 -5
  22. package/ios/NativeStatement.swift +179 -15
  23. package/ios/SQLiteBindValue.swift +39 -0
  24. package/ios/SQLiteColumnValue.swift +54 -0
  25. package/ios/SQLiteModule.swift +40 -227
  26. package/ios/Tests/NativeStatementJavaScriptTests.swift +124 -0
  27. package/ios/Tests/NativeStatementTests.swift +122 -0
  28. package/ios/Tests/SQLiteModuleTests.swift +18 -1
  29. package/ios/Tests/test_StatementCleanup.swift +153 -0
  30. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10-sources.jar +0 -0
  31. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10-sources.jar.md5 +1 -0
  32. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10-sources.jar.sha1 +1 -0
  33. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10-sources.jar.sha256 +1 -0
  34. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10-sources.jar.sha512 +1 -0
  35. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.aar +0 -0
  36. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.aar.md5 +1 -0
  37. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.aar.sha1 +1 -0
  38. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.aar.sha256 +1 -0
  39. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.aar.sha512 +1 -0
  40. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/{58.0.8/expo.modules.sqlite-58.0.8.module → 58.0.10/expo.modules.sqlite-58.0.10.module} +22 -22
  41. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.module.md5 +1 -0
  42. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.module.sha1 +1 -0
  43. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.module.sha256 +1 -0
  44. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.module.sha512 +1 -0
  45. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/{58.0.8/expo.modules.sqlite-58.0.8.pom → 58.0.10/expo.modules.sqlite-58.0.10.pom} +1 -1
  46. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.pom.md5 +1 -0
  47. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.pom.sha1 +1 -0
  48. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.pom.sha256 +1 -0
  49. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.10/expo.modules.sqlite-58.0.10.pom.sha512 +1 -0
  50. package/package.json +4 -4
  51. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8-sources.jar +0 -0
  52. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8-sources.jar.md5 +0 -1
  53. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8-sources.jar.sha1 +0 -1
  54. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8-sources.jar.sha256 +0 -1
  55. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8-sources.jar.sha512 +0 -1
  56. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.aar +0 -0
  57. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.aar.md5 +0 -1
  58. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.aar.sha1 +0 -1
  59. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.aar.sha256 +0 -1
  60. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.aar.sha512 +0 -1
  61. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.module.md5 +0 -1
  62. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.module.sha1 +0 -1
  63. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.module.sha256 +0 -1
  64. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.module.sha512 +0 -1
  65. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.pom.md5 +0 -1
  66. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.pom.sha1 +0 -1
  67. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.pom.sha256 +0 -1
  68. package/local-maven-repo/host/exp/exponent/expo.modules.sqlite/58.0.8/expo.modules.sqlite-58.0.8.pom.sha512 +0 -1
@@ -0,0 +1,153 @@
1
+ // Copyright 2026-present 650 Industries. All rights reserved.
2
+
3
+ import Testing
4
+
5
+ @testable import ExpoModulesCore
6
+ @testable import ExpoSQLite
7
+
8
+ @Suite("Statement cleanup")
9
+ struct StatementCleanupTests {
10
+ @Test
11
+ @JavaScriptActor
12
+ func `failed close invalidates cleaned up statements and permits retry`() throws {
13
+ let appContext = AppContext.create()
14
+ let module = SQLiteModule(appContext: appContext)
15
+ var pointer: OpaquePointer?
16
+ var destination: OpaquePointer?
17
+ #expect(exsqlite3_open(":memory:", &pointer) == SQLITE_OK)
18
+ #expect(exsqlite3_open(":memory:", &destination) == SQLITE_OK)
19
+ let database = NativeDatabase(pointer, databasePath: ":memory:", openOptions: OpenDatabaseOptions())
20
+ defer {
21
+ if !database.isClosed { try? module.closeDatabase(database) }
22
+ exsqlite3_close(destination)
23
+ }
24
+
25
+ let statement = NativeStatement()
26
+ try database.prepareSync(statement: statement, source: "SELECT 42 AS value")
27
+
28
+ // A pending backup keeps the source connection busy even after every statement is finalized.
29
+ // This reproduces a failed close after cleanup without depending on a thread race.
30
+ let backup = try #require(exsqlite3_backup_init(destination, "main", pointer, "main"))
31
+ do {
32
+ defer { exsqlite3_backup_finish(backup) }
33
+ #expect(throws: SQLiteErrorException.self) { try module.closeDatabase(database) }
34
+ #expect(!database.isClosed)
35
+ try #require(statement.isFinalized)
36
+ #expect(throws: AccessClosedResourceException.self) { try statement.getColumnNamesSync() }
37
+ #expect(throws: AccessClosedResourceException.self) {
38
+ try statement.finalizeSync(database: database)
39
+ }
40
+
41
+ let fresh = NativeStatement()
42
+ try database.prepareSync(statement: fresh, source: "SELECT 1 AS fresh")
43
+ #expect(try fresh.getColumnNamesSync() == ["fresh"])
44
+ try fresh.finalizeSync(database: database)
45
+ }
46
+ try module.closeDatabase(database)
47
+ #expect(database.isClosed)
48
+ }
49
+
50
+ @Test
51
+ func `preparing during close either gets cleaned up or rejects the closed database`() async throws {
52
+ let appContext = AppContext.create()
53
+ let module = SQLiteModule(appContext: appContext)
54
+ for _ in 0..<50 {
55
+ var pointer: OpaquePointer?
56
+ #expect(exsqlite3_open(":memory:", &pointer) == SQLITE_OK)
57
+ let database = NativeDatabase(pointer, databasePath: ":memory:", openOptions: OpenDatabaseOptions())
58
+ defer {
59
+ if !database.isClosed { try? module.closeDatabase(database) }
60
+ }
61
+ let statement = NativeStatement()
62
+ await withTaskGroup(of: Void.self) { group in
63
+ for index in 0..<2 {
64
+ group.addTask {
65
+ do {
66
+ if index == 0 {
67
+ try await database.prepareAsync(statement: statement, source: "SELECT 1")
68
+ } else {
69
+ try module.closeDatabase(database)
70
+ }
71
+ } catch is AccessClosedResourceException {
72
+ #expect(index == 0)
73
+ } catch {
74
+ Issue.record(error)
75
+ }
76
+ }
77
+ }
78
+ }
79
+ #expect(database.isClosed)
80
+ // A prepared statement must have been invalidated by cleanup.
81
+ #expect(statement.pointer == nil)
82
+ }
83
+ }
84
+
85
+ @Test
86
+ @JavaScriptActor
87
+ func `run, step and getAll reject a statement that a failed close finalized`() throws {
88
+ let appContext = AppContext.create()
89
+ let module = SQLiteModule(appContext: appContext)
90
+ var pointer: OpaquePointer?
91
+ var destination: OpaquePointer?
92
+ #expect(exsqlite3_open(":memory:", &pointer) == SQLITE_OK)
93
+ #expect(exsqlite3_open(":memory:", &destination) == SQLITE_OK)
94
+ let database = NativeDatabase(pointer, databasePath: ":memory:", openOptions: OpenDatabaseOptions())
95
+ defer {
96
+ if !database.isClosed { try? module.closeDatabase(database) }
97
+ exsqlite3_close(destination)
98
+ }
99
+
100
+ let statement = NativeStatement()
101
+ try database.prepareSync(statement: statement, source: "SELECT ? AS value")
102
+
103
+ // The pending backup makes the close fail after it has finalized the statement, as above.
104
+ let backup = try #require(exsqlite3_backup_init(destination, "main", pointer, "main"))
105
+ defer { exsqlite3_backup_finish(backup) }
106
+ #expect(throws: SQLiteErrorException.self) { try module.closeDatabase(database) }
107
+ try #require(statement.isFinalized)
108
+ #expect(statement.pointer == nil)
109
+
110
+ #expect(throws: AccessClosedResourceException.self) {
111
+ try statement.runSync(database: database, bindParams: ["0": .double(1)], bindBlobParams: [:], shouldPassAsArray: true)
112
+ }
113
+ #expect(throws: AccessClosedResourceException.self) { try statement.stepSync(database: database) }
114
+ #expect(throws: AccessClosedResourceException.self) { try statement.getAllSync(database: database) }
115
+ }
116
+
117
+ @Test
118
+ func `getAll during close either reads the rows or rejects the finalized statement`() async throws {
119
+ let appContext = AppContext.create()
120
+ let module = SQLiteModule(appContext: appContext)
121
+ for _ in 0..<50 {
122
+ var pointer: OpaquePointer?
123
+ #expect(exsqlite3_open(":memory:", &pointer) == SQLITE_OK)
124
+ let database = NativeDatabase(pointer, databasePath: ":memory:", openOptions: OpenDatabaseOptions())
125
+ defer {
126
+ if !database.isClosed { try? module.closeDatabase(database) }
127
+ }
128
+ let statement = NativeStatement()
129
+ try await database.prepareAsync(statement: statement, source: "SELECT 1 AS value UNION ALL SELECT 2")
130
+ await withTaskGroup(of: Void.self) { group in
131
+ group.addTask {
132
+ do {
133
+ let rows = try await statement.getAllAsync(database: database)
134
+ #expect(rows == [[.double(1)], [.double(2)]])
135
+ } catch is AccessClosedResourceException {
136
+ // Close finalized the statement first.
137
+ } catch {
138
+ Issue.record(error)
139
+ }
140
+ }
141
+ group.addTask {
142
+ do {
143
+ try module.closeDatabase(database)
144
+ } catch {
145
+ Issue.record(error)
146
+ }
147
+ }
148
+ }
149
+ #expect(database.isClosed)
150
+ #expect(statement.isFinalized)
151
+ }
152
+ }
153
+ }
@@ -0,0 +1 @@
1
+ 67dbdc88a1d7fc60c31092ad150a98a30d93d8ca82bbf869609890965425524d
@@ -0,0 +1 @@
1
+ 47d6b003042ef32b80e19b64fd015ffcfa159bb8f08971459211cd6ab971304da58dee6236c2be5319f606f9062d023530dcaa5c2e530bb17e42ab1465d5b95f
@@ -0,0 +1 @@
1
+ c4c90adee96c2308551babad7ac1fca8e3782ab14771b68933f1151a03436333
@@ -0,0 +1 @@
1
+ 8da2bcca001991403ad15af7ae5fe40b6f02cf613801c3c109fc64b0a25980c07019c47fca22cbfef180ce826225442d307fc3b4416cc29127fda0c3880c666c
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "host.exp.exponent",
5
5
  "module": "expo.modules.sqlite",
6
- "version": "58.0.8",
6
+ "version": "58.0.10",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,13 +24,13 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.sqlite-58.0.8.aar",
28
- "url": "expo.modules.sqlite-58.0.8.aar",
29
- "size": 3960764,
30
- "sha512": "464a9e78fbec5af84d2f2957395aea245a089e145ffa4649074c9193d6b1a2b7b7bc0ee6cbc216a8b0b22bb9dd2f22b0b68ff7e2b9f601fa38d01bdd9e6d4cb0",
31
- "sha256": "4db1f3cfc70e5178eb3fef1520de0b499cdca0c662c0fce6bbdfe806599b92d6",
32
- "sha1": "9459af5726cbb1217327c3756f748c20b1abf2bc",
33
- "md5": "b09d51c468f67c9f68bbe38ffacfcc9b"
27
+ "name": "expo.modules.sqlite-58.0.10.aar",
28
+ "url": "expo.modules.sqlite-58.0.10.aar",
29
+ "size": 3958905,
30
+ "sha512": "8da2bcca001991403ad15af7ae5fe40b6f02cf613801c3c109fc64b0a25980c07019c47fca22cbfef180ce826225442d307fc3b4416cc29127fda0c3880c666c",
31
+ "sha256": "c4c90adee96c2308551babad7ac1fca8e3782ab14771b68933f1151a03436333",
32
+ "sha1": "daaf8670dcbff2b9ab9410878e0a87e85eabad6f",
33
+ "md5": "fad06d1b56a5b3ce76fff8218367c30e"
34
34
  }
35
35
  ]
36
36
  },
@@ -67,13 +67,13 @@
67
67
  ],
68
68
  "files": [
69
69
  {
70
- "name": "expo.modules.sqlite-58.0.8.aar",
71
- "url": "expo.modules.sqlite-58.0.8.aar",
72
- "size": 3960764,
73
- "sha512": "464a9e78fbec5af84d2f2957395aea245a089e145ffa4649074c9193d6b1a2b7b7bc0ee6cbc216a8b0b22bb9dd2f22b0b68ff7e2b9f601fa38d01bdd9e6d4cb0",
74
- "sha256": "4db1f3cfc70e5178eb3fef1520de0b499cdca0c662c0fce6bbdfe806599b92d6",
75
- "sha1": "9459af5726cbb1217327c3756f748c20b1abf2bc",
76
- "md5": "b09d51c468f67c9f68bbe38ffacfcc9b"
70
+ "name": "expo.modules.sqlite-58.0.10.aar",
71
+ "url": "expo.modules.sqlite-58.0.10.aar",
72
+ "size": 3958905,
73
+ "sha512": "8da2bcca001991403ad15af7ae5fe40b6f02cf613801c3c109fc64b0a25980c07019c47fca22cbfef180ce826225442d307fc3b4416cc29127fda0c3880c666c",
74
+ "sha256": "c4c90adee96c2308551babad7ac1fca8e3782ab14771b68933f1151a03436333",
75
+ "sha1": "daaf8670dcbff2b9ab9410878e0a87e85eabad6f",
76
+ "md5": "fad06d1b56a5b3ce76fff8218367c30e"
77
77
  }
78
78
  ]
79
79
  },
@@ -87,13 +87,13 @@
87
87
  },
88
88
  "files": [
89
89
  {
90
- "name": "expo.modules.sqlite-58.0.8-sources.jar",
91
- "url": "expo.modules.sqlite-58.0.8-sources.jar",
92
- "size": 11834,
93
- "sha512": "ffd5436b47527a99c40ad5552caf847eeb4a71a02f1d6adaaaa0a902bd56776239f76c8f0000eced2dd25824aacd7c0cbc5bf4390ff19f641f057fd5b7e64a59",
94
- "sha256": "652bb0d50e54573ff702a6a612c59a12dbb248176cfcb22a37ac7664f8df2ff8",
95
- "sha1": "bfd1fcd029fde1a4a79827d383f8169dc4bfcba1",
96
- "md5": "5d7041a309f5d84f10ac82d07da84fd0"
90
+ "name": "expo.modules.sqlite-58.0.10-sources.jar",
91
+ "url": "expo.modules.sqlite-58.0.10-sources.jar",
92
+ "size": 12434,
93
+ "sha512": "47d6b003042ef32b80e19b64fd015ffcfa159bb8f08971459211cd6ab971304da58dee6236c2be5319f606f9062d023530dcaa5c2e530bb17e42ab1465d5b95f",
94
+ "sha256": "67dbdc88a1d7fc60c31092ad150a98a30d93d8ca82bbf869609890965425524d",
95
+ "sha1": "afa88d36ec945ad0442cc3582e05eb84b07cb9f1",
96
+ "md5": "f9c01cec01c62d6a619fdc69f237e033"
97
97
  }
98
98
  ]
99
99
  }
@@ -0,0 +1 @@
1
+ dfc2cb2d98cfef3bd6b5be8f805dd3444b34c4755dfc2f6ff0e0b653ba123cd3
@@ -0,0 +1 @@
1
+ 73ae3ffc162990e89b804689ba3d929767b2619e57e56d78c277b4c772fd8cd284ff0cda1a1418342b5f21c68fd4538548ab273f38c390a31dbd5a6e8800143f
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>host.exp.exponent</groupId>
11
11
  <artifactId>expo.modules.sqlite</artifactId>
12
- <version>58.0.8</version>
12
+ <version>58.0.10</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.sqlite</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ d46287f54d70926645728cdb6a436ad843ea632fbdf9274a29c6227de2e61532
@@ -0,0 +1 @@
1
+ 584fceef6dc748071a484a1cee817dbc73fc8ce8838fbcb29a1d429a2b8eb36d608d7acd3a17c10f8e35a78ded5064bc01bb839376dc11b59e5c82937a23f4bf
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-sqlite",
3
- "version": "58.0.8",
3
+ "version": "58.0.10",
4
4
  "description": "Provides access to a database using SQLite (https://www.sqlite.org/). The database is persisted across restarts of your app.",
5
5
  "keywords": [
6
6
  "async-storage",
@@ -52,11 +52,11 @@
52
52
  "devDependencies": {
53
53
  "@expo/spawn-async": "^1.8.0",
54
54
  "@testing-library/react-native": "^14.0.1",
55
- "@types/jest": "^29.2.1",
55
+ "@types/jest": "^30.0.0",
56
56
  "@types/node": "^22.14.0",
57
57
  "@types/react": "~19.3.0",
58
- "expo": "58.0.2",
59
- "expo-module-scripts": "56.0.5",
58
+ "expo": "58.0.4",
59
+ "expo-module-scripts": "56.0.7",
60
60
  "react-error-boundary": "^4.0.11",
61
61
  "tar": "^7.5.22"
62
62
  },
@@ -1 +0,0 @@
1
- 652bb0d50e54573ff702a6a612c59a12dbb248176cfcb22a37ac7664f8df2ff8
@@ -1 +0,0 @@
1
- ffd5436b47527a99c40ad5552caf847eeb4a71a02f1d6adaaaa0a902bd56776239f76c8f0000eced2dd25824aacd7c0cbc5bf4390ff19f641f057fd5b7e64a59
@@ -1 +0,0 @@
1
- 9459af5726cbb1217327c3756f748c20b1abf2bc
@@ -1 +0,0 @@
1
- 4db1f3cfc70e5178eb3fef1520de0b499cdca0c662c0fce6bbdfe806599b92d6
@@ -1 +0,0 @@
1
- 464a9e78fbec5af84d2f2957395aea245a089e145ffa4649074c9193d6b1a2b7b7bc0ee6cbc216a8b0b22bb9dd2f22b0b68ff7e2b9f601fa38d01bdd9e6d4cb0
@@ -1 +0,0 @@
1
- c32eafba64e0220924b1674f62965127c367f02c3d79ab3db441046b059aabfd
@@ -1 +0,0 @@
1
- e2626ae43429d605c4a52a32de105169fd99bb5f40ec6b33aa90279499c151a5c0578d6719d38654d82b4ac929ba51028636ccf22d9e0216b99acf2cea73b35f
@@ -1 +0,0 @@
1
- e32cf9c232f9b2db32ac76e50180c943dc3c9324
@@ -1 +0,0 @@
1
- 2b01b02cd5487e84c096442468aec8c8f7d1549059d5e5c30e0afd59831756dc
@@ -1 +0,0 @@
1
- d7c7aa025bc48ef2dbf17a767f8da7afbaba79a07e3763d9757429ec300d1636f62b12c5e5ae95ba1d5482270ba620661afedb1a1d37b2169fb9ff606b94bcc8