@expo/ui 58.0.17 → 58.0.18

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 (39) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/android/build.gradle +2 -2
  3. package/build/universal/TextInput/index.android.js +5 -2
  4. package/build/universal/TextInput/index.android.js.map +1 -1
  5. package/ios/HostView.swift +1 -0
  6. package/ios/Modifiers/HostViewContentMarginsMitigation.swift +98 -0
  7. package/ios/UIBaseView.swift +13 -2
  8. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.17/expo.modules.ui-58.0.17.module → 58.0.18/expo.modules.ui-58.0.18.module} +7 -7
  9. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.module.md5 +1 -0
  10. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.module.sha1 +1 -0
  11. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.module.sha256 +1 -0
  12. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.module.sha512 +1 -0
  13. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.17/expo.modules.ui-58.0.17.pom → 58.0.18/expo.modules.ui-58.0.18.pom} +1 -1
  14. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.pom.md5 +1 -0
  15. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.pom.sha1 +1 -0
  16. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.pom.sha256 +1 -0
  17. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.18/expo.modules.ui-58.0.18.pom.sha512 +1 -0
  18. package/package.json +2 -2
  19. package/prebuilds/output/debug/xcframeworks/ExpoUI.tar.gz +0 -0
  20. package/prebuilds/output/release/xcframeworks/ExpoUI.tar.gz +0 -0
  21. package/src/universal/TextInput/index.android.tsx +8 -1
  22. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.17/expo.modules.ui-58.0.17.module.md5 +0 -1
  23. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.17/expo.modules.ui-58.0.17.module.sha1 +0 -1
  24. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.17/expo.modules.ui-58.0.17.module.sha256 +0 -1
  25. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.17/expo.modules.ui-58.0.17.module.sha512 +0 -1
  26. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.17/expo.modules.ui-58.0.17.pom.md5 +0 -1
  27. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.17/expo.modules.ui-58.0.17.pom.sha1 +0 -1
  28. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.17/expo.modules.ui-58.0.17.pom.sha256 +0 -1
  29. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.17/expo.modules.ui-58.0.17.pom.sha512 +0 -1
  30. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.17/expo.modules.ui-58.0.17-sources.jar → 58.0.18/expo.modules.ui-58.0.18-sources.jar} +0 -0
  31. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.17/expo.modules.ui-58.0.17-sources.jar.md5 → 58.0.18/expo.modules.ui-58.0.18-sources.jar.md5} +0 -0
  32. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.17/expo.modules.ui-58.0.17-sources.jar.sha1 → 58.0.18/expo.modules.ui-58.0.18-sources.jar.sha1} +0 -0
  33. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.17/expo.modules.ui-58.0.17-sources.jar.sha256 → 58.0.18/expo.modules.ui-58.0.18-sources.jar.sha256} +0 -0
  34. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.17/expo.modules.ui-58.0.17-sources.jar.sha512 → 58.0.18/expo.modules.ui-58.0.18-sources.jar.sha512} +0 -0
  35. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.17/expo.modules.ui-58.0.17.aar → 58.0.18/expo.modules.ui-58.0.18.aar} +0 -0
  36. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.17/expo.modules.ui-58.0.17.aar.md5 → 58.0.18/expo.modules.ui-58.0.18.aar.md5} +0 -0
  37. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.17/expo.modules.ui-58.0.17.aar.sha1 → 58.0.18/expo.modules.ui-58.0.18.aar.sha1} +0 -0
  38. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.17/expo.modules.ui-58.0.17.aar.sha256 → 58.0.18/expo.modules.ui-58.0.18.aar.sha256} +0 -0
  39. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.17/expo.modules.ui-58.0.17.aar.sha512 → 58.0.18/expo.modules.ui-58.0.18.aar.sha512} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 58.0.18
