From 5733ea3a45657e0c2756df20fd157c3b68621fa3 Mon Sep 17 00:00:00 2001 From: Tim Froehlich Date: Tue, 12 Nov 2024 11:26:05 -0600 Subject: [PATCH] Refactor: Move meter data to definition package Moves the meter data types from the legacy_definition package to the definition package. This change simplifies the codebase by removing the redundant legacy_definition package. Additionally, this change refactors the DesignCompose code to use the new meter data types. # Conflicts: # crates/figma_import/tests/layout-unit-tests.dcf # designcompose/src/main/assets/figma/DesignSwitcherDoc_Ljph4e3sC0lHcynfXpoh9f.dcf # integration-tests/validation/src/main/assets/figma/AlignmentTestDoc_JIjE9oKQbq8ipi66ab5UaK.dcf # integration-tests/validation/src/main/assets/figma/BattleshipDoc_RfGl9SWnBEvdg8T1Ex6ZAR.dcf # integration-tests/validation/src/main/assets/figma/BlendModeTestDoc_ZqX5i5g6inv9tANIwMMXUV.dcf # integration-tests/validation/src/main/assets/figma/ComponentReplaceDoc_bQVVy2GSZJ8veYaJUrG6Ni.dcf # integration-tests/validation/src/main/assets/figma/ComponentReplaceRelayoutDoc_qIh0IOQTCtgeAWZFF5gYSk.dcf # integration-tests/validation/src/main/assets/figma/DialsGaugesTestDoc_lZj6E9GtIQQE4HNLpzgETw.dcf # integration-tests/validation/src/main/assets/figma/FancyFillTestDoc_xQ9cunHt8VUm6xqJJ2Pjb2.dcf # integration-tests/validation/src/main/assets/figma/GridLayoutDoc_MBNjjSbzzKeN7nBjVoewsl.dcf # integration-tests/validation/src/main/assets/figma/GridLayoutTestDoc_JOSOEvsrjvMqanyQa5OpNR.dcf # integration-tests/validation/src/main/assets/figma/GridWidgetTestDoc_OBhNItd9i9J2LwVYuLxEIx.dcf # integration-tests/validation/src/main/assets/figma/HelloVersionDoc_v62Vwlxa4Bb6nopJiAxQAQ_5668177823.dcf # integration-tests/validation/src/main/assets/figma/ImageUpdateTestDoc_oQw7kiy94fvdVouCYBC9T0.dcf # integration-tests/validation/src/main/assets/figma/InteractionTestDoc_8Zg9viyjYTnyN29pbkR1CE.dcf # integration-tests/validation/src/main/assets/figma/LayoutReplacementTestDoc_dwk2GF7RiNvlbbAKPjqldx.dcf # integration-tests/validation/src/main/assets/figma/LayoutTestsDoc_Gv63fYTzpeH2ZtxP4go31E.dcf # integration-tests/validation/src/main/assets/figma/ListWidgetTestDoc_9ev0MBNHFrgTqJOrAGcEpV.dcf # integration-tests/validation/src/main/assets/figma/MaskTestDoc_mEmdUVEIjvBBbV0kELPy37.dcf # integration-tests/validation/src/main/assets/figma/ModuleExampleDoc_hPEGkrF0LUqNYEZObXqjXZ.dcf # integration-tests/validation/src/main/assets/figma/OpenLinkTestDoc_r7m4tqyKv6y9DWcg7QBEDf.dcf # integration-tests/validation/src/main/assets/figma/RecursiveCustomizationsDoc_o0GWzcqdOWEgzj4kIeIlAu.dcf # integration-tests/validation/src/main/assets/figma/ShadowsTestDoc_OqK58Y46IqP4wIgKCWys48.dcf # integration-tests/validation/src/main/assets/figma/SmartAnimateTestDoc_RW3lFurXCoVDeqY2Y7bf4v.dcf # integration-tests/validation/src/main/assets/figma/TelltaleTestDoc_TZgHrKWx8wvQM7UPTyEpmz.dcf # integration-tests/validation/src/main/assets/figma/VariableBorderTestDoc_MWnVAfW3FupV4VMLNR1m67.dcf # integration-tests/validation/src/main/assets/figma/VariablesTestDoc_HhGxvL4aHhP8ALsLNz56TP.dcf # integration-tests/validation/src/main/assets/figma/VariantAnimationTestDoc_pghyUUhlzJNoxxSK86ngiw.dcf # integration-tests/validation/src/main/assets/figma/VariantAnimationTimelineTestDoc_vJRf4zxY4QX4zzSSUd1nJ5.dcf # integration-tests/validation/src/main/assets/figma/VariantAsteriskTestDoc_gQeYHGCSaBE4zYSFpBrhre.dcf # integration-tests/validation/src/main/assets/figma/VariantInteractionsTestDoc_WcsgoLR4aDRSkZHY29Qdhq.dcf # integration-tests/validation/src/main/assets/figma/VariantPropertiesTestDoc_4P7zDdrQxj7FZsKJoIQcx1.dcf # integration-tests/validation/src/main/assets/figma/VectorRenderingTestDoc_Z3ucY0wMAbIwZIa6mLEWIK.dcf # reference-apps/tutorial/app/src/main/assets/figma/TutorialDoc_3z4xExq0INrL9vxPhj9tl7.dcf --- crates/dc_bundle/src/legacy_definition.rs | 1 - .../dc_bundle/src/legacy_definition/plugin.rs | 17 ---- .../legacy_definition/plugin/meter_data.rs | 90 ------------------ .../src/legacy_definition/view/node_style.rs | 2 +- crates/figma_import/src/reflection.rs | 14 +-- crates/figma_import/src/toolkit_style.rs | 8 +- .../figma_import/tests/layout-unit-tests.dcf | Bin 27687 -> 27687 bytes ...signSwitcherDoc_Ljph4e3sC0lHcynfXpoh9f.dcf | Bin 400548 -> 400548 bytes .../com/android/designcompose/FrameRender.kt | 44 ++++----- ...lignmentTestDoc_JIjE9oKQbq8ipi66ab5UaK.dcf | Bin 445672 -> 445672 bytes .../BattleshipDoc_RfGl9SWnBEvdg8T1Ex6ZAR.dcf | Bin 1023147 -> 1023147 bytes ...lendModeTestDoc_ZqX5i5g6inv9tANIwMMXUV.dcf | Bin 68066 -> 68066 bytes ...onentReplaceDoc_bQVVy2GSZJ8veYaJUrG6Ni.dcf | Bin 19744 -> 19744 bytes ...laceRelayoutDoc_qIh0IOQTCtgeAWZFF5gYSk.dcf | Bin 3823 -> 3823 bytes ...tTapCallbackDoc_1jeKYynjk1nqYblZ66QDDK.dcf | Bin 8802 -> 8802 bytes ...AxisFillTestDoc_GPr1cx4n3zBPwLhqlSL1ba.dcf | Bin 10103 -> 10103 bytes ...lsGaugesTestDoc_lZj6E9GtIQQE4HNLpzgETw.dcf | Bin 252455 -> 251403 bytes ...ancyFillTestDoc_xQ9cunHt8VUm6xqJJ2Pjb2.dcf | Bin 80809 -> 80809 bytes .../GridLayoutDoc_MBNjjSbzzKeN7nBjVoewsl.dcf | Bin 33238 -> 33238 bytes ...idLayoutTestDoc_JOSOEvsrjvMqanyQa5OpNR.dcf | Bin 167308 -> 167308 bytes ...idWidgetTestDoc_OBhNItd9i9J2LwVYuLxEIx.dcf | Bin 332463 -> 332463 bytes ...nDoc_v62Vwlxa4Bb6nopJiAxQAQ_5668177823.dcf | Bin 29874 -> 29874 bytes ...geUpdateTestDoc_oQw7kiy94fvdVouCYBC9T0.dcf | Bin 24044 -> 24044 bytes ...eractionTestDoc_8Zg9viyjYTnyN29pbkR1CE.dcf | Bin 315462 -> 315462 bytes ...mSpacingTestDoc_YXrHBp6C6OaW5ShcCYeGJc.dcf | Bin 37134 -> 37134 bytes ...lacementTestDoc_dwk2GF7RiNvlbbAKPjqldx.dcf | Bin 14313 -> 14313 bytes .../LayoutTestsDoc_Gv63fYTzpeH2ZtxP4go31E.dcf | Bin 192960 -> 192922 bytes ...stWidgetTestDoc_9ev0MBNHFrgTqJOrAGcEpV.dcf | Bin 260090 -> 260090 bytes .../MaskTestDoc_mEmdUVEIjvBBbV0kELPy37.dcf | Bin 34618 -> 34596 bytes ...oduleExampleDoc_hPEGkrF0LUqNYEZObXqjXZ.dcf | Bin 34638 -> 34638 bytes ...OpenLinkTestDoc_r7m4tqyKv6y9DWcg7QBEDf.dcf | Bin 25994 -> 25994 bytes ...stomizationsDoc_o0GWzcqdOWEgzj4kIeIlAu.dcf | Bin 6992 -> 6992 bytes .../ShadowsTestDoc_OqK58Y46IqP4wIgKCWys48.dcf | Bin 202364 -> 202364 bytes ...tAnimateTestDoc_RW3lFurXCoVDeqY2Y7bf4v.dcf | Bin 1896145 -> 1896145 bytes ...stomizationsDoc_POWyniB6moGRmhZTJyejwa.dcf | Bin 21981 -> 21861 bytes ...TelltaleTestDoc_TZgHrKWx8wvQM7UPTyEpmz.dcf | Bin 52404 -> 52404 bytes ...extElideTestDoc_oQ7nK49Ya5PJ3GpjI5iy8d.dcf | Bin 6922 -> 6922 bytes ...leBorderTestDoc_MWnVAfW3FupV4VMLNR1m67.dcf | Bin 28086 -> 28086 bytes ...ariablesTestDoc_HhGxvL4aHhP8ALsLNz56TP.dcf | Bin 58311 -> 58311 bytes ...nimationTestDoc_pghyUUhlzJNoxxSK86ngiw.dcf | Bin 1348642 -> 1348642 bytes ...TimelineTestDoc_vJRf4zxY4QX4zzSSUd1nJ5.dcf | Bin 1732689 -> 1732689 bytes ...AsteriskTestDoc_gQeYHGCSaBE4zYSFpBrhre.dcf | Bin 27303 -> 27303 bytes ...ractionsTestDoc_WcsgoLR4aDRSkZHY29Qdhq.dcf | Bin 54835 -> 54835 bytes ...opertiesTestDoc_4P7zDdrQxj7FZsKJoIQcx1.dcf | Bin 133566 -> 133566 bytes ...enderingTestDoc_Z3ucY0wMAbIwZIa6mLEWIK.dcf | Bin 92419 -> 92419 bytes proto/definition/plugin/meter_data.proto | 8 ++ .../TutorialDoc_3z4xExq0INrL9vxPhj9tl7.dcf | Bin 55727 -> 55727 bytes 47 files changed, 41 insertions(+), 143 deletions(-) delete mode 100644 crates/dc_bundle/src/legacy_definition/plugin.rs delete mode 100644 crates/dc_bundle/src/legacy_definition/plugin/meter_data.rs diff --git a/crates/dc_bundle/src/legacy_definition.rs b/crates/dc_bundle/src/legacy_definition.rs index d7832432e..4d673fcc1 100644 --- a/crates/dc_bundle/src/legacy_definition.rs +++ b/crates/dc_bundle/src/legacy_definition.rs @@ -28,7 +28,6 @@ use crate::definition::element::VariableMap; use crate::legacy_definition::element::node::NodeQuery; pub mod element; -pub mod plugin; pub mod view; /// EncodedImageMap contains a mapping from ImageKey to network bytes. It can create an diff --git a/crates/dc_bundle/src/legacy_definition/plugin.rs b/crates/dc_bundle/src/legacy_definition/plugin.rs deleted file mode 100644 index 696641381..000000000 --- a/crates/dc_bundle/src/legacy_definition/plugin.rs +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2024 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -pub mod meter_data; diff --git a/crates/dc_bundle/src/legacy_definition/plugin/meter_data.rs b/crates/dc_bundle/src/legacy_definition/plugin/meter_data.rs deleted file mode 100644 index 5e9cb2310..000000000 --- a/crates/dc_bundle/src/legacy_definition/plugin/meter_data.rs +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2024 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -#[serde(rename_all = "camelCase")] -pub struct RotationMeterData { - pub enabled: bool, - pub start: f32, - pub end: f32, - pub discrete: bool, - pub discrete_value: f32, -} - -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -#[serde(rename_all = "camelCase")] -pub struct ArcMeterData { - pub enabled: bool, - pub start: f32, - pub end: f32, - pub discrete: bool, - pub discrete_value: f32, - pub corner_radius: f32, -} - -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -#[serde(rename_all = "camelCase")] -pub struct ProgressBarMeterData { - pub enabled: bool, - pub discrete: bool, - pub discrete_value: f32, - #[serde(default)] - pub vertical: bool, - #[serde(default)] - pub end_x: f32, - #[serde(default)] - pub end_y: f32, -} - -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -#[serde(rename_all = "camelCase")] -pub struct ProgressMarkerMeterData { - pub enabled: bool, - pub discrete: bool, - pub discrete_value: f32, - #[serde(default)] - pub vertical: bool, - #[serde(default)] - pub start_x: f32, - #[serde(default)] - pub end_x: f32, - #[serde(default)] - pub start_y: f32, - #[serde(default)] - pub end_y: f32, -} - -// Schema for progress vector data that we write to serialized data -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -#[serde(rename_all = "camelCase")] -pub struct ProgressVectorMeterData { - pub enabled: bool, - pub discrete: bool, - pub discrete_value: f32, -} - -// Schema for dials & gauges data that we write to serialized data -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -#[serde(rename_all = "camelCase")] -pub enum MeterData { - ArcData(ArcMeterData), - RotationData(RotationMeterData), - ProgressBarData(ProgressBarMeterData), - ProgressMarkerData(ProgressMarkerMeterData), - ProgressVectorData(ProgressVectorMeterData), -} diff --git a/crates/dc_bundle/src/legacy_definition/view/node_style.rs b/crates/dc_bundle/src/legacy_definition/view/node_style.rs index 2c2bc33b8..746cc7636 100644 --- a/crates/dc_bundle/src/legacy_definition/view/node_style.rs +++ b/crates/dc_bundle/src/legacy_definition/view/node_style.rs @@ -27,7 +27,7 @@ use crate::definition::modifier::{ BlendMode, FilterOp, TextAlign, TextAlignVertical, TextOverflow, }; use crate::definition::modifier::{BoxShadow, LayoutTransform, TextShadow}; -use crate::legacy_definition::plugin::meter_data::MeterData; +use crate::definition::plugin::meter_data::MeterData; use serde::{Deserialize, Serialize}; #[derive(Copy, Clone, PartialEq, Debug, Serialize, Deserialize)] diff --git a/crates/figma_import/src/reflection.rs b/crates/figma_import/src/reflection.rs index 887b6f517..914be5179 100644 --- a/crates/figma_import/src/reflection.rs +++ b/crates/figma_import/src/reflection.rs @@ -95,23 +95,19 @@ pub fn registry() -> serde_reflection::Result { .trace_type::(&samples) .expect("couldn't trace GridLayoutType"); tracer - .trace_type::(&samples) + .trace_type::(&samples) .expect("couldn't trace RotationMeterData"); tracer - .trace_type::(&samples) + .trace_type::(&samples) .expect("couldn't trace ArcMeterData"); tracer - .trace_type::( - &samples, - ) + .trace_type::(&samples) .expect("couldn't trace ProgressBarMeterData"); tracer - .trace_type::( - &samples, - ) + .trace_type::(&samples) .expect("couldn't trace ProgressVectorMeterData"); tracer - .trace_type::(&samples) + .trace_type::(&samples) .expect("couldn't trace MeterData"); tracer .trace_type::(&samples) diff --git a/crates/figma_import/src/toolkit_style.rs b/crates/figma_import/src/toolkit_style.rs index c9ac4d3ca..7185a3440 100644 --- a/crates/figma_import/src/toolkit_style.rs +++ b/crates/figma_import/src/toolkit_style.rs @@ -16,9 +16,11 @@ //! uses. use crate::figma_schema; -use dc_bundle::legacy_definition::plugin::meter_data::{ - ArcMeterData, MeterData, ProgressBarMeterData, ProgressMarkerMeterData, - ProgressVectorMeterData, RotationMeterData, + +use dc_bundle::definition::plugin::meter_data::MeterData; +use dc_bundle::definition::plugin::{ + ArcMeterData, ProgressBarMeterData, ProgressMarkerMeterData, ProgressVectorMeterData, + RotationMeterData, }; use serde::{Deserialize, Serialize}; diff --git a/crates/figma_import/tests/layout-unit-tests.dcf b/crates/figma_import/tests/layout-unit-tests.dcf index 932d88998d91e6a464e5859a1ef86e9cce09778e..7e3de40b6e17368c3face233b9e1c0120627574e 100644 GIT binary patch delta 333 zcmWO0&nv@m9LI65_xEdl&aW}QeYcrkX%t$amPmf3Nn1-uN=g*s;OBvIaI-$Glmpqp z1;tC@;-no=jf!17!3$g`7^ezBaI6ayE@XDK6NN+zRw9ORo^p^ z!O8wbK_=h)Cjx`pgQo4^bilOzJ_An9`n~}dgKcM`!VN_z;c>$wP|CHY4M7?Iy!)b} z4jU49>39Xeu&ZAne0R5N(CDfTYS6h$$M;SHA;t8MBzvd2CGa2<#kB z8xiF5#=5GbfGs%@9ff?d-wLuADf|Mmxl+6($T=^Iin4SVC}(9y9B|XxxhbgNPS+(+ M$?l#SQK!?(|NRDLCIA2c delta 336 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 diff --git a/designcompose/src/main/java/com/android/designcompose/FrameRender.kt b/designcompose/src/main/java/com/android/designcompose/FrameRender.kt index c90262b91..4cf8f1307 100644 --- a/designcompose/src/main/java/com/android/designcompose/FrameRender.kt +++ b/designcompose/src/main/java/com/android/designcompose/FrameRender.kt @@ -123,7 +123,7 @@ private fun calculateRotationData( ): androidx.compose.ui.graphics.Matrix { val rotation = (rotationData.start + meterValue / 100f * (rotationData.end - rotationData.start)) - .coerceDiscrete(rotationData.discrete, rotationData.discreteValue) + .coerceDiscrete(rotationData.discrete, rotationData.discrete_value) val nodeWidth = style.fixedWidth(density) val nodeHeight = style.fixedHeight(density) @@ -170,7 +170,7 @@ private fun calculateProgressBarData( ): Pair { // Progress bar discrete values are done by percentage val discretizedMeterValue = - meterValue.coerceDiscrete(progressBarData.discrete, progressBarData.discreteValue) + meterValue.coerceDiscrete(progressBarData.discrete, progressBarData.discrete_value) // Resize the progress bar by interpolating between 0 and endX or endY depending on whether it // is a horizontal or vertical progress bar @@ -178,7 +178,7 @@ private fun calculateProgressBarData( val width = style.layout_style.width.getDim().pointsAsDp(density).value // Calculate bar extents from the parent layout if it exists, or from the progress bar data // if not. - var endY = progressBarData.endY + var endY = progressBarData.end_y parent?.let { p -> val parentSize = p.computedLayout?.let { Size(it.width, it.height) } parentSize?.let { pSize -> @@ -196,7 +196,7 @@ private fun calculateProgressBarData( val height = style.layout_style.height.getDim().pointsAsDp(density).value // Calculate bar extents from the parent layout if it exists, or from the progress bar data // if not. - var endX = progressBarData.endX + var endX = progressBarData.end_x parent?.let { p -> val parentSize = p.computedLayout?.let { Size(it.width, it.height) } parentSize?.let { pSize -> @@ -219,7 +219,7 @@ private fun calculateProgressMarkerData( ): androidx.compose.ui.graphics.Matrix { // Progress marker discrete values are done by percentage val discretizedMeterValue = - meterValue.coerceDiscrete(markerData.discrete, markerData.discreteValue) + meterValue.coerceDiscrete(markerData.discrete, markerData.discrete_value) // Calculate node and parent render sizes if available. These will only be available for // squoosh, and will be used to calculate the progress sizes and extents @@ -239,14 +239,14 @@ private fun calculateProgressMarkerData( val overrideTransform = style.getTransform(density) if (markerData.vertical) { var startY = - parentSize?.let { it.height - (mySize?.height ?: 0f) / 2f } ?: markerData.startY - val endY = mySize?.let { -it.height / 2f } ?: markerData.endY + parentSize?.let { it.height - (mySize?.height ?: 0f) / 2f } ?: markerData.start_y + val endY = mySize?.let { -it.height / 2f } ?: markerData.end_y val moveY = lerp(startY, endY, discretizedMeterValue, density) val topOffset = style.layout_style.margin.top.pointsAsDp(density).value overrideTransform.setYTranslation(moveY - topOffset) } else { - var startX = mySize?.let { -it.width / 2f } ?: markerData.startX - var endX = parentSize?.let { it.width - (mySize?.width ?: 0f) / 2f } ?: markerData.endX + var startX = mySize?.let { -it.width / 2f } ?: markerData.start_x + var endX = parentSize?.let { it.width - (mySize?.width ?: 0f) / 2f } ?: markerData.end_x val moveX = lerp(startX, endX, discretizedMeterValue, density) val leftOffset = style.layout_style.margin.start.pointsAsDp(density).value overrideTransform.setXTranslation(moveX - leftOffset) @@ -266,7 +266,7 @@ private fun calculateArcData( val arcAngleMeter = (arcMeterValue / 100f * (arcData.end - arcData.start)).coerceDiscrete( arcData.discrete, - arcData.discreteValue, + arcData.discrete_value, ) if (shape.shape.get() is Shape.Arc) { val arc = (shape.shape.get() as Shape.Arc).value @@ -280,7 +280,7 @@ private fun calculateArcData( arcData.start, arcAngleMeter, arc.inner_radius, - arcData.cornerRadius, + arcData.corner_radius, arc.is_mask, ) ) @@ -302,7 +302,7 @@ private fun calculateProgressVectorData( density: Float, ) { val strokeWidth = style.node_style.stroke.stroke_weight.toUniform() * density - val discretizedMeterValue = meterValue.coerceDiscrete(data.discrete, data.discreteValue) + val discretizedMeterValue = meterValue.coerceDiscrete(data.discrete, data.discrete_value) // Get full length of path var pathLen = 0f @@ -357,14 +357,14 @@ internal fun ContentDrawScope.render( // Check if there is meter data for a dial/gauge/progress bar if (style.node_style.meter_data.isPresent) { when (val meterData = style.node_style.meter_data.get()) { - is MeterData.rotationData -> { + is MeterData.RotationData -> { val rotationData = meterData.value if (rotationData.enabled) { overrideTransform = calculateRotationData(rotationData, meterValue, style, density) } } - is MeterData.progressBarData -> { + is MeterData.ProgressBarData -> { val progressBarData = meterData.value if (progressBarData.enabled) { val progressBarSizeTransform = @@ -379,7 +379,7 @@ internal fun ContentDrawScope.render( overrideTransform = progressBarSizeTransform.second } } - is MeterData.progressMarkerData -> { + is MeterData.ProgressMarkerData -> { val progressMarkerData = meterData.value if (progressMarkerData.enabled) { overrideTransform = @@ -393,14 +393,14 @@ internal fun ContentDrawScope.render( ) } } - is MeterData.arcData -> { + is MeterData.ArcData -> { val arcData = meterData.value if (arcData.enabled) { shape = calculateArcData(arcData, meterValue, shape) customArcAngle = true } } - is MeterData.progressVectorData -> { + is MeterData.ProgressVectorData -> { // If this is a vector path progress bar, save it here so we can convert it to a // set of path instructions and render it instead of the normal stroke. if (meterData.value.enabled) progressVectorMeterData = meterData.value @@ -633,14 +633,14 @@ internal fun ContentDrawScope.squooshShapeRender( // Check if there is meter data for a dial/gauge/progress bar if (style.node_style.meter_data.isPresent) { when (val meterData = style.node_style.meter_data.get()) { - is MeterData.rotationData -> { + is MeterData.RotationData -> { val rotationData = meterData.value if (rotationData.enabled) { overrideTransform = calculateRotationData(rotationData, meterValue, style, density) } } - is MeterData.progressBarData -> { + is MeterData.ProgressBarData -> { val progressBarData = meterData.value if (progressBarData.enabled) { val progressBarSizeTransform = @@ -655,7 +655,7 @@ internal fun ContentDrawScope.squooshShapeRender( overrideTransform = progressBarSizeTransform.second } } - is MeterData.progressMarkerData -> { + is MeterData.ProgressMarkerData -> { val progressMarkerData = meterData.value if (progressMarkerData.enabled) { overrideTransform = @@ -669,14 +669,14 @@ internal fun ContentDrawScope.squooshShapeRender( ) } } - is MeterData.arcData -> { + is MeterData.ArcData -> { val arcData = meterData.value if (arcData.enabled) { shape = calculateArcData(arcData, meterValue, shape) customArcAngle = true } } - is MeterData.progressVectorData -> { + is MeterData.ProgressVectorData -> { // If this is a vector path progress bar, save it here so we can convert it to a // set of path instructions and render it instead of the normal stroke. if (meterData.value.enabled) progressVectorMeterData = meterData.value diff --git a/integration-tests/validation/src/main/assets/figma/AlignmentTestDoc_JIjE9oKQbq8ipi66ab5UaK.dcf b/integration-tests/validation/src/main/assets/figma/AlignmentTestDoc_JIjE9oKQbq8ipi66ab5UaK.dcf index d7e117e2e0e823cdc9ea6c50fe1c5518dddb439d..1902d7a20c38babfe7ab274c08ad2a38ec071afc 100644 GIT binary patch delta 5868 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 KvZOlCTKazy06E$K delta 9231 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 diff --git a/integration-tests/validation/src/main/assets/figma/BlendModeTestDoc_ZqX5i5g6inv9tANIwMMXUV.dcf b/integration-tests/validation/src/main/assets/figma/BlendModeTestDoc_ZqX5i5g6inv9tANIwMMXUV.dcf index dd6b79acc19b47123a1b836f9df2455aea157448..4571c0069d8f3bc3ec525fbc8cc6a4cec15bcdb1 100644 GIT binary patch delta 713 zcmXYvdrZz@6vv(Od(|{bv^L2UYu>G>cd{mIsIZ}WyC`jGHMX>}wa8@6DAsh*>rK&3 z7ZEAyTfHigEFvnEbkRk3Gn*x2W#eo-|D5O9bH3m6InQ&(^r|tvD&3WmE4OtMrNE5y znNm@qYGX=6oN*-66-+NV&y23WjP#zG+R0egBAl`>{uvnENB1EhzkQgRb4^VR~ zkm(^z!v(k!k&!}Kh4B+QCg4=GAXFpbq$g7i>SC=FszuKkjY0+(#cP=!A@H2&>QI{? zx_WH9bdjk6NRmf*3{|p}ZN#rssrLjcbfS9-_ly9hCgf&H%g?ZoEv(Im$&;3!R~2Yk zzc_w5LW?GuTClf73cf&CsR&;pqs)t`6%*wmd(p7Z&Bzvp=dwCaFXz3M^NOE(#bZoq@B3_Ch9DuB^N1HdzkXjX&tJP4sOfinDSA$ z;vCa0IN41z6=3D+R;JsSa`0oi15d{=l?svP9M5!Do9Da~PA;;&2c4_v7Gay)Fw=cF zx@(wJw)I38KzRSdGBQ^!>V1&6aqHyUawF&VtfKwTN!Vr zZ18Y}zoV~86|fHyTCcSavO;li0#hX%LnT=iY{NvM8d2e*P=llhQFx3;heMcZVIC{(Nv~79FG;}XNWrH!&Hx|cpHVDqwS=tLN8!)+MlTbA!mepiHbzwUSaKp z^GuCEvdsP(>Lsy#gWs3M&wwSV!o7u8S}@Z)WL=X;aMiwN7R%jGj-&9=@sgPcl8>Dx)4)qr%*Sp)QQ$7 z^w-ZZ^`N`KQlVZUzLrV5SW;IN#&B6dtZe;hO866_lSCMDPe3{y!=-{ChacRyhK zmB=)S;5jKj(fvot6vF?GGEduRT_SC@>mnWW7n#z@bjC(m@PEN9)0fi|OvsvM^{FQ0 GulxhX*x?#m6-{K W%~`M055`+#|3>_*ALNvnOW_xr6;L?< delta 247 zcmY+)%_>B39LDi^9)B~Ac{?eI-;~lsN6IjgnOTsH#06Mm&t}R-US`KkhBIoM)!YKl z6>tR>?m;PA@2_R$yZh9)6QL8KS;o_4#Rz;)t9b+_m6s+6}&yy+-;;qb1!zeRkg z)ptsKYP3HhzH~hx;#<|BZ8B!M&$UUI4u+3Onld9-WS8kC-y)r9ZLCRln;wEX88_`r zgk-{$o~)5Qrn9Lk>6yHl2H9(B&;I^N(|BovOqot9`wnUO3x`BT;o_}BR+~!&!q@ro YJah5bU(>}xu{`%rrSNVg(BNtUKXPM5F8}}l diff --git a/integration-tests/validation/src/main/assets/figma/ComponentReplaceRelayoutDoc_qIh0IOQTCtgeAWZFF5gYSk.dcf b/integration-tests/validation/src/main/assets/figma/ComponentReplaceRelayoutDoc_qIh0IOQTCtgeAWZFF5gYSk.dcf index d43b50ca56b2d57d3fe157c73ba1e285ceaf1265..b42ca596a052153f4807b544fdf753da0bc66701 100644 GIT binary patch delta 47 zcmV+~0MP&M9q%2GIRPNCI>G?~A+!Afl>z}Gvy%k40s$SfOb6Wo0Uom|2}J?{AG2@^ Fe*=Oo4qyNP delta 47 zcmV+~0MP&M9q%2GIRQ7ZI>G?~IJ5l$l>z}dvy%k40s%U+Ob6Wo0XwrQ2}J?{JhN~M Fe*=%J4*UQB diff --git a/integration-tests/validation/src/main/assets/figma/ComponentTapCallbackDoc_1jeKYynjk1nqYblZ66QDDK.dcf b/integration-tests/validation/src/main/assets/figma/ComponentTapCallbackDoc_1jeKYynjk1nqYblZ66QDDK.dcf index de1ab4a3b11a44cda2311cefc0c37a0514566d0e..f45dedf65821d34a5949ce2e3b42d173832d867c 100644 GIT binary patch delta 61 zcmV-D0K)&`MB+q{IRO>1I@JLI7PAlnh6J<98L0xZKMBGK0TYuD0!*`z4!HpV6tl}2 Tr~;F)7ZkGr6R!lba~$slkmVHK delta 59 zcmV-B0L1^|MB+q{IRO)~I@JLI6tfTlh6Di>v&$K%0<%8}!U?m)7q0}9uoo1Q4+2fI RkPf*4vz7*_0<&`*?*(^=6-NL7 diff --git a/integration-tests/validation/src/main/assets/figma/CrossAxisFillTestDoc_GPr1cx4n3zBPwLhqlSL1ba.dcf b/integration-tests/validation/src/main/assets/figma/CrossAxisFillTestDoc_GPr1cx4n3zBPwLhqlSL1ba.dcf index 01d2d98a69997a7fdd4f64bd1ea8d15325cf677e..8a3a9caeca47ada6c9c489eceaebc9da31e522e2 100644 GIT binary patch delta 127 zcmezF_uX%T4nG?M1Sl7mB&Me(Zf;n>R^LVq(nR>?*T@i7{vM dJ2{}f+|82}UolNI=&HlCxkQDT836E!D3JgF delta 139 zcmezF_uX%T&SZTh3C6@tQc;YPEoJy7Z%{tM&&B`&%Ecv#>8VK@t=}?E-owJP*@UTs zi7{pKUX~S1jH#Q`*q1OdrfuftI>f}7zWE%_L?*_J%?bRAm>4rRGYc(cV$9mSQsgib pWA^4;@kvaKIh&+_+HyDds)R9a{x9pt$e6d;PyQ9t=313sOaKblEkpnS diff --git a/integration-tests/validation/src/main/assets/figma/DialsGaugesTestDoc_lZj6E9GtIQQE4HNLpzgETw.dcf b/integration-tests/validation/src/main/assets/figma/DialsGaugesTestDoc_lZj6E9GtIQQE4HNLpzgETw.dcf index db96c42bba98e5ca95f929344a1fa2f012ef0e40..eb8150c99fce7a24dc317130172c27b40902bed7 100644 GIT binary patch delta 1528 zcmZXUe^AeN9LMkZ`c_J7eKi)|p9|3#r7!90M_o6&xSSosHm5clxvcV|%d!&Yuyt@L|K-kS+_{0)QxZXF0%taeL z%z}W9ob0!TP|E0}g~Fl!TDXVTcG1GUT&r@MgfWEQj~@npNZ8L)gS6-X zAL#wuErt{O>Rt|VT(GWQ###Nf=^-w0Xw$=NglYW|{y6-Zsbk1ZFC690uWL~`kBpv9 zIL3t|C$#kD7&43}j=JQ9;~X|2lyHLM-%cca&s7s!6dV~_=8lux^nNtq6c3-8MyOz! zHk?q&4-=LWs(4}IIKmHnCOMgKnj>dr5YBLEipE)X%+WZ<1!)@9+$&w4WiqM-`XGD^7~Q}edr&>We4vQ-BG;f@Od&vMB6#9 z+}SF)r})uvEvQx8aPl5eo#L9x7@~T`j??pr8Wb0v4I}flsdlcd4kfd6nw=fz7m@iO z!On*+j z{c&V|y421c8i%$fe2@lDxN%0)csID0R3e_>Ar2efAlKCZI9&StWTKr!cwk2J$UtfE z!~inGSJ@@p8~R*&NxTn66530FFJ=?GrK=xw#TUf46W(pDWUa-u(jQ|?XTDwT`eQKR zMd{tu%JCJKVddCmc{j{&lj96T4mwD6AjT5>q-PMWlId1#mzVlLUzd(DtFInGCm9>^ ztZhFz6p8`B%TnjS9D=_jgkecb|1L*5rns`57>Let#EA^OWryuDdMH-63fhY^5vo8=j=63yq;UkQ$h=-@mkTjCNC=R%qv38tuH=kC6ObqC-oysNdWo2TSR3+X z?K`?l>n(Y{`H|QlnUj!8*eG}6aG$VAY9^!2HoCH>U=Y5R@+sIz*euhhA4>Ot*?L(=y#A9aH{idLUJs7D!zx<`T9`Vj32=F5AQoDNna%c1lDh zMmNtipMiK+@IuU@ZieJ6#1l|=9V~*rSUn6$Tw(=*hB!a7f}V!hmVs>4%aC@<(MS}e zN3yNp6+@n`w1VD-JX)>&sE;AZE__7vsv+0bStET78J7e7g!D6{Di2L=6l_SvCMyUr h=x@l0omPoZBdeka`Xi|*vZVw`@I~7r{0k{QGWY-h delta 2340 zcmZ`(3sh9s6`gYi6g7rXQWWRL5Whj>Ge2ff0~ux*hTrg02FJK8zu_k^!@%$f3ovnM zUA3uZk~LkaF%z?zCf3-b$L3nmfU(*ne&RP;jaHkM*eVuFqAju7`!uMb^sV*Y-tWD; z&))ak``(YYh5m9!=!OOG$M+Xr2RKVHn1pbSRt8lgd_kwjL?fIh`M4N_3#6LhMEDc^ zY@!3g?u`)4c0Mzh3%rurKJC zg4V9kp)c`-f({jnh&M=6W<+1e83nC&HX;0rhAQ*Wr@Nq_Wi`(t4AIWoR)lX!?GkW{ zwlxU&56x*3aGL_n0`AbXwpR3wy{@1)+p7_QQD|oiA~IUHN}!yPe03XQ5TnjD2N8oA zWvvr9hEc?Nfnyo?AT_6wZAXxgg>(SI@w6!gueJ%|$-?RZ_h zd6dzrEdoOs*?u8V!ASYGz)6fQZxuM1(Qn@s7{=)N_e6!@C{bZK?LmKEv|#f-5X>7V z*v*}%5vMRZ+HJcg9e5sYT+{Ty)`qoIBO zBNm#`#7ag52ZWf3PJA+e_&B4aLsrD;jDB>a9q|c9V~%MMBN;6`@igL-jM`4Uh&Y4M z_%n7n&SX@2ZW$^-N+adEYcgc=b)Rp;S&Z}-oQSg-y?${JaSo%GzwE-tK>pp}NTY1l zQ-R(Uoi|Os;(;IdK07$p7uBc6xr~*|%s zwmm4&J&*;_6moqp!hHI4@N0w^>ba4J5KEK(ZN;hg+(lO5{!Uor-qJf?i}uQ7zUjJf zh@;wX^MfFsdhe7XsQ4^|tcPYNeJ3)j$)~uX@dtw7IZ$&J3@e9=ikD)NaMZL zmaR|mtHa@kVBo%RNtwvcPL-4kc!p9^F67D6p&i-%=5{52rxdAVFNm*vL$7~#By5L8 zyyi*BL3o;X&xDHzNqo~Bs6t5QW1^({XZTmqV%85b1co#0Hu*0Uh^~~!!XyAAZ;k^G zLJGg4f)_>`Z#DVdK@jKPtc6#=#I-sQAE}vd*Tb8`K}E*<<)xq|(Y8SEec2=YCktRA zLMs3HB1n>hg`Z6ZZxE#MJTn|du<|F;BuwZ1=@2Z3kNIF0+yeN757^)hgirZPdEk)4 zLEgU@91pGJgMFIg_t_yD4)Gp4G$0)2Y6sjzIKt;GhY@>iX zh7wpNhhzL|IV>B!AHJUR>HdwC5Cg|~Po?B{f~#vJzmt4ko$!0GextSJEf-ke6z_L| z7vXbW=7Hx&_qpG|Qh%#gWIWBcc_qymKC=}vAL_%19bM{&cBn(HF#Rq8|1t`7^IT zBjR2q|G+Oj`AEsx~V$9aXL7!UkK6r_Ph; z^fZ<=RO_-G=Ax3EHg}oUlTl#Gah8>8J;kYxc;gaFW>tEQAu-FFU)x%kk=c~jm~Zx& z)FyRvi^iPcD%7S`8!JtVo2xCkP5N?2N3lD<)|i=ESmesB%XeB$o$2w#n%cA!jV(8| zqb}E;+S+2XRiu|VvU4-+xprGgRZCu0QFcsqMOH;asW~S_zqG((kM~woSsTj>S1!qp zsn5zStjIQ2uB<4lZBaEAXOY?mcT_et zTRJM8rn)qJQB6rkiCgEaFQ|9dYI1YZt8-jNou#@qEhnWRp~GUHJG^WRB8uQAUbe`IHS7lnB$End;Tb+seM2oYgTxD;q;PR955d1G)=eGd> diff --git a/integration-tests/validation/src/main/assets/figma/FancyFillTestDoc_xQ9cunHt8VUm6xqJJ2Pjb2.dcf b/integration-tests/validation/src/main/assets/figma/FancyFillTestDoc_xQ9cunHt8VUm6xqJJ2Pjb2.dcf index ecc7b2caf937af2bdc82a39abff580c630bce578..eaf891f1b813b1bb3fcf0bcfc27e72bf1288d5a7 100644 GIT binary patch delta 330 zcmWN`O(?^09LMoK-~Ugf9Cjc|N`#R9vnMt-&ktk#J&crE%0*IYrIf?+I2W8a;DTfq z;dA(plTsp46c?AdDJLffTK=b3z2Au+mH1IxUg+n(Pr%MnITqCNLEQ)(+{}CzI60mD zC2(;xC$8XT%BE}Z(3ZQWP{-4PRY5&ng^L0&lSOfXkIltvf(G7~Sg(;r*@D2&#|l#r z;7Zk{poxJR>oxOMUlz2m$B`7YQn`OK(00*qAZX{IKcb<7TFbMbldo+rf-atPE-7@g zy4NDeGsB{X&hWlMFJH#q1R*BIE&3RXgarM3nm7^|j81+i3@|*kt1!s#nGL}ZW3yL+ zVfvz?Ax!^VzJ?Kw&S#zPq&;w(K_|9hrtQcR)2K$d>{!KN-c@29Jo8+`6divsQ!dQ9mLAP0T(2@ zc>5k62vtRe^vZf#mZ5CTJZ%mFi#EyPTr{-fs5-&Z-PdK zQ@#aF^rl7?+m?tB%DFzz!5a?bA(g!tIMFBs)i;6ouyPiRYFj6abzL4M2a}d^NB{r; diff --git a/integration-tests/validation/src/main/assets/figma/GridLayoutDoc_MBNjjSbzzKeN7nBjVoewsl.dcf b/integration-tests/validation/src/main/assets/figma/GridLayoutDoc_MBNjjSbzzKeN7nBjVoewsl.dcf index eadf5ea5d00b36aca801f146af8633b1116c7a96..459eef2fe842b81dc22569a39a2ec5f1cdce2b96 100644 GIT binary patch delta 315 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 G8UF#V;ZJJ- diff --git a/integration-tests/validation/src/main/assets/figma/GridWidgetTestDoc_OBhNItd9i9J2LwVYuLxEIx.dcf b/integration-tests/validation/src/main/assets/figma/GridWidgetTestDoc_OBhNItd9i9J2LwVYuLxEIx.dcf index 5838ef5bccfa33aba31b6de9116159595fdd0715..ef847233d7984913cf33cbae770b064b1692a58b 100644 GIT binary patch delta 3325 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 L>T0bD8K3$)w~*ih delta 3287 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 YC$BH!n0%rjdb3IX6voZli+(c#0Jv>AegFUf delta 146 zcmV;D0B!%W=>f9o0gyfcx3NDV0s*+QVFG*t0lBl@1ZDyOy0b+G&jbOxvlR?536ozH z8=CO-|r3-CPnejd8MMgxcoVkUh+kxuPuKIwmv4r~?%rU}RQ`tpxyz?If-M delta 99 zcmV-p0G$8qy8-OG0gyTY>ajc20Riiy5CR1O?6VOEPX)6-Sik|Z{6C-(lMp^EvtSIc zF|(Xe!2*+D3^lWZR)+(VC{`wuKUg)BgH|)M#Z+SflL}fmvp-nD0h0qu*8)L}1hZtCze!Z7BC_;!8_M&0+k?(v8x0Bi^ue$->5nH*H;WQ3~QMTd&Prflyn2 zy^M2EN9Qi*9MsiKS1m)>sxPf+g|JQA>+%t*==1BN5UOhbO)ROVH*bC;!P4uuO-HbG zi|vejbl4t7)%E_pE)J-nj~8;JYU+N6?ni``%{61GX-{AA?wE>$Z~rTTWHbk_-`afpZQT!0T9s&Jfirz&M&0;=Az(n-t9L9xVR zHYK^j7L>uELG!hJbvZ)1-g`X*MTm7UfT zD*S<1#)ocL5QJFPhpJXL(sDkuye4cw{MuHDzEGbMd|@NHbhpcX@c$n*iomg`bbV-t zEqzoqKd4Dn{os3qR+P{XIQ)~zw=p~c_?^7`AsHc=G6R7lnL<;-fI~TjyuyJ?WGX#u z1v3z)(S$YzPp9sm!%T!3bfcreGbz7|!KoDS6>x#gBELw+X_1%Q=s-^>l8{ET`kE8w zP>udZF_+#C1Wr#oA9ZaI_|nxuFc_gdbsWOZ%b=jp|5E>v5Qwmk=8S?V2>Yq}7+8xU zc)YEeDc<2d6gDCJN{4=iStvt-LR-?|aS&si3yOs~h)sReqc|2mjDw#Lno*xbSdCDL z9FyP;z(={0ji;6A-W21h7mb;2Jn^P3v!MVvnjUkF%#SK4nCO58l$v48Xh_u-n|+^< zBMY{1*Vwds1>1>_ZF;`Sq~(cC3E7atZAp!DAPUusO5miq8(;kSNykt|o1Hj#P*`_T;!0mX&ro~4LbJeDX$6=?$Yc}0K4S9&K zEn0Ps(}-^@%D4c&4t#4-!4)V*d}q<(>&&P=^|&-o-iE`7r4}u{XSlq^%$<3}9DG1o zPoTB~fDXQdiwH<7-!N9mEm?B$y^%;-gUAvG9V?40DMRaA7^@zgS#sTpEGb7DDjMoY zccyN78OnupRkN!+ov&_oRiNBj$nkTf%(}P@VJG$W!vKU`G`%5me0P&~W6VZ4teyvK}!J)>viJoc0zwuR#>WKmBtWy-KcY)}MS1s}g!k2*8EOH6KBnMu%Xht}4 zBL1|fN=tko@rFg^+F~k?B#Rcb$3zF-vdE6W+X#cn(FM5yexO%fksDwLC3Z9B{YXDX z;WSiDGSH12y|GBD220RMm-=A>!Z7L=jc26VzKW@~F_?%joc0YyuImw$H59oMMpDpl zmcTDmezd`(XyF)MR}W`$Xi{R4C&{m~c|>@{W1)mGbaf)~0Bk@RlhI+SY-uu%N7chu zIH|!@ESAuS%BGrtHKIMU@fAR0%9~>>Z9-Y;Y$^DYe+IshYX2jywq{H4cZ5JHSZ1iA zmrNa6g*y>Gr777QEoex_AAsMjXsx2G-L+-y8b31jKOZO9X>ayYnAkL||w2d$X> zWRGEE+c3LzFSF2rk_ye$TJ&R%)PT_FB# z)4hs<`>WKZQ(l7m>%C3URYkPviM^J1B~_gRY}mn?yvA)2=_|OZKP2C}q8(54rU5-@ zLPzl&Ad-HG5NuNv_5IRZ*pu#c6P^y}MWs=K-=5y2dW#bh`p}SX1wX#u(7R}Z`_j=E zgZokR4@UnjjUHz7{mE^FS&yb`qs{sN`em#*Dd9W%e1e#bFpw_98~i=xOfoozTK_Hr z9WaPSPZK+MgogSD(@*uqYk&}nX&^Y+q12*@;IDu%Iu&4WQ_2n%X=XIGYGzCir~0jo z>CGv(wcx4Lf;N684k8A-Q^-v56u^W0W*K2csx;3CJ!#2&b5JE3`-eIBBXVXMT$yfV ziCqZWX~jyx&-)I#wOVj_yVBCNq7>A;a$E>GIpU&J39cO6bS>f#+{ruF?Dn8XdB)?4 zl(@rSPwH79@(^B-=ROgF@RB+m5Iibg(diyzlury?HlH(S-NE1Ie%Ut(qTWtQxm`%(-;csnmknwd31MB;OxO zKY2;EH;f`J$*+%>O&-R@k=i`->d1#D1+Bf(Kv&%sZXrIYbhX6a+$89{S)OTuI!LtK`GzJ9_CHD(ob@p z95f_aW}^u5UqG>wB@eiTG%8u9B4m(bs=4$JdNk8qx`<+DOU~$G8mY|AO!_td?9a$E94D$ z!lnv`IPa=~JGhFFfIW0ASHAnEWL)_ zS;$Y4(2puaiu8_j>AiEa=Znjme7>{u%+Ait&g_5B`~rLC7noF?8m+I@kQVZ1$G^YAkrhBG# zE#cV>15Mew8Q}33dhh|R0C9Io0;6N1{*WT4fn4|QeAoACT&rl8hZC>(pwtGppt=VQOVsE|ScAY0?)P)66b9!we zQ?!ZLASy9t zQ|aY6*3Sx(pV{~Nt>S#%roALF^z+clp_@vl7{?#+xo8>tqM~DtyQmRB5~~v~dgZ4v ztVgaRfA|WKJCG@7X{ z=10;kr876PKc>ggVAfw`u^&RK(|)DB9U^^Gn})Jpu}h>WpNf>~qtzEQk*NW$HXtdf zhRAGUIUe!N>4MUUC*`ZS1WJ~hiHz1(r3ogtrwOdvT^1`9JJJzF&G5bpNy^%J`f@i4 z#ief4ovA$<^q?hj_oAW)qGMk=$utOY{b(|)sHoUK@wg{NGF?Tv-ju?04IBEos`?BGfPU< zMDLYUFnidvUn+?m5A(8ZZ7B~Gj?h-cJ`Z<}QwDPd7t2mbO1Ywo*=H!!$CX^{yhvx6 z!(Gg~VkMPb?7m?o5iS9`q}mQ_-Ua1egSe1vFi(QX*f&!tAyDj*~b)) zg`@c=)`j0m>4uHvbBZF6bCM0yx7aa-Ul8>`#xLTU?vW@N+AxFVl0Hw8i&Sg2oKk0Z z5NWjqJc{W%>|DfBQ@yce86RXCjFgoUB^rWZtL@%Hk+gwjVkP6+M$5yHwb}A;)X%a! z0wFsr|BRKpERV#neZsnM1o@%(Z@gd8Xk7cjn*AuY&r44@~TD;+> zidv&SIbtsf#~eqv4ff}9WW6mC@;XDA+TmnA$KT;{-qM=^4)aGIZs&L8%9Qu;N01{| zCd@;pVooQfkFhJ*d7-ERvPwGAb1Nbt)H%dd458(m&!oY`Mr5E&Z|5aZCPMl+;(ZpL z{pd*B+=B7_EpJ7aK~5^uHoO?(h_~BuWrX!+2YQckB=9@YW1MqR)ds%#aP;B*zIfRC2qZmc6iY8ggWbB-!nj-=X-Oz9Q)tB&QB*!sEURcO}0>aRwZ zCRTq9-Zr!AYjOBXyS@&cTRX=Ttw&6IXA08>?ElKL!JICZH==SkC(=io(50udMW$iZ z=sbv-=sYIMi?GSowGUBnnsqH77EHHi^h5tS_RRk9pKmz;*VCMBOsBA9sUze2G_Egq zq<{-x;VS1HQ9&$NW9<~eSYz!JMv-*;T@dbPSQm>Rd5h(uXuZ?PU^<5ayPX)O^Juu& zX7&P(?{^GSQ;a$2G-4SHC$b%Bn9Y%N#F3HM0q>7FHJQFb%@fX2`~TW08`_RId&ch9 z3Ej`z{X3(@70X}a;#FHIU2y!CwciyT?^yl@2@mahH~jh78N%G%)n&>#RdwZNTv#_t zQ;pM~JKxD0YFe7ACLO4c&P-F0|8G7|7OQ=F)@!GL%+9s1oo;q^2EB7uFnzXZr;^;) z!xo>C#{RjCe9K?p^L&=;;}3r&&zAgWmg{cPilpi0l3sd4dc{|*Z%0!OWd2fTfA%VgUIN29PDe4Q6ra#HVjbG3yvUmpxPkC z8Wr&a298wH!TyQ9qtzs)zVMB;z77~DzP_8N2C>dHMEYOK6m>)Ci^D~ltku7n`s3{k zC0QSU$8)VSKVj$sHH39+KPm8hY3hNz%vY%#9OkArf8y%-tGO&@ty1?$+C<74HI;Qp zy7D;@7hPR(sVavGORbel*u31vBRZ~16_j0XLllY8M#+oqk*k}gi(->>tN0jaf3?!) zu3nR=BC$GCRcC5}TU*qn|Lv@tm@3avdXH)(Pjh^~&xZ6RULR0%Ww|fq{(JlAG9Hd> gS4MuVco?}$Nxm8B`D=1XE#wStNmklA|#>+UPXnBY#cJ zFYOzdy~G(D(H;<|Rc>?&F*rlo*sa(}H)4$B2|#xdPnM z_fP{dq?)P$A}xPwJHx|up)LR7kh)_Z;fAlyyMvMH@W_AQbKF2xbQQPtKI#)09o?BD zMzyx9gBVkFO_IneUz?=M)kgGd_ZX2=rtS`r*U!D3#JDcRtZ70UaZ8hG+INqb(x?4- z;;v5CcM;QCXfR>Eb~FyqMH@W@hiy+m+nXne`c&67TZOvoN~r6gI?%Z}7oT$u&*v1&ES5Rbip0Wk;-=cT4BXO> zKr@k4xN3+PR(^XIt4A6F+y2)f^+!Iz4PTmf2ZFWkeW*t3jUVBvLMuq=Lnu$Ab!E!w9L7QbIb(t8KZC;?$%QShhgwSMN1yRPSlRwA@ zZ9b^)%fvWsv!E(a=7y{g(_R>s*t{mYp|7#SEC W*nt=Xl#^5QN>YoKZ{A>H$qWF1F*rE@ delta 197 zcmaEv|1y7q4deQaw(d-fyEeBnF)=aj-rT`5g^6*`W?6P1wRiI-P9U{!vpbIjE93sn z34;5W7&mN|7x7|Z+_*VQEP;t>huq|M5{jGOO2jfT?%eDx-ODstS6PU0^JWKS7AD3m zljMRnPggz1!nk$w0)<{Crfp#5lix}hOrEYPJvmpOdvlI%2MgnNh}I?(smY5ageKd{ mi83D8BsZUl@gP{A2qOan13M6dfO2wbUP)@vrp+5nESUk6Qb9ie diff --git a/integration-tests/validation/src/main/assets/figma/LayoutTestsDoc_Gv63fYTzpeH2ZtxP4go31E.dcf b/integration-tests/validation/src/main/assets/figma/LayoutTestsDoc_Gv63fYTzpeH2ZtxP4go31E.dcf index c3961590a2595f0afba301e1d0e94fc02343b043..673621cba2711a2957d5315d628fcd1ad1393706 100644 GIT binary patch delta 2130 zcmYL~d0bXi9>#l~`@SlQC|cqI7jj8SOL&27{%7epfz7eql4SLjWT zA*Q8S&S==2VSbJ~mRpKTE(lq;X0E`@IAvpF=N;@b_n+r;?pg2ie9!M5x=}CxM!nof ztol5vAF+DNQd(G}vz-x^xAk1jGTfe#9%$L(?Vj1E_D?ULv>1**+iVa9X^GK z*Fz(w5(#>5R5me8_v*fkcuk+|kwLt!2lh@ThU@*YX2J*^(l?73sf+rj6N$RZph8;V zYXjf)3eivN_!H~2f4xo?lpg34VYv_1sn5>2`qq#cM4nEFH$Cs_%-6nf@Ph50mDo-v zCoUq^>#EUxi1)X28*3q7M@-n@z-fJP@?+qPJ~QQc3mN+6G#9a0H%TgUV2Q4p9cLj^ z_ewSEX6apXR}xEg^!z8pH##zXE1`8ohVksL+ADK0QKVNaUE#prwBPcN9T2^LbsDi- zcg@Rj;P1M4t&u%?K)#W^`r-#h_UW-(%!K{=-X}&5=s7!#9Msn5Mh@vUMMjEsi#=ws z!@Br@+2IS_yV$(^QlB|;$$=8R?W;W;gU>7_PU^yQt7_qtj=sE} z_@lm59!gBnUf-I$-qh18GKs0W>RK}0LpwBa=iD5CY5L+#CGgf8KFnhHi5= zg-Fu*_cI-ssqN})2a@&2k3J%1>ApXizS(;J&+ij&>EXZJaUex{8jpy#<(LBX` z7D;s*^s=x)x&&hYQ6L%ZVN%{GyIz5EFgws4lH`(koe@L4BYVOy%0f$N5`lI^D~X9h z7S-Ovs4FGWFd(;)$R5ZgUXqi&U|4J`@v$%vx0AS%@Qg$c}7`CVGljj>o=UlCuIuL~n^%4Ic~3WN@CxzZ}VTqq(If zm%+swwkj?&791)=Z>rtv(18E3<-|I)C!g5z@Aa5O{$k4;8*qgDuPv=VKs@=>mbsfT zj(ASWK0-eWkXGAp)B@%1cDM;k(s$r0;gGR~xI{Q5{4Y2|)RJ07I8W4;a>3U`9oe}D zo1O5I!G~aOT3y+97-xxkvg(LOy=BaC+$HKuzmvE?_=tVlGp~VEpM@eCO3ryt+gC3xa|BM z8(BLvG(6H3(MTfxfo4QwN%$8|6VFS_ACcz73sUd|2~ISTD)1#I{KT&|vz%xu1>Veb zqL~CWVz3j4SI z&23H1G~MlzP_aw?mtpfLa?N2o37JEK`zTqG#t>q(==n6)^9^}9ogWfod*Jg*PWN)_qd*oVf=SK`*XJHmojO__qGiAkhRI%HEb!vR*c%dlP%n9 zx(||&tt_?h!!y$Ecu32mS{uuT?x>QMCb#Zl#>O~sucmz8uPNUTO!;0)KCH<`nQUs- zlm-Xb+JVYvDOGt=GUKXi>=k400*7>)!U7-u_uH5Sy delta 2208 zcmaJ?d3aA(8qWLv?hg@J>|)6crYa4x5S55sCSz%dsJ*sgNFA(jXsjV+S-l`|xk zSVEOZdgwRP4#kYAWe8H*8cPv1X|&R39;F>^=Un}x|IK}#d%ydg`<-*Y^M3F5o~`$M zPTcb;h{3*!-b0A}yI0eNcXX~h+NA;u(a4JG`JU}bh!58zm;fUTgJlf^? zsDTeA>+=mlh$;GU!^Ol@o#tCcOw)G2Sz@}bX)>31Lyu{`gP5VeYbo_GQpyqAPR!PxPRocnx^YM`k)+E)=Ml-eeYe@fT)j3tiAd3pBXfyVy)-J1_=9%$ z$|lluZcG}HuAju33G;MPzg5J1{b)cIu|TH|K1_B$sPB(RAr9%pQ6}{=o%7n?EM5rm zq)+Iq(cklr7 zSg$H-pSEUeK_>vAou)yp66 zBG%~+PtCXWTK%wv*q|eRtg( zFobzq9=60dVw1$R#sgxrbZv*WE+`oq3{&qv?K{^2E^LwWFJPbxN5wA$!-)4~LMRMF zMAmkLvbfv!gr`QRlo#nD6gW2YX=^q0K@VaPi`y2Qb-exOvvJ3AUAuqg%D%qOqP?! zI7wcCGsJl5u?h*q1j)_CBx0i6%X1K&ByX(4QQ~z8%!i)~d!=)s18J!&@SwHJ;a5{O zwh9t@ z)#C&M?!P~HE#d7X2JE2&!5pizVFJ)&cJM((s#Y7E20u&*ysA_rq>sJTmS^kbAu z`FBU7`jL@6VhQ7fbbO?k1Kb@ zOu7`Xts7Y~WRnxUT+S;RP0p6F#r()>>L{oCxo~)SbsVx_W{Q_BrWfnekoY-S#DI`x zk+ytzfZIuzEfWtJhS0K~>$n&lUuMy5OYsq|BJ0_@{POyGtZz&CF=wEG{VSNtfElhP zma~nzaEd)1|xT*s>a0g=$_r2qf` diff --git a/integration-tests/validation/src/main/assets/figma/ListWidgetTestDoc_9ev0MBNHFrgTqJOrAGcEpV.dcf b/integration-tests/validation/src/main/assets/figma/ListWidgetTestDoc_9ev0MBNHFrgTqJOrAGcEpV.dcf index 04f9864fda2c073838028eb53d7b5eead63548e0..68f953255f5b7c6b5f734298f07c9a412213fc4a 100644 GIT binary patch delta 2477 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 Oe^Q~|e5%pV^#1@W+?}rg diff --git a/integration-tests/validation/src/main/assets/figma/MaskTestDoc_mEmdUVEIjvBBbV0kELPy37.dcf b/integration-tests/validation/src/main/assets/figma/MaskTestDoc_mEmdUVEIjvBBbV0kELPy37.dcf index ff233c347eacc3a278f12d86018c160dee5c851b..e5cd2c17292a26db03fa0d20ccf5dd802c6d112d 100644 GIT binary patch delta 306 zcmWO0-7CX!7zOao^IaC%iX_U2QYK50Qfd-WidKrKl}K4uQ*x~-F4u6SG{d}ZUgj`A zW6W%mJNX0Ly2a$$_v+K>)Ons{Kq3JNIuVL@7l3WH%d8;GEz_@HhihidE>}z574|r8 z)hWW^GONNq-4!0e0beS=1cx-L{{%-oudyf`GgUVyIHA3vAc)e|m{y4KqbX>@DSeJn z!5Qz5ulGwBjMGBH(dMw+i4yTTI-UWY=4_4B<7&zxEC f3$pxN+$=_p{-s)lJj2WVvOZF@VY4)|WyLE02se1H delta 327 zcmWNLTPVYE6vubYZ?(u)LyL0BO6*}NBBiF8C`Bt}Q7h5PvYL`-m*R14?S+y&c$-My z(%%>}yO`_D{kD1YipjIzc{rc*?OWgP+3<1L$9@YbJDmlhJ+$xyQy8o2U#5KoG!h3` zD$WXuU|1*BAqMn1K}T?wyP2X$8NQf~p;Z1c#jsta6?B3~?IcqiCS!pqf$I9Gpd@mQ zel?}wH4ibJBH8rKl!nq=BIpc>)*q&GDD4s#2z5wYV$CAGD}<~brfXDm%k~Vky)i*I z$n?qREaLqVw@~a7ci0@1-aWhysU9#sBJl`^Q@->B*QlN88M|Yp8hSz6Z4&f~g2ycA z4RupCLGN%)&okxlIkQqkdCbq&2>QVKLJyabN{(DxU8=dfP2S7aV4%SmY}4vtSk&=9 D;5C56 diff --git a/integration-tests/validation/src/main/assets/figma/ModuleExampleDoc_hPEGkrF0LUqNYEZObXqjXZ.dcf b/integration-tests/validation/src/main/assets/figma/ModuleExampleDoc_hPEGkrF0LUqNYEZObXqjXZ.dcf index b7a39b63c6ecdba523435a5fb413dba7d4fa0341..726b4ca702e3f8acb9203ed24fd3a2b1c12f9ab4 100644 GIT binary patch delta 451 zcmYL_yGw#`6oxs+mM)gr%}P_d`<0h6&D3rb1kqiRD7s-#gAgr&nI!~`B79S0Yn!}7 zL;VE}LQq2y)Ep5sw{-XwG(8XR@D5Kg$Hg4y!&F*`d=iyG<7^3)>%MdYK9W|Z3cX;g zhkbvE$*6RrT(lAe;~rC$T6`v1OiC}zNv3M}(m^J(S~8h?rW(;2gqj|hYGJfl4O9os zamZAU%hnO52E4T&FSl`IZ2Xleio~Q~7!y-&12yAd`isbl#EfR3Zsg{P$%Xu) zTx+Zr%gzkdMF_k}6| delta 453 zcmYL_&nv@m7{_~_xoHuFwB@()-DVrc%*>CCG4|U=n8NDftdz^N(u=BXrWrW1eM}K`$>koHqN3IC)IT!CU^JTy6o=Nh z$CSWjv!5x6x7Guu6c#P}OtX0EJY-5EX?tewYSN>QMnoL1L=I>!E0YtMo>e9nZrp-y z)OiFw*!K#0@#2#yH`2p)*00?aI3JY{`mr7?F?kRO*$tGzZupC64(l_Tfm)D{5mPJ9 z5;ER~yOiv-!<-RVa5OLIKxskHiIF84*KoVi#bm|%nrzx|zag;WYE#Arbd59mi9H z3vD5hR3=dS5_ zZH1Q#VdcZP2o!QJn|)9ZpGxeWXQlc{MA delta 366 zcmXw#Jxf9X6oxxTFF9CxCBO2cZsuoZ-Ez=NCr!NVEnmH=L^c}oaB?)p23evy8q6!#>D z08=~~);`l*iT)scB$lW4xCJkn>Kqfbu)4KCT8Zj6(#1TuHJlzTak%z&E_Y(HB5|aHzx|j zF)^;&d_V}uTff;>bPf~ahRwIcmoSMlGB7Z30Wk|& diff --git a/integration-tests/validation/src/main/assets/figma/ShadowsTestDoc_OqK58Y46IqP4wIgKCWys48.dcf b/integration-tests/validation/src/main/assets/figma/ShadowsTestDoc_OqK58Y46IqP4wIgKCWys48.dcf index 621fd352c454485d84ea6bf5944b857e1a3907d3..ddacba6d067c2c5d608368218fc8d8fc42cd9ede 100644 GIT binary patch delta 2587 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 RM{SKM71TCxRkFrezXI;hk*)v$ diff --git a/integration-tests/validation/src/main/assets/figma/SmartAnimateTestDoc_RW3lFurXCoVDeqY2Y7bf4v.dcf b/integration-tests/validation/src/main/assets/figma/SmartAnimateTestDoc_RW3lFurXCoVDeqY2Y7bf4v.dcf index 84f8699c19d92f9312765a08d1a9aba9adee3bfb..91e5733cd7d6b93623b1ecd85185f3820c5da06a 100644 GIT binary patch delta 6163 zcmai233OD&wteSR-J5x++a@7NLx_w45zxqxFlyup!XpdYRP{ z-UrLG4wh%-wbbd=Mx5uQD-7D}la-J~m1#xenSPgA(kfoo`G~AxZ zgrF@8|A9EzvMaC<@iEJuYs3fO5X&wIEij!K(sQRlDh^h9@K9xc z9)G{U9?GK<+;(KbK!l#OafVrm@E|SBHn*WOJxS*$qKPAvoz!A1;z(sLO4@*!q3mw= z%#^TA4@i?kber#FL%Uu3D*)T6Q*Zet0#V(g(&i=3n$okXQzG84>^+@g5tEf&nevr{ z2k7>z;uJy$s+=KiB6d`I#@oge`_9AtC3aGF|2|cSot53bUvGgSF5P~CbnA8tWOw^W zdN^XJYx_I00x`@*Rg2|T?_OP=g~J+Rtjlw7;xPT)K(mpjQ`SS2-%o4=jC0w$Cf)Y$ zCuZc`;IUIiEiGUII;jvNtvX+iG2MzUvG#R8<3^eca zB)u4~t40_>I`UqbW@pX`1<&Ox3w6~%Go4CuWe4^A}oY-HJQ&*lCE%bvJ^`x{$! zo4jNL6D|9xCES0vW%qe^6=D<1zPPNhz^0ZRvGStCW|n+MQnoKpVQa+;~Fby_VhR ztC@&xEqmoROA*>p=33)J#P*hbytG1!`>b%!s?$++*`X?l_gkJ-C*th=M-TDsTK1|F zPouUB>889|5hFwgD~iX)5~Z2F`I>!$cb>k$x9s~|a;}3AoxLmGWrtO}1(eyXE?ojR zXvfuDlJLD9e67dgmO%;cb6FF~Se@v4A=WN9f}~;O?WeJOn;LI7WlR zVIIP9s)~d~2q)+z7iff&6ddh5m(%+V;3I?z>J#rgSJKIbkb_V~nT=rzexi3<@Enb$9g;cmng3<1Q~Ey&l(JO(Z&J5(O5(L;0l2& zv?K!p4ET*!jBzIYPP3nZ-z5H_^vpCdnoc|qb0uC?^h+kEJPx0``yNL}%Re3nYd znPFIzQ4Aj=m=ttUHVuFPy7#o)Y+|6LQ`?$jsNVs|lNe;t=JqBC2==6moJkpnxf4P> zTb_#c;i|+)i%wKCcA~PV;u2T}S{7aT9WEfc zxaS(wNW9CUgSVg*G0LJ+it;V#+~j!$E7gvdJC6P%la4B`2;BQXdOi~>I6%?m!B{JCprY!> zk&keYqT(kpR^Sk&Lo+d%LNf6|#G#7%kH!j#!xXiB2G=7#uITu4*h=CPip=r&3gU1@ zuT8{U#3vO+X5lW>xzmgoojwc0p+9BJ!f^=cv@Zt-BMhL%bI=_C1F7o*EHZU^mJ#8Z zm=_Cay3u$!h&oTkp$HFCpDfActQWPKESDqx-JDI9R$2Y#zwqb z;HQc>=duw$t53Jj>(i~on{L0FI7?B(J(z`_w~TQ8xs6FwQD`(m%u#gqYvl4hTahfo zizcpAy44ZvKuJe14es5@SE?1pBNf%x3Ag>}CuBEe$I9-=xbo5NG z@rLYK@XY)zc-v4h3(<7ZaTJk4w_7b;dS;H<0>4$1>JsA-_wkuUi3-I1ism&CpCEIW zI9=I9B*JS1O$7sVHg!60)S;f8BoeXCqJkt*3-~t|eb`zA8VD}>sGUd<`dp;ZM30RZ z&G0)*m&A+v=<|3n2BD0aHWK*=2MhK#7Q!1ix=XTXi4~SkOcwFfI9Uupth8ufOM`Q( z%A&&7MsSFi$mq;8;l>4u7Rv*h$Yp6nKlXhc6z1Gvhf^!|eB)oP1w4-k(@U9}q{bY_NV z1n*Jv3^5jA87&yaLtr^|9wRsf-lrks#LFhEpnWfjbxiq~aOsL{(E=?O11}@s5#a_d?B&i>%mhn1t zs<;~ql&3Of3f((Zlme{tGr09W2Il}o6PQekSBP5xuh60o#C{1=Xyh7k9$~8H|1p$N zAX*5RPj42An*a+ar$}&>Tu5(h5!(=QDRrw@C-EU4>}}s6`XHv&!`#DOm@7qim1;{k zTwoeKw_9+iKci^=mx8(Fvr11NZw}Yf4vGJjr$vs2U<%(S7(Aa-^z%fMU-h4gUMv$I zA&yhj_>ed+@p(ldM}-IR1x5MCMGwJ+_f)xHsQ8_FSBYf)LCbrfnh*3LDnBj45T2!9 z&T!|azK~x+fJ7LI2 zO8SdeGL^IwAET}d!a&@pXji0sK){Do4~u$y;U)c!P$~af#OSj55RQ*nOQq=*D^!&zdm;9=sAW_6D(aFo zGMI{*OIH9sYS9;McCSaI$R^lJ>4+P~6O^4I!x+*P z<#v%v5Fb(7^2{4Pey_(ZGoy7$sg$skx;-elFl%C+^0S0@{qp2JpFF{3*3ty?G2Q(- zgwQQ5uYpeQCxY~Z1oQ8d|7AU)Urx&gIilu$8Z|@)3cO_LC%2&gL~|dP4HqVVS>>#ct)N*FI&8L*ocO+l_od+5b!xEx_Gh0Vk`fnO?J zH;q~IooRBf#IF?X&2|LN*NWEW$YqG%DC#*!E|N}8w!ukC=PyOK=F!1AcdOY(r|mM_ zRJvMT0i3L;-wu-}zrrP_*c^&DMbXXml2yZ0MJtPVqxdS9+ui0hiPIEav}G^hi5VIF z&a_Zga5v^kP9{=b%|)!aN+oe%xF*B8{v>b!$`&6}HZ-l@{!ztXg@(z(Tbx-586wfr|nf_X}8|%X3AB zW}I;A-tRDCWL}gT0ant!#SUV8K!sWq8D6dKl&weLKh$0sEG7=qH!kBxN8}Vm8wYTy zglNYcz_%35N;6(Se4F`KFXOsD>OF}@OMJtkPZN!Xs4tump}KXlP)@3*=`MNyHzexU zc!Z;0yCJ?=U-;hg7e07f^AThcFA$29*x7g;!{+|Kr-AbgIMn9sZ))ZFgY*n(s|R2Xni>q19aJVGXM|pmJf;H`p9_Gt=~Fae_&WzkIUbA zaoL9omagq>+yg)9mZj!1w6Krkmz-fB_oG%@_=>8A8ly1e>p%CLtQR#Got*n)1afc> zzM+5-MoWRM6}8VaSPtH!^VUO@PtUL@<_DH2_xd`$YR1{PrRxMV#nBwgSzPvgh?r&c zM0kp-CmCGw$IyW(##zQY<&9*`k=#R9#&VLkna(^O`zU`*Kgz(H?d;%l%OOw1c99VaUl2P1V;G|RF2HWT3$VxU0_^p>0AD&T0NX8l*)=ome@#=)E87R~>+!F>1xE4aPJVAKh7Fqk?Pne0@QGrQSu^khTJ z*}{!uMq~WeqWI$m>!E#?*Qg>ks*X$8Z+{kFi+F%Le_|_&DO?bZ{mEb!Q)*G?^G1x9 zMoN9V+>F)3%Q)`mD!sW#wA95zc<6>Q<59$UimrceFsqu+PJf)~~im?fCj3TZ*=OjK|Uv|biWhYfI?ClpO z!(TD=H%+FgpKAUeN^|3v8KhuH28#QI!1skbGYO)yXCJN%z+C!0MH7b)t|(fn27 zJ4~ngGVf0LLlkqwcQa$q1v%=vP#XM&^($J!HKn z_blR!dLB2^&*OZ*%LF)DhfOsVUbpCj$!0^u8TegAalV?y93u|?MRS(%Z(xC?IS&Tu z+{?_0rjM8Bz>}FjW=Xz?^xB0~nJW{J39~Or*87vBus%sP_>%;R=-wieZHtfm8G;)b zT*Z=k&aWtvk0IDJbGLb2!d9xbLb$CBEU?W}i^*5t5CW=pEa9680$V2|!ITeHa}_j7cy z$;BXhO|r@5#aB45nI%4>GcW&1p4bQtqRB^1cEBz;)Ul($H`sZuFk8}y3Ue?<%u%MF zcs`K)KuTwCCDj#!9@FgbQF56>vppBL8H-!#7@9s!E;0vI$)$Vhk;TLx^>VDq+Z@>{V{tE>5 BL@odT delta 6159 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 Lpr6k-&nN!_Mp=== delta 445 zcmXBQ%S%*o7{>9Q_jjBlHejPdA_IDa$rh=&2&2i%CMGn6M6jI6yd3jdjE(n6oAK7w zyqri3A#76=MEOXTke~_bLWrbAZrX**{s0&Lz<2xk!UON}yjq@D(-&mYnh9B-gFC=; z`sA|06gv_kf@%IWy$aWPn6wAn;7_+LsO9{`cI!!sAC}Gs^Au1 zc(v7YKT}%+E3>sVvetJ=(8Rf%A0})D^ZkNm&K0D(aGM_ra}-**ck!%3D-Vl`1#R?~ z_L^wtQlLf9!HlwI1D%Xj>hccXT^kVGWp=ekIqeBe8qQT1U@WdT2KjG%$V8O(WLR*Yzo+^H zL#&wXG%(E7mlX;RnD{Cxh;eM8NXbLXSquAk@Ol?`#4n2}El>TEGfr&gB_08{&X_9z diff --git a/integration-tests/validation/src/main/assets/figma/TextElideTestDoc_oQ7nK49Ya5PJ3GpjI5iy8d.dcf b/integration-tests/validation/src/main/assets/figma/TextElideTestDoc_oQ7nK49Ya5PJ3GpjI5iy8d.dcf index 7c32de4ae418ff8c518b8e57bda61a4ae8310a79..758216de4356beadaad6bf2f5b513db064b653e6 100644 GIT binary patch delta 68 zcmV-K0K5N+Hi|ZoIspl>JK6yO3bPgh-~s^)v-bpt0|5-Pe+Xv+0SL3_3St5Q4YNuO aKLP;-vx*Pw0RaZHcM%l>0SB{<6nzG#SQ4rL delta 68 zcmV-K0K5N+Hi|ZoIspf0SvQ^6nzGzuM(;N diff --git a/integration-tests/validation/src/main/assets/figma/VariableBorderTestDoc_MWnVAfW3FupV4VMLNR1m67.dcf b/integration-tests/validation/src/main/assets/figma/VariableBorderTestDoc_MWnVAfW3FupV4VMLNR1m67.dcf index fbc1fd56ee870a1a74a4601e52527d02dde9d612..18d94dd7384ec51dccdd70f133648c53753dc6e2 100644 GIT binary patch delta 240 zcmWN}%`3wJ90u^7r>rrc&`!pfcbj?H{7jSU7RRlp zmU48!>(CodWAUCPvC|)S8=9FTqrPW6x0beiK6c3KZ#3aLWZNIg*DF&a3tpRdHa|9dZGO{J zOF1|=Y_{BFhqeE~MT(2>>2v#3TBx+JJA?hlNE2`rpi3O+!B-?wigy@k{rYRfpA%5I&_gB#F7j=e-0m|q*8LUldiu^DWWl! zVw<3GPSlM^y207{xTKpr+t4NH7F+B72)fOdFCpj-AMjt0be9XdD=EWQ%yvQdIB(TS zy3fjfE@*;JMb}7rz~^I8Ne_7e0YHtr=As4{U&l+Fd(@Jdb8`qXe z=kJHQiQR)H;bf!1`J-Xt!$*$MKl|3*xgVph#*ZHj5OT-;Y)+mgRG;Y_d-7{7E{!zv zHTMKTo5JWa?ciz{xN^GNQ# zq7mNI8vM3@h|oD{@bus?m52Zj517PXhPrzB-lG}9_g%^1hd0Y3otqy2^g?BHev%$1 zPNuGx5uFz{BgEc~F@l+ryt?I;MZq^l4x<->3?T5Z}3NFz4U(JbfxgL;Qv=RUh$6R h^%B%pJcYO&MW%S3f|weq$Jl-l1v^xcCNQ_(_ZR1@z!Lxf diff --git a/integration-tests/validation/src/main/assets/figma/VariantAnimationTestDoc_pghyUUhlzJNoxxSK86ngiw.dcf b/integration-tests/validation/src/main/assets/figma/VariantAnimationTestDoc_pghyUUhlzJNoxxSK86ngiw.dcf index 7aeeb5c99b84a7158df3952e79f4502bd04f29a3..ed80f42791497fbedadc06b42c757395e28a9fe8 100644 GIT binary patch delta 908 zcmX|gEw9F-SDnrYqthAakThtcQtY}&&D5xm3h9biJ z&?z%qikcQGJAoP49ux&-5Ee;U&5x3SAn;#gpI7O^125k_@5j9lr^VxF@i?jru%dNU zE@34%(Q_3AT<(93u!@a_SQUjlH@KLvn$L$?6|CV0rYIF_**mtHu#WeIbrEKB-XvL{ z!)~*zr*Uy)9f>+~FvE6%L{X%HJyWeJ()rc&{e%q8ikIDa{64XhFrBX?hY`h@M1AvQ zvB+T%KCfMTY7XQ$d!>pQd?)Q2A)af~?+_A1zi;EfOA%)e6(QMy{APZIibQt)I!j36 z&fIhbo7k8aO($G~SfDyHhO z`@nWWj2?>)RuW>l=kP_sG_E@OglM5j^tXre)~XqVTt0XFu|F2^y3;FEEaqD^($Er~ zQY#JRal5;L#O}s%DB+Wh-N1U@(oDm#fwx`mC2Zt^t3OCQs2_vne577}y@NdsFG)-& zG>NnuqhJxYyL0((s~N(w*dpe#Ch~fWA}G};n&y>@>ayej3|R^1)|-lgd=c|*pfQfH zl!LmS5|(l2$ImoIk#hkBQXskqsT&|l0hK(UsP8odf@~2a?k5~>&eboXl7a-gt3SA|eS zcX337Vyd)zh)_b#k^m7(DRxsKLK)q5@)n?+2Bo`1I7V|WZ3q?A;PxJ2AEkS6_gK<< zj)<(wUqY2W*ASHS+n2|QqdWdQ&VG6wbRHp|5<|FW0=)~JLWrQA2sgw?DQoK7!BR95 zW|>p47o83ithgjfqNKL#tcQvXL&zGHE})=x}urtk=&(=A6p_iIkk@ zhmb_t{27E(lyTGoP(v|Avm$88vwRGpmVQ*sBAll2s`nzCVPBeLWS)Fx2X)KW*6Cys z&eG(k3kda;Iip8tpf64L5YAEa#UaE1DQleAN!87J5CZAem6vu9LvKx=Kleu{sAahOOp*4jXtHLa+!t7;*TbCl(uS_kWw&rxLwnAI4qBka6#FXXS zv@kF#LaH@y+Hzhe2QLYWEy5yjkRxzJjt$3_W5-#~vFAuQ4x9~~jhsy! zM~)N6nX}m_EJ_VJ{a}mC*HJFFS&5Fu-NTcbhtVO^;Z}!zIU(X+5 cMoFtIThPa~$)b$hVhH#ref63H!Mm{WKdr4ty#N3J diff --git a/integration-tests/validation/src/main/assets/figma/VariantAnimationTimelineTestDoc_vJRf4zxY4QX4zzSSUd1nJ5.dcf b/integration-tests/validation/src/main/assets/figma/VariantAnimationTimelineTestDoc_vJRf4zxY4QX4zzSSUd1nJ5.dcf index 4862e098e548142fd519e3623c0d22e382f67f81..ae14b17ab110f7673a1aba1a425b3b49cfb7691c 100644 GIT binary patch delta 3155 zcmYjT30ziH7WbU{R2Bu{K14p($;lQMK*tS%&q2+~+&2m}7)h28H_9|bF$$4H=_{`b zW~*aLik+NeE}>;Z8M$PVDX2ITMyBOtO(SV@9^dCo-|u(6|GDSh_ujex^S|f46Bja0 zT*z263+C)fi$Iu5`FIgw9;LR-wO~Hg`+tkDz*FxZ!G_=vdZu>_g&Y~X*sl@xp&9xf zwDfpFL*WT$5mknsM0m2>r&$98meZEO3l!W>uDCXc57?eD?mKC; zdzu9g(zan|5k}E-_nkp_h*BO{g)o}FA2ktijLnt#D%FCq^wxw%#BnwU7pZR$#?z9- zod^@CcT${!iS+mkfl2gMN&&)T>XVwSU%SyIspW}6`v=1`Yi-7Lr^_wG7`In;SityAwCdnL7bRCHh>O1W@*abHRB zY09k?$fbSf1(wi_ivoExxFJ!BX*SPU+wkG~Hta-`AA3;TgnAP2ZKxR(McT(kl`_q-p)@vC4#RRBh?v zmS}|^Y6{yHtKcw)B*Q8NeOV|CMCjK{C;W+S{veg@@8xoUm&<`(E(iIz9Q=DOV}8%& z5FeMZJ}%>YT*mvjbo;m*>f`dyJ}wh{Tn_VbIo!wP2p^aC`M4bEa9OIbi)}uA1A6e0 zH{b$5SKht_r0;a&lD9zG!5_FwIpkPyhsh&|;PMJMfzX|0@EyV*y}{Ovu)n$ggu|Uq z#Kn6O)Il_=3PPcWH}dFy5Lw;jy&7A8H4jcHFZ=CIKJd8enp=X{+2)SbxC+-=7=s^aj7_Bl*D>p7$n}C)XG7@{^ zm)fiuiFfkqk$48+H1|B|yuH5Spc)6y@U_!e;;>;ED*>ahP@9wlyqA*`uok3k#0|$= zXtHKPCv$E*y5I-?&v*<$xW<8#oE!X$uTDXE5B_MPQZa%Hl2BxL-5I!e?hF)Z{p6jQ zmV#22pIK%^p#S!+7?>t2%!jcm#0*VEf9{@%HE1f_-f;k%>y89(co*l)L6Kk+`^`tu z|F66*2Zt%R$+Zg|yv5y~#*PYpiG0#6y2QTy{|cVp3B}8+293j#%~om$8E(V3+lPN z+?l<|B|9Db2hV*6*C70pVK?Sm__gM;EOh~~L37?5$GN0AdA?eW_>DF<4`Fxy^$gC#tX~KJMMLkxdWsU6SS7`E1|Lv%NbvVGZa)%jW0?JOtR% z=IfWRz`|BGFP4HTY;E(B@9~<2em2j&j!#(VZ}X*JP&O4{^CwMs9x>47ZMX0R#5Oj^ zgGxkfYx6p#GA#_U+456Y5QA<0F~D)!*?h6BBE%4zO*@sKFx2L=+HthaUBgw8lvHjQ zp%y3%lSpT0s=duKyE#s{&42CgI2~-h+{1AqY>vEFy{()k(Ob#u;1zC+R3hS6xw@~^ z1YYB5{gsIMb+gN@T>NYjR$}Pl5zwN=q~Y@Sc|!Bad&8NH;JR3K63yfp7-DuLD1ScU zmN9JcPI7`X8JX&x3}6xZAvCk@7h!iwyM2YI{UbD+9ku&s-d^dI{5J1x7RtIrYfV-D3U_D@eniD9+^Ko&bjPXCygJ!&c4@6r*I@fbMfHp6 z-`A{6cg35I>8`fsr*v0{*_!SOGBxS0P}3^I^={DMLBDIr15HJStAn|a;kv?=SuO)6 XHOrO6$G59uFo{{NHasQU)dc?qEqgd> delta 3213 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 Bt55&{ diff --git a/integration-tests/validation/src/main/assets/figma/VariantInteractionsTestDoc_WcsgoLR4aDRSkZHY29Qdhq.dcf b/integration-tests/validation/src/main/assets/figma/VariantInteractionsTestDoc_WcsgoLR4aDRSkZHY29Qdhq.dcf index 99807033f576f2434b8587bc8298ac1e5338acc5..1bc7f2cd92c823297dbc546f0f3b3699810e1fcb 100644 GIT binary patch delta 729 zcmYk4+e_3@5XYU_--dVzw8YD@wm(x03fz5((3IW4RQ!2+s1QQkN=lYYDh&d`K!ea# zY0?d}t5()}NvD;{)=TE5uIr`jYMC#AFZKsmTE|}@9XJnj&YACgzB7kAHQcFb%*Q7( z<;BNRZhRuIhUtL1sxqi(%uc^{htL4#VvkHY8VhG@EC`ReQ9F(BoD2QWAPn$Kz&yfB zYOq~k-PUD*Q7$WUAhm>=;1T;moA7Ex0(jUMVM96=X2cPhWYaD(m{LToE#hHRCZ&0T zNvX4Qm2Mg6>v%Ai>)R1taFihs(Jj-C6r%aJf3uSA9DAt+v7sKA2K^qvIywGzU>6 z(3uvs|JV(HsqV?G#<3qn_qKuD^C%f;W6<+JX319k*c4-?(OTYqkXQ zV(cR69i@BJB%Wz2mEb+6bcloxn({;?6b+bFl-Pbl4J`iqiH6D7=kR75@`*KysQhoh+GP9 z{)Alw-UMpSUNp`8%QAItQ?oxcXQj2Yw7;vMpW_#J;J`WWInVn(&%?uQDsEHN6<}DV z6IKi5TK9MM<{`e5>A1?tIVvZ@d#+Q55SFyT$O!Az|riNgPHct&9j?XVs zLmEvN>d0%~L1BXqhh*~E9Tcq6a+7^8!Y~K-MG#iGJ%bR|*qJHBR}|)AR3?3^lX6sA zvb1IkB|^6E?opZwR>3Ep?`T4bxDD`#f4Q{?BUBW7hCL-$C3q|>Z9sU!wdG3^j0!s^ z5vKXTg?NM+YR|Yv$<;;*Sv1_9vJAXbc^ToEG8bpJ$WfEsrTp9N(XiiIf?Vf`06Z6L z8xdZRY2X?sSBq&cxpPQVUa_MF)$m$aEpBr(81O0Zjs^{1zfml~Jf93TA}%ON5UL6` zpV@IMM}jvZ5dySGS)&Sw!z~^OBAj_g0G76FU`uPa1aF1(6@;fed@q1FD3dKemAT7@ z6xXMRDL&QXM{@M&q3i!~wm%C#vuQw>`$bS4N9p&VpKPAqrv3*ErzbA} diff --git a/integration-tests/validation/src/main/assets/figma/VariantPropertiesTestDoc_4P7zDdrQxj7FZsKJoIQcx1.dcf b/integration-tests/validation/src/main/assets/figma/VariantPropertiesTestDoc_4P7zDdrQxj7FZsKJoIQcx1.dcf index b7d2dabe2c9065c74742e8e2d47f2f39551079e4..f50fde865445b41243b537b7c9f5e06d32554589 100644 GIT binary patch delta 1943 zcmZuxe^l1h9qxJfzCgmu3phcP3HPg_mgcM2rpdImWz#Z`Hr&*u zh!bz??i7Na3gf7u=LWYQ9CABHPdTv@v*iyWW@;oXVM?nUx%b3|AGk*s1H|{|1aO zo8Ce(^7>PQ!tkns-B$CzSIq0Wz_dZ8{DvaH#CR>HBs(gj~Oz20d${b!6y7Qnt&?fZO zLr*zu7uu;g;qaeAH@@)!<*Z}FnB~ffW2w6Q*m&X>`onh)IAOEh7+KWVPruM`-oYIG zbYmqkR}cN5ipbXQeYltM#k#RvN$*5^=Oz(k!8M7EGsU{}C zkAPX8fS0Lq2Vp9cT$#Q0-rxw>QJ7{Xr@$Izfc9)CWe7Je2?0JHx`f%Cggc29_7;+A z*>J>iY^>US3e#(c1iy+i8E2qEJ8`(jY#5ID#6(k97#zjCQFxGxdQ_CBn`X)Cv#aG5 z?=JQ5Xf$B4N%mtO(MMj|HQVg*1j|L4j&XR+LG-@DYFI>oa4nJeE`spk5Wpg<4Z5-2opQ4fEshhDgM3DuIBR*o6wxtZu2#z$R=K=aMy z38?Ba9Jn350?rDVv**%drknFikW4(NI}Y0W4w-}g7_BVZT;rb_r0(ybJm!BWkNuXi zY`Nj6=L?X+1+Ho;upK>D01!FmqvdFJY@Lv3SZJoN#%W@e9F;GFy$OffeGLIMV<;#ohc|n6_u_1oMh8%Z_75XqM#VxRGj7ITDemV(UYp+y^SB z0`H=~8LEtc zL?t}Lug#!NoN%z(v~}4qQTxXtS_R4x&2C}jYltGh5oS*PM0ssVlxrn)^8>XL_vDk+>9YE?Ls n)vVx8NjS3=BkaGja7L<*;M(vA#;dFdCa8NNm}Z`c;57ahu41e0 delta 1914 zcmY+Ec~sR!9L2j|<^jP21X5&C-fuJ&mwbVH23anlEl^4#B)E&=LTO^Tpt&RKq|+Juuv+Hxv8ihE{?W}Qk;cmh(2GOBsJryk!wzw>)@elvGI-+S*t;d@Z{7N=1b zFDZ2HEf_+Wp^j4%iBHom>xT94hAbL`HtK-Se2DG|c2Sj*Dl(G&&2!eix9}xIdHgU@ znHC~G@eLCVP2=FNw%Yd)?CR;DOGFQHS-uZN>R`xeP%PIgKEhfO9m2x#g6fgrN5~di z?H5&a#At?@<`YSn^?u?c8)mCHT_n*QE;5rRs*L1c80B!WD`k@FbXApNx8X%~EN-C< zFUjEb_+CUuL<;9*f0Z=oJfkK{^-Q>z=nqSj*=t+3r#~%~6tsb;*-}WHXrsR@mD9z% z|83nl;-+=i5%iCxj>o-fqZUi-9XMI-8937>VsZkIq@t$<5Rz4|tSb!9=(P(_KzMe2 zcL?!GR-_E7HyqM)9$*-)OUSIz7%tLs9}zWmfogj0W`-1HTV(jW!bQ70XGuYz>Xa8p z^eR_lmu)0k%GHhKXFi76gfa>%-_}F6Lc#sJYjTkojtNQzJvJD*L;Pus|iW{7SgLsyn6< zy0`}QA<@5<%(lUyU$DWK{Qk4N?{WV$`r=K7d$eVTxdn7&Fw8Ybe-;XJ4=7YbJPHGtuoD`QC8!pinLjNr%2U+y&`A zehZSy+o=m5#8_LX$eb`#RNC4iPMeT zIKrq0*VmfxUTbh=(e&tw9qJ3_VF8TtdogZzzULnc6W-!@u6cY>| zlkaJS>FzYU!ePV&$*faoLt$KQK4rvgI^~*Wdu`INl_A`n1VrdF7fb?aIM+)q!4${{ zt_|^343B$YC%RzoB^v2LaOfJwGa7XZ!4nMwJ=&1;G`Map&FlrEVMb(X(-Q;6*7V-`NP(Y-R&hdS8f QygY%39n?o>`_MD=Kgp1p8UO$Q diff --git a/integration-tests/validation/src/main/assets/figma/VectorRenderingTestDoc_Z3ucY0wMAbIwZIa6mLEWIK.dcf b/integration-tests/validation/src/main/assets/figma/VectorRenderingTestDoc_Z3ucY0wMAbIwZIa6mLEWIK.dcf index 03e9f85b6f4b02169b26f6c196d4a58329b72c2a..d39eb89027a839a49e85e38a28c9b9338d4bc246 100644 GIT binary patch delta 771 zcmX9(drZz@6!x6={Z)pvv@qtYm(9vDq^!ckG*)g|mVIWT&0m(eH2$z=jm^fizGW_3 zv$=E=<=`k0g$j{!`Q%=?Uqa|2m)~#BKhLvs&hwn-WH(#c%~nn_DJ@7*@myb>-lyI=Cj&OpXg(eb8Iec7zFHUmYgz*Zec+JEK3T3=^a=b$M zk-JkZoaW}3wFKta>0>RN;g#{QaF$mk*l>gq!TjE7G{d4F_y!O2;0OdN`fTLnD2H?!sTqS_qAx}+hGL|muSUG%9P-Ub*LcJebs32cN2;Rl zMsgzHujq%7!;=uA=%+1@M2wwm_;AAJA- delta 770 zcmX9(drZz@6z)0i`>QV{sia)`s@G=KGNeo{D^_E2AFF-MN^SnK3^o3+W{u6pYFg&9 zSzC-WRy*dEF;rCe$QShqUEOa<=%VoZ&H3kf_MCH`^PD1=QRFg85^=j`@fY9@M^Ud0 zb?ocow4t6m0^4k8;F=k^gu5JUZzSB~&WP27Mvk84?}a8_95Y*>nRDjE2;Ar5dC39~ zDxNGb@Q_`LwiBG3xI`Iv#9NbL;4x>Vn$W`AR>uoG;S*~cC0v}fsgTgh-J8=0PdPR{ zTHqO{J3bp|cxTZvf$q|sML}GD$b6xP`wv$V zdims$i2{9mzW5;FHOC$sAiQCFS*65VZa!(kJKlY!O5#1+E3Oefu=`vs;UgcraGmgp z*Hkr0eCFV46TWcQm1c>rTv^*r=;s4BO!&qbx7>sQo?myD@STSn!UP6+YE!;}AAHnV zVBjaq))E81xXitcFvPv32lXtL7d36>I|v^^2Ef&!K9SZc)xQhH&M6=RCh`<7ci!AiHL zSUyvg?ptYXg(z*LSw5jkC#^FTOw-vLQ7$lD(-vG3n4zmPFbK@lXB~+2M3`>O#zFzR J{+kOa{{fux4%q+z diff --git a/proto/definition/plugin/meter_data.proto b/proto/definition/plugin/meter_data.proto index 53a0eafd1..175a529c9 100644 --- a/proto/definition/plugin/meter_data.proto +++ b/proto/definition/plugin/meter_data.proto @@ -68,6 +68,13 @@ message ProgressMarkerMeterData { float end_y = 8; } +// Schema for progress vector data that we write to serialized data +message ProgressVectorMeterData { + bool enabled = 1; + bool discrete = 2; + float discrete_value = 3; +} + // A container message that holds one of the meter data types (rotation, arc, // progress bar, or progress marker). message MeterData { @@ -76,5 +83,6 @@ message MeterData { ArcMeterData arc_data = 2; ProgressBarMeterData progress_bar_data = 3; ProgressMarkerMeterData progress_marker_data = 4; + ProgressVectorMeterData progress_vector_data = 5; } } diff --git a/reference-apps/tutorial/app/src/main/assets/figma/TutorialDoc_3z4xExq0INrL9vxPhj9tl7.dcf b/reference-apps/tutorial/app/src/main/assets/figma/TutorialDoc_3z4xExq0INrL9vxPhj9tl7.dcf index e7a446eab7eddbc9355c2997a39342e83474b468..fba68f76ccc4bd9661caf8c7f1a19ede03043fe7 100644 GIT binary patch delta 745 zcmZ9KT}YE*6vy9lo~@Z5(>X13YkoDI-&&e2t)*?LAyg`XADN~vQHsG**ix_vEDf-a2x5FF%=|!YfL}{iN2c(c*8Vm0OW!AW(2_za|eQf zZ5CO8k#D4A3wqFK;U;&SpodKs{*-=FV2nh6y)N4FR`Zy{V}P9;$qpgJa;Fmn#BrCa zMUZ(q4=ob?8F6ywv<)GdpIm=|V4d~e6p+Hc@d{x;Ns=fc=c8Ss*K!_(Wj87}Rp5FdSE`IqF;2`I|Y8Ft%!NpdDL;R69jo{|hcS}fe zmlY0kuuFxg=Fi>p2su338;iJ41Lm+iXaJ`Uo2$d->98&xHeZJ=&|tAp&vSDmWPl<) z&tfgl5;f0eK@d}jshU>WFdZScuZ15M^#knE_3qa7rs;b3XnG-?Yuq+Lq9mCw)iesC ziOhQq4k)FmklLauq;c8IYctpWOW^8I&qcYM*H76I_VebMa|j2xy>$wqg1?;&nsm2G zzI;5cwS~95zW}^?Q+#?;PN+?(R8K1|s*O5mLMb9^)J|=RgG!^B6jbcQN(B`vW%NTy JqVv(y{{Uh2?=1iT delta 719 zcmX|-T}YE*6vubY^RAgrx2chB^HpcobZTnpGBY#Fq!45oF+bATmehucsqliRT}4J< z97v=O3JEC)t0UqF@`Ji-xAp2pbRT8iL{JyK?V%ocE*|**pWivZ1r`e|rduc$SHa7U z_;Z9}UVn8HY0jJpR$elvBc_|^o27)eEMp2}aLgJ&u<=SpCxV?_j)(vUU(5Cg$mFh< zE&*A*>g*7ZP1Z!1C)5T7cJPYl9#Y}FgJVVCkw%|5c);5v2vU6LO#V(=mU{uxFsc5QdCLFla%}qN z85H1W`^>rm2iaBr6rpx*{DFW&Jn<+X=>4+$c8dx*v>DW1eDWjgVr$QJq-Q=Kq>z24 zo2L9Xc%`%xV7siRChKWNy;>;7#934sa6%oYwPhn5CP!T3*}$?wms@Szdrm_*!kfWL zGv$VD?ChCA+kYwTL!k@NW88Y_CqNT7M*{+m^Xx!7!U_I5_}dK4{CRW{vr_+g8H$9Z zmQsEb3L=!T8a7rhXYJw|Drm$g