4
+
5
+ ### Patch Changes
6
+
7
+ - [iOS] Speed up app launch by naming the SwiftUI views without protocol conformance lookups. ([#51459](https://github.com/expo/expo/pull/51459) by [@Kudo](https://github.com/Kudo))
8
+ - Fix Android universal TextInput placeholders ignoring textStyle. ([#51563](https://github.com/expo/expo/pull/51563) by [@sync](https://github.com/sync))
9
+ - [iOS] Fix `Form` and `List` sections in a `Host` starting 20pt inside the large title beside the iPhone Duo's rail, where iOS drops its content margin. This works around a SwiftUI bug and applies only on an edge where the inset comes from a bar beside the content. ([#51606](https://github.com/expo/expo/pull/51606) by [@huntie](https://github.com/huntie))
10
+
3
11
  ## 58.0.17
4
12
 
5
13
  ### Patch Changes
@@ -12,13 +12,13 @@ apply plugin: 'expo-module-gradle-plugin'
12
12
  apply plugin: 'org.jetbrains.kotlin.plugin.compose'
13
13
 
14
14
  group = 'expo.modules.ui'
15
- version = '58.0.17'
15
+ version = '58.0.18'
16
16
 
17
17
  android {
18
18
  namespace "expo.modules.ui"
19
19
  defaultConfig {
20
20
  versionCode 1
21
- versionName "58.0.17"
21
+ versionName "58.0.18"
22
22
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
23
23
  }
24
24
  buildFeatures {
@@ -144,8 +144,11 @@ export function TextInput({ ref, value, onChangeText, placeholder, autoFocus, ed
144
144
  modifiers: [
145
145
  fillMaxWidth()
146
146
  ],
147
- style: textAlign && textAlign !== 'auto' ? {
148
- textAlign
147
+ style: textStyle || textAlign && textAlign !== 'auto' ? {
148
+ ...textStyle,
149
+ ...textAlign && textAlign !== 'auto' ? {
150
+ textAlign
151
+ } : null
149
152
  } : undefined,
150
153
  children: placeholder
151
154
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["universal/TextInput/index.android.tsx"],"sourcesContent":[null],"names":["BasicTextField","Box","Text","useNativeState","fillMaxWidth","onSizeChanged","semantics","testID","testIDModifier","useImperativeHandle","useRef","transformToModifiers","enterKeyHintToReturnKeyType","inputModeToKeyboardType","resolveEditable","mapReturnKeyType","value","mapKeyboardType","TextInput","ref","onChangeText","placeholder","autoFocus","editable","editableProp","multiline","keyboardType","keyboardTypeProp","autoCapitalize","autoCorrect","returnKeyType","returnKeyTypeProp","onSubmitEditing","onFocus","onBlur","cursorColor","textAlign","readOnly","inputMode","enterKeyHint","defaultValue","numberOfLines","numberOfLinesProp","rows","underlineColorAndroid","placeholderTextColor","textStyle","style","secureTextEntry","autoComplete","onContentSizeChange","maxLength","caretHidden","selectionColor","selectionHandleColor","selection","onSelectionChange","selectTextOnFocus","modifiers","userModifiers","initialFallbackRef","fallback","current","state","innerRef","isFocusedRef","focus","blur","clear","isFocused","setSelection","start","end","Promise","resolve","handleFocusChanged","focused","length","keyboardOptions","undefined","capitalization","autoCorrectEnabled","imeAction","keyboardActions","onDone","onGo","onNext","onSearch","onSend","onPrevious","contentType","singleLine","maxLines","minLines","visualTransformation","textSelectionColors","handleColor","backgroundColor","onValueChange","onFocusChanged","DecorationBox","contentAlignment","Placeholder","color","InnerTextField"],"mappings":"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"}
1
+ {"version":3,"sources":["universal/TextInput/index.android.tsx"],"sourcesContent":[null],"names":["BasicTextField","Box","Text","useNativeState","fillMaxWidth","onSizeChanged","semantics","testID","testIDModifier","useImperativeHandle","useRef","transformToModifiers","enterKeyHintToReturnKeyType","inputModeToKeyboardType","resolveEditable","mapReturnKeyType","value","mapKeyboardType","TextInput","ref","onChangeText","placeholder","autoFocus","editable","editableProp","multiline","keyboardType","keyboardTypeProp","autoCapitalize","autoCorrect","returnKeyType","returnKeyTypeProp","onSubmitEditing","onFocus","onBlur","cursorColor","textAlign","readOnly","inputMode","enterKeyHint","defaultValue","numberOfLines","numberOfLinesProp","rows","underlineColorAndroid","placeholderTextColor","textStyle","style","secureTextEntry","autoComplete","onContentSizeChange","maxLength","caretHidden","selectionColor","selectionHandleColor","selection","onSelectionChange","selectTextOnFocus","modifiers","userModifiers","initialFallbackRef","fallback","current","state","innerRef","isFocusedRef","focus","blur","clear","isFocused","setSelection","start","end","Promise","resolve","handleFocusChanged","focused","length","keyboardOptions","undefined","capitalization","autoCorrectEnabled","imeAction","keyboardActions","onDone","onGo","onNext","onSearch","onSend","onPrevious","contentType","singleLine","maxLines","minLines","visualTransformation","textSelectionColors","handleColor","backgroundColor","onValueChange","onFocusChanged","DecorationBox","contentAlignment","Placeholder","color","InnerTextField"],"mappings":"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"}
@@ -90,6 +90,7 @@ struct HostView: ExpoSwiftUI.View, ExpoSwiftUI.WithHostingView {
90
90
  Children()
91
91
  }
92
92
  .environment(\.expoHostingView, props.hostingViewReference)
93
+ .modifier(HostViewContentMarginsMitigation(layoutDirection: layoutDirection, hostingView: props.hostingView))
93
94
  .fixedSize(horizontal: props.matchContentsHorizontal, vertical: props.matchContentsVertical)
94
95
  .modifier(LayoutDirectionModifier(layoutDirection: layoutDirection))
95
96
  .modifier(ColorSchemeModifier(colorScheme: props.colorScheme?.toColorScheme()))
@@ -0,0 +1,98 @@
1
+ // Copyright 2015-present 650 Industries. All rights reserved.
2
+
3
+ import SwiftUI
4
+ import ExpoModulesCore
5
+
6
+ /// Works around a SwiftUI bug on iPhone Duo: delete this file and its one use in `HostView` once iOS
7
+ /// fixes it.
8
+ ///
9
+ /// When the app is in a split view, positioned left, the tab bar becomes a rail beside the content and
10
+ /// iOS drops its content margin on that edge, so the large title starts on the safe-area edge. A `Form`
11
+ /// or `List` hosted under a UIKit navigation bar, as every `Host` is, keeps its 20pt section margin there
12
+ /// and starts 20pt inside the title:
13
+ ///
14
+ /// ```
15
+ /// RNSNavigationController navigation bar: large title at 84, the safe-area edge
16
+ /// └─ RNSScreen the pushed controller: safe area 84, layout margins 84
17
+ /// └─ UIHostingController the Host, a child controller: 84 + 20pt margin = 104 ❌ BUG
18
+ /// └─ Form sections at 104, 20pt inside the title
19
+ /// ```
20
+ ///
21
+ /// SwiftUI drops that 20pt only when the hosting controller is itself the pushed controller, which a
22
+ /// `Host` can never be.
23
+ ///
24
+ /// This sets the scroll content margin on such an edge to the hosted view's safe-area inset, measured
25
+ /// from the view's edge, so sections start with the title. It applies only where the inset exceeds the
26
+ /// window's own on that edge, so it comes from a bar beside the content, and the screen's layout margin
27
+ /// equals its safe area, so iOS has dropped the margin there.
28
+ ///
29
+ /// See ENG-27830.
30
+ internal struct HostViewContentMarginsMitigation: ViewModifier {
31
+ let layoutDirection: LayoutDirection
32
+ weak var hostingView: UIView?
33
+
34
+ /// The leading and trailing content margins to apply, or `nil` to keep the system's.
35
+ @State private var margins = Margins()
36
+
37
+ private struct Margins: Equatable {
38
+ var leading: CGFloat?
39
+ var trailing: CGFloat?
40
+ }
41
+
42
+ func body(content: Content) -> some View {
43
+ #if os(iOS)
44
+ if #available(iOS 17.0, *) {
45
+ content
46
+ .contentMargins(.leading, margins.leading, for: .scrollContent)
47
+ .contentMargins(.trailing, margins.trailing, for: .scrollContent)
48
+ .onGeometryChange(for: CGRect.self, of: { proxy in proxy.frame(in: .global) }) { _ in
49
+ updateMargins()
50
+ }
51
+ .onGeometryChange(for: EdgeInsets.self, of: { proxy in proxy.safeAreaInsets }) { _ in
52
+ updateMargins()
53
+ }
54
+ } else {
55
+ content
56
+ }
57
+ #else
58
+ content
59
+ #endif
60
+ }
61
+
62
+ #if os(iOS)
63
+ /// UIKit can update the screen's layout margins after SwiftUI reports the geometry change, as
64
+ /// when the window moves into a split view, so the margins are checked again once that settles.
65
+ private func updateMargins() {
66
+ margins = affectedMargins()
67
+ DispatchQueue.main.async {
68
+ margins = affectedMargins()
69
+ }
70
+ }
71
+
72
+ private func affectedMargins() -> Margins {
73
+ guard let hostingView, let window = hostingView.window, let screen = screenView(of: hostingView) else {
74
+ return Margins()
75
+ }
76
+ let host = hostingView.safeAreaInsets
77
+ let left: CGFloat? = host.left > window.safeAreaInsets.left
78
+ && abs(screen.layoutMargins.left - screen.safeAreaInsets.left) < 0.5 ? host.left : nil
79
+ let right: CGFloat? = host.right > window.safeAreaInsets.right
80
+ && abs(screen.layoutMargins.right - screen.safeAreaInsets.right) < 0.5 ? host.right : nil
81
+ return layoutDirection == .rightToLeft
82
+ ? Margins(leading: right, trailing: left)
83
+ : Margins(leading: left, trailing: right)
84
+ }
85
+
86
+ /// The view of the nearest view controller above the `Host`, which is the screen it is hosted in.
87
+ private func screenView(of view: UIView) -> UIView? {
88
+ var responder = view.next
89
+ while let current = responder {
90
+ if let controller = current as? UIViewController {
91
+ return controller.view
92
+ }
93
+ responder = current.next
94
+ }
95
+ return nil
96
+ }
97
+ #endif
98
+ }
@@ -73,7 +73,7 @@ public func ExpoUIView<Content: ExpoSwiftUI.View>(
73
73
  _ contentType: Content.Type
74
74
  ) -> ExpoSwiftUI.ViewDefinition<Content.Props, UIBaseView<Content.Props, Content>> where Content.Props: UIBaseViewProps {
75
75
  let wrappedType = UIBaseView<Content.Props, Content>.self
76
- let contentName = String(describing: contentType)
76
+ let contentName = unqualifiedTypeName(contentType)
77
77
 
78
78
  return View(wrappedType) {
79
79
  ViewName(contentName)
@@ -89,7 +89,18 @@ public func ExpoUIView<Content: ExpoSwiftUI.View>(
89
89
  @ExpoSwiftUI.ViewDefinitionBuilder<Content> _ elements: @escaping () -> [AnyViewDefinitionElement]
90
90
  ) -> ExpoSwiftUI.ViewDefinition<Content.Props, UIBaseView<Content.Props, Content>> where Content.Props: UIBaseViewProps {
91
91
  let wrappedType = UIBaseView<Content.Props, Content>.self
92
- let contentName = String(describing: contentType)
92
+ let contentName = unqualifiedTypeName(contentType)
93
93
 
94
94
  return ExpoSwiftUI.ViewDefinition(wrappedType, name: contentName, elements: elements())
95
95
  }
96
+
97
+ /**
98
+ The name `String(describing: type)` gives for a metatype, without its three protocol conformance probes and the `Mirror`.
99
+ It takes an opaque `Any.Type` and is never inlined on purpose.
100
+ With a statically known metatype the optimizer folds `_typeName` into a constant that keeps the file discriminator
101
+ of a `private` type, e.g. `(Foo in _ABC123…)`, where `String(describing:)` yields `Foo`.
102
+ */
103
+ @inline(never)
104
+ private func unqualifiedTypeName(_ type: Any.Type) -> String {
105
+ return _typeName(type, qualified: false)
106
+ }
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "expo.modules.ui",
5
5
  "module": "expo.modules.ui",
6
- "version": "58.0.17",
6
+ "version": "58.0.18",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,8 +24,8 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.ui-58.0.17.aar",
28
- "url": "expo.modules.ui-58.0.17.aar",
27
+ "name": "expo.modules.ui-58.0.18.aar",
28
+ "url": "expo.modules.ui-58.0.18.aar",
29
29
  "size": 1859361,
30
30
  "sha512": "ba561fa50c9fde30184d2c36051e644fd87db59555b7b38f8e2e5b7096b03bf0d2aec3e53fff1831d2705d85b174ec1a7fc2e9cadc69c41237aac262bbea9365",
31
31
  "sha256": "6cbb10f1e4cd5618c6997d87c2021e97c7bab1b8fc4ecc7be48f563e9c0e284a",
@@ -141,8 +141,8 @@
141
141
  ],
142
142
  "files": [
143
143
  {
144
- "name": "expo.modules.ui-58.0.17.aar",
145
- "url": "expo.modules.ui-58.0.17.aar",
144
+ "name": "expo.modules.ui-58.0.18.aar",
145
+ "url": "expo.modules.ui-58.0.18.aar",
146
146
  "size": 1859361,
147
147
  "sha512": "ba561fa50c9fde30184d2c36051e644fd87db59555b7b38f8e2e5b7096b03bf0d2aec3e53fff1831d2705d85b174ec1a7fc2e9cadc69c41237aac262bbea9365",
148
148
  "sha256": "6cbb10f1e4cd5618c6997d87c2021e97c7bab1b8fc4ecc7be48f563e9c0e284a",
@@ -161,8 +161,8 @@
161
161
  },
162
162
  "files": [
163
163
  {
164
- "name": "expo.modules.ui-58.0.17-sources.jar",
165
- "url": "expo.modules.ui-58.0.17-sources.jar",
164
+ "name": "expo.modules.ui-58.0.18-sources.jar",
165
+ "url": "expo.modules.ui-58.0.18-sources.jar",
166
166
  "size": 113113,
167
167
  "sha512": "10ed672c04082cf5f06e6ca6dca0f28229f11f3d503d46e5b61dbc7d3ad50bfdc1399838dd38dc5b8c1643ec375c4bf1672c95606ce28f7ed36384f66b829b68",
168
168
  "sha256": "f9a24faad34f9f66bebcdde7d05a6cf72a8b4b9030819b80049de5084a694ef0",
@@ -0,0 +1 @@
1
+ 0280a28f44e2219abbc8ce054003200350f1dcc7
@@ -0,0 +1 @@
1
+ ea72887593516448266e9bc6baf03968872b368955a35eb088ea2ff6704a1554
@@ -0,0 +1 @@
1
+ a6322f157112637387e22d8a67960dd950773126129ee71be541575898307ddec6c5f16bb581ed0706a2f3694b40ba69bbec78060759038aaddca1f93084bf8b
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>expo.modules.ui</groupId>
11
11
  <artifactId>expo.modules.ui</artifactId>
12
- <version>58.0.17</version>
12
+ <version>58.0.18</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.ui</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ d556d91a38a29be6a7ba659601e3a6b6aa33de81
@@ -0,0 +1 @@
1
+ 41cc6e28b0897992415819e13a13dc98d98755c22d717cfb456dfb169d6f620f
@@ -0,0 +1 @@
1
+ 5c5379544047a4326c296a599c1120e912f99ff4a427def0cfb7455ee1e9b4c99c51d36294ea4c023019a7ef565e85ffc1a3db6b1c812ae5a071d163d51ce385
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/ui",
3
- "version": "58.0.17",
3
+ "version": "58.0.18",
4
4
  "description": "A collection of UI components",
5
5
  "keywords": [
6
6
  "Jetpack Compose",
@@ -141,7 +141,7 @@
141
141
  },
142
142
  "devDependencies": {
143
143
  "@babel/core": "^7.26.0",
144
- "@expo/internal-scripts": "58.0.2",
144
+ "@expo/internal-scripts": "58.0.3",
145
145
  "@playwright/test": "^1.59.0",
146
146
  "@testing-library/react": "^16.3.0",
147
147
  "@testing-library/react-native": "^14.0.1",
@@ -206,7 +206,14 @@ export function TextInput({
206
206
  <Text
207
207
  color={placeholderTextColor as string | undefined}
208
208
  modifiers={[fillMaxWidth()]}
209
- style={textAlign && textAlign !== 'auto' ? { textAlign } : undefined}>
209
+ style={
210
+ textStyle || (textAlign && textAlign !== 'auto')
211
+ ? {
212
+ ...textStyle,
213
+ ...(textAlign && textAlign !== 'auto' ? { textAlign } : null),
214
+ }
215
+ : undefined
216
+ }>
210
217
  {placeholder}
211
218
  </Text>
212
219
  </BasicTextField.Placeholder>
@@ -1 +0,0 @@
1
- 43aed8719871e806fa4b5a0f69fe75da7a7424f8
@@ -1 +0,0 @@
1
- d9eeecec40ed29a204b843d0629816e5187519c1ba1af7d603696511f8a62100
@@ -1 +0,0 @@
1
- 31f0b1ae5e0569d53a08e7814623d7680272d04bd24f24d3f769140c046097ce3d3a970d19293a9185f8406611ae6a98a742c6cde3cfa8c51a3236e4a23fbdc1
@@ -1 +0,0 @@
1
- 94dac94419f825b433dd7a57ba548ec8395a276f
@@ -1 +0,0 @@
1
- 84381286ae177b29ab5287316eeb3f405532f1608c01d7535afdb85f8c0e9149
@@ -1 +0,0 @@
1
- 9d1c51764187080d9adff9998f2fffd9702db44c55b4a507042747e0b6d3bab6e698966c5584d19c2b90c2b065e03148504c60dcc3a38f396b7218e6434f4b00