From 49f2537d745243647f9b2ee8cd3f78682c6b6766 Mon Sep 17 00:00:00 2001 From: Miguel Angel Simon Sierra Date: Wed, 30 Sep 2026 15:24:09 -0700 Subject: [PATCH 1/9] fix(studio): move and nudge an element without GSAP by its own CSS translate --- .../src/components/editor/PropertyPanel.tsx | 5 +- .../editor/domEditOverlayStartGesture.ts | 2 + .../editor/manualOffsetDrag.test.ts | 70 ++++++++++++ .../src/components/editor/manualOffsetDrag.ts | 85 ++++++++------ .../src/components/editor/plainTranslate.ts | 50 ++++++++ .../editor/propertyPanelTransformCommit.ts | 5 +- .../src/components/editor/useDomEditNudge.ts | 2 +- .../studio/src/hooks/gsapRuntimeBridge.ts | 19 +--- .../studio/src/hooks/gsapRuntimeKeyframes.ts | 38 +++++++ .../src/hooks/useDomGeometryCommit.test.tsx | 47 +++++++- .../src/hooks/useGsapAwareEditing.test.tsx | 107 +++++++++++++++--- .../studio/src/hooks/useGsapAwareEditing.ts | 44 +++++-- 12 files changed, 391 insertions(+), 83 deletions(-) create mode 100644 packages/studio/src/components/editor/plainTranslate.ts diff --git a/packages/studio/src/components/editor/PropertyPanel.tsx b/packages/studio/src/components/editor/PropertyPanel.tsx index 53fa5f1b4f..a3b9ce63ec 100644 --- a/packages/studio/src/components/editor/PropertyPanel.tsx +++ b/packages/studio/src/components/editor/PropertyPanel.tsx @@ -3,7 +3,8 @@ import { memo, useMemo, useRef, useState } from "react"; import { Move } from "../../icons/SystemIcons"; import { InspectorHeaderActions } from "./InspectorHeaderActions"; import { useStudioShellContext } from "../../contexts/StudioContext"; -import { readStudioBoxSize, readStudioPathOffset, readStudioRotation } from "./manualEdits"; +import { readStudioBoxSize, readStudioRotation } from "./manualEdits"; +import { readMoveOffset } from "./plainTranslate"; import { buildElementInfoText, EMPTY_STYLES, @@ -199,7 +200,7 @@ export const PropertyPanel = memo(function PropertyPanel(props: PropertyPanelPro // selection) so the Timing section shows for pure-GSAP elements with no data-start. const sections = resolveEditingSections(domEditSelectionToFacts(element, gsapAnimations.length)); const showEditableSections = element.capabilities.canEditStyles && sections.style; - const manualOffset = readStudioPathOffset(element.element); + const manualOffset = readMoveOffset(element.element); const manualSize = readStudioBoxSize(element.element); const resolvedWidth = manualSize.width > 0 diff --git a/packages/studio/src/components/editor/domEditOverlayStartGesture.ts b/packages/studio/src/components/editor/domEditOverlayStartGesture.ts index 8cba144431..be9fe3d05c 100644 --- a/packages/studio/src/components/editor/domEditOverlayStartGesture.ts +++ b/packages/studio/src/components/editor/domEditOverlayStartGesture.ts @@ -70,6 +70,7 @@ export function startGroupDrag( selection: item.selection, element: item.element, rect: item.rect, + gesture: "drag", }); if (!result.ok) { restoreManualOffsetDragMembers(members); @@ -198,6 +199,7 @@ export function startGesture( selection: sel, element: sel.element, rect, + gesture: "drag", }); if (!result.ok) { opts.onBlockedMoveRef.current(result.selection); diff --git a/packages/studio/src/components/editor/manualOffsetDrag.test.ts b/packages/studio/src/components/editor/manualOffsetDrag.test.ts index 0edbd30f70..75b61b57d7 100644 --- a/packages/studio/src/components/editor/manualOffsetDrag.test.ts +++ b/packages/studio/src/components/editor/manualOffsetDrag.test.ts @@ -5,6 +5,7 @@ import { resumeGsapTimelines, applyManualOffsetDragDraft, applyManualOffsetDragMatrix, + applyManualOffsetNudgeDraft, createManualOffsetDragMember, endManualOffsetDragMembers, invertManualOffsetDragMatrix, @@ -566,3 +567,72 @@ describe("resumeGsapTimelines", () => { expect(() => resumeGsapTimelines(element)).not.toThrow(); }); }); + +describe("a move of an element GSAP does not position", () => { + function plainBox(options: { gsapLoaded?: boolean } = {}) { + const window = new Window(); + const element = window.document.createElement("div"); + window.document.body.append(element); + element.style.setProperty("translate", "40px 30px"); + // A rect that never moves: the probe falls back to the 1:1 preview-scale mapping. + element.getBoundingClientRect = () => new window.DOMRect(10, 20, 100, 50); + const gsapCalls: string[] = []; + if (options.gsapLoaded) { + Object.assign(window, { + gsap: { set: () => gsapCalls.push("set"), getProperty: () => gsapCalls.push("read") }, + }); + } + const member = (gesture: "drag" | "nudge" = "drag") => { + const result = createManualOffsetDragMember({ + key: "box", + selection: { element } as never, + element, + rect: { left: 10, top: 20, width: 100, height: 50, editScaleX: 1, editScaleY: 1 }, + gesture, + }); + if (!result.ok) throw new Error(result.reason); + return result.member; + }; + return { window, element, gsapCalls, member }; + } + + it("drafts and drops the element's own translate in plain px, never touching GSAP", () => { + const { element, gsapCalls, member } = plainBox({ gsapLoaded: true }); + const m = member(); + expect(m.plainTranslate).toBe(true); + applyManualOffsetDragDraft(m, 90.25, 60); + expect(element.style.getPropertyValue("translate")).toBe("130.25px 90px"); + expect(applyManualOffsetDragCommit(m, 90.25, 60)).toEqual({ x: 130.25, y: 90 }); + endManualOffsetDragMembers([m]); + expect(element.style.getPropertyValue("translate")).toBe("130.25px 90px"); + expect(gsapCalls).toEqual([]); + expect(element.hasAttribute("data-hf-drag-gsap-base-x")).toBe(false); + }); + + it("starts a second move where the first dropped, while the first save is still in flight", () => { + const { member } = plainBox(); + const first = member(); + applyManualOffsetDragCommit(first, 90, 60); + const second = member(); + expect(second.initialOffset).toEqual({ x: 130, y: 90 }); + expect(applyManualOffsetDragCommit(second, 40, 0)).toEqual({ x: 170, y: 90 }); + }); + + it("nudges from the element's translate", () => { + const { member } = plainBox(); + expect(applyManualOffsetNudgeDraft(member("nudge"), { x: 5, y: -1 })).toEqual({ x: 45, y: 29 }); + }); + + it("keeps the GSAP writer once GSAP renders the element's transform", () => { + const { element, member } = plainBox({ gsapLoaded: true }); + Object.assign(element, { _gsap: { renderTransform: () => {} } }); + expect(member().plainTranslate).toBe(false); + }); + + it("keeps the GSAP writer for an element a timeline hold positions", () => { + const { window, element, member } = plainBox(); + const hold = { targets: () => [element], vars: { x: 40 }, duration: () => 0 }; + Object.assign(window, { __timelines: { main: { getChildren: () => [hold] } } }); + expect(member().plainTranslate).toBe(false); + }); +}); diff --git a/packages/studio/src/components/editor/manualOffsetDrag.ts b/packages/studio/src/components/editor/manualOffsetDrag.ts index 22a16bd0b0..1e87cd54e7 100644 --- a/packages/studio/src/components/editor/manualOffsetDrag.ts +++ b/packages/studio/src/components/editor/manualOffsetDrag.ts @@ -11,6 +11,8 @@ import { type StudioPathOffsetSnapshot, } from "./manualEdits"; import { computeDraggedGsapPosition } from "../../hooks/draggedGsapPosition"; +import { gsapWritesPosition } from "../../hooks/gsapRuntimeKeyframes"; +import { readTranslatePx, writeTranslatePx } from "./plainTranslate"; interface OffsetDragGsap { set: (el: Element, vars: Record) => void; @@ -97,6 +99,8 @@ export interface ManualOffsetDragMember { selection: DomEditSelection; element: HTMLElement; initialOffset: { x: number; y: number }; + /** The move writes the element's own inline `translate`; offsets are then absolute translate px. */ + plainTranslate: boolean; /** * The element's GSAP x/y at gesture start, captured in JS so a mid-drag * re-render (which reverts inline style + wipes the `data-hf-drag-gsap-base-*` @@ -242,22 +246,23 @@ function readTransformWDivisor(element: HTMLElement): number { export function measureManualOffsetDragScreenToOffsetMatrix( element: HTMLElement, initialOffset: { x: number; y: number }, - options: { probeSize?: number; scaleX?: number; scaleY?: number } = {}, + options: { probeSize?: number; scaleX?: number; scaleY?: number; plainTranslate?: boolean } = {}, ): { ok: true; matrix: ManualOffsetDragMatrix } | { ok: false; reason: string } { const probeSize = options.probeSize ?? DEFAULT_OFFSET_PROBE_PX; if (!Number.isFinite(probeSize) || probeSize <= 0) { return { ok: false, reason: "Invalid movement probe size." }; } + const draw = options.plainTranslate ? writeTranslatePx : applyStudioPathOffsetDraft; const snapshot = captureStudioPathOffset(element); try { - applyStudioPathOffsetDraft(element, initialOffset); + draw(element, initialOffset); const origin = getRectCenter(element); if (!origin) { return { ok: false, reason: "Element has no measurable box." }; } - applyStudioPathOffsetDraft(element, { + draw(element, { x: initialOffset.x + probeSize, y: initialOffset.y, }); @@ -266,7 +271,7 @@ export function measureManualOffsetDragScreenToOffsetMatrix( return { ok: false, reason: "Element X movement could not be measured." }; } - applyStudioPathOffsetDraft(element, { + draw(element, { x: initialOffset.x, y: initialOffset.y + probeSize, }); @@ -332,24 +337,27 @@ export function createManualOffsetDragMember(input: { selection: DomEditSelection; element: HTMLElement; rect: ManualOffsetDragRect; + /** A move or nudge; a resize's anchor member keeps the legacy offset channel. */ + gesture?: "drag" | "nudge"; }): ManualOffsetDragMemberResult { + const plainTranslate = !!input.gesture && !gsapWritesPosition(input.element); // Base the drag on the offset ACTUALLY applied, never the raw (possibly dormant) // var — see readAppliedStudioPathOffset. This keeps the commit purely relative // (applied + delta) so a stale offset can't fling the element off-screen. - const initialOffset = readAppliedStudioPathOffset(input.element); - input.element.setAttribute("data-hf-drag-initial-offset-x", String(initialOffset.x)); - input.element.setAttribute("data-hf-drag-initial-offset-y", String(initialOffset.y)); - + const initialOffset = plainTranslate + ? readTranslatePx(input.element) + : readAppliedStudioPathOffset(input.element); const win = input.element.ownerDocument.defaultView as | (Window & { gsap?: { getProperty?: (el: Element, prop: string) => number }; __timelines?: Record void; paused?: () => boolean }>; }) | null; - const gsapX = win?.gsap?.getProperty?.(input.element, "x") || 0; - const gsapY = win?.gsap?.getProperty?.(input.element, "y") || 0; - input.element.setAttribute("data-hf-drag-gsap-base-x", String(gsapX)); - input.element.setAttribute("data-hf-drag-gsap-base-y", String(gsapY)); + // getProperty makes GSAP bake the CSS translate into its transform, so a plain move never reads it. + const gsapX = (!plainTranslate && win?.gsap?.getProperty?.(input.element, "x")) || 0; + const gsapY = (!plainTranslate && win?.gsap?.getProperty?.(input.element, "y")) || 0; + const baseGsap = { x: gsapX, y: gsapY }; + if (!plainTranslate) stampGestureBase(input.element, initialOffset, baseGsap); if (win?.__timelines) { const paused: string[] = []; @@ -373,8 +381,8 @@ export function createManualOffsetDragMember(input: { const measured = measureManualOffsetDragScreenToOffsetMatrix(input.element, initialOffset, { scaleX: input.rect.editScaleX, scaleY: input.rect.editScaleY, + plainTranslate, }); - const baseGsap = { x: gsapX, y: gsapY }; if (!measured.ok) { // Fallback: when GSAP transforms interfere with probe measurement, use // the preview scale as an approximation. The commit path reads the actual @@ -390,6 +398,7 @@ export function createManualOffsetDragMember(input: { selection: input.selection, element: input.element, initialOffset, + plainTranslate, baseGsap, initialPathOffset, gestureToken, @@ -406,6 +415,7 @@ export function createManualOffsetDragMember(input: { selection: input.selection, element: input.element, initialOffset, + plainTranslate, baseGsap, initialPathOffset, gestureToken, @@ -428,18 +438,25 @@ function resolveManualOffsetDragMemberOffset( }); } +/** Draws the offset where the commit writes it: the inline translate, else GSAP, else the legacy var. */ +function drawMemberOffset( + member: ManualOffsetDragMember, + offset: { x: number; y: number }, + commit: boolean, +): void { + if (member.plainTranslate) writeTranslatePx(member.element, offset); + else if (applyOffsetDragDraftViaGsap(member.element, offset, member.baseGsap)) return; + else if (commit) applyStudioPathOffset(member.element, offset); + else applyStudioPathOffsetDraft(member.element, offset); +} + export function applyManualOffsetDragDraft( member: ManualOffsetDragMember, dx: number, dy: number, ): { x: number; y: number } { const offset = resolveManualOffsetDragMemberOffset(member, dx, dy); - // Position is single-sourced on the GSAP timeline; preview through gsap.set so - // the live draft matches the committed `tl.set`/keyframe. CSS draft only when - // gsap is unavailable (no preview iframe runtime). - if (!applyOffsetDragDraftViaGsap(member.element, offset, member.baseGsap)) { - applyStudioPathOffsetDraft(member.element, offset); - } + drawMemberOffset(member, offset, false); return offset; } @@ -451,25 +468,19 @@ export function applyManualOffsetDragDraft( * the element flies off-screen the instant you drop it. The member holds the * true gesture-start values in JS, immune to the re-render. */ -function restampManualOffsetDragGestureBase(member: ManualOffsetDragMember): void { - member.element.setAttribute("data-hf-drag-gsap-base-x", String(member.baseGsap.x)); - member.element.setAttribute("data-hf-drag-gsap-base-y", String(member.baseGsap.y)); - member.element.setAttribute("data-hf-drag-initial-offset-x", String(member.initialOffset.x)); - member.element.setAttribute("data-hf-drag-initial-offset-y", String(member.initialOffset.y)); +function stampGestureBase(el: HTMLElement, initialOffset: Point, baseGsap: Point): void { + el.setAttribute("data-hf-drag-gsap-base-x", String(baseGsap.x)); + el.setAttribute("data-hf-drag-gsap-base-y", String(baseGsap.y)); + el.setAttribute("data-hf-drag-initial-offset-x", String(initialOffset.x)); + el.setAttribute("data-hf-drag-initial-offset-y", String(initialOffset.y)); } function applyManualOffsetCommitValue( member: ManualOffsetDragMember, offset: { x: number; y: number }, ): { x: number; y: number } { - restampManualOffsetDragGestureBase(member); - // Optimistic visual through the GSAP channel (same as the live draft and the - // committed `tl.set`), so the element holds its dropped position until the - // source mutation soft-reloads — no transient CSS `--hf-studio-offset` write. - // CSS apply only when gsap is unavailable. - if (!applyOffsetDragDraftViaGsap(member.element, offset, member.baseGsap)) { - applyStudioPathOffset(member.element, offset); - } + if (!member.plainTranslate) stampGestureBase(member.element, member.initialOffset, member.baseGsap); + drawMemberOffset(member, offset, true); return offset; } @@ -496,9 +507,7 @@ export function applyManualOffsetNudgeDraft( x: member.initialOffset.x + delta.x, y: member.initialOffset.y + delta.y, }; - if (!applyOffsetDragDraftViaGsap(member.element, offset, member.baseGsap)) { - applyStudioPathOffsetDraft(member.element, offset); - } + drawMemberOffset(member, offset, false); return offset; } @@ -514,7 +523,9 @@ export function applyManualOffsetNudgeCommit( function restoreManualOffsetDragMember(member: ManualOffsetDragMember): void { restoreStudioPathOffset(member.element, member.initialPathOffset); - getOffsetDragGsap(member.element)?.set(member.element, { ...member.baseGsap }); + if (!member.plainTranslate) { + getOffsetDragGsap(member.element)?.set(member.element, { ...member.baseGsap }); + } endStudioManualEditGesture(member.element, member.gestureToken); } @@ -548,7 +559,7 @@ export function endManualOffsetDragMembers(members: ManualOffsetDragMember[]): v member.element.removeAttribute("data-hf-drag-gsap-base-y"); // Do NOT clearProps:"transform" — that nukes the committed GSAP position // and causes a visual snap-back before the soft reload re-applies it. - const gsapOwnsPosition = Boolean(getOffsetDragGsap(member.element)); + const gsapOwnsPosition = !member.plainTranslate && Boolean(getOffsetDragGsap(member.element)); // Migration: when GSAP owns the position (the committed value lives in the // GSAP transform), the legacy `--hf-studio-offset` CSS channel is obsolete. // Clear it on the LIVE element — otherwise the leftover `translate: diff --git a/packages/studio/src/components/editor/plainTranslate.ts b/packages/studio/src/components/editor/plainTranslate.ts new file mode 100644 index 0000000000..a3cb9c5373 --- /dev/null +++ b/packages/studio/src/components/editor/plainTranslate.ts @@ -0,0 +1,50 @@ +import { roundTo3 } from "../../utils/rounding"; +import { gsapWritesPosition } from "../../hooks/gsapRuntimeKeyframes"; +import { readStudioPathOffset } from "./manualEditsDom"; +import { splitTopLevelWhitespace } from "./manualEditsStyleHelpers"; +import type { PatchOperation } from "../../utils/sourcePatcher"; + +type Point = { x: number; y: number }; + +const PX = /^-?\d*\.?\d+(?:e[-+]?\d+)?px$/i; + +// Chrome resolves %, calc(), min()/max()/clamp() and em inside a transform function to a matrix. +function resolveInTransform(el: HTMLElement, x: string, y: string): Point { + const style = el.style; + const saved = [style.getPropertyValue("transform"), style.getPropertyPriority("transform")]; + style.setProperty("transform", `translate(${x}, ${y})`, "important"); + const view = el.ownerDocument.defaultView; + const matrix = new DOMMatrixReadOnly(view?.getComputedStyle(el).transform ?? "none"); + style.setProperty("transform", saved[0] ?? "", saved[1] ?? ""); + return { x: matrix.m41, y: matrix.m42 }; +} + +/** The element's CSS `translate` in px, as it renders now. */ +// ponytail: a 3-value translate loses its z on the next move; keep z when a fixture needs it. +export function readTranslatePx(el: HTMLElement): Point { + const computed = () => el.ownerDocument.defaultView?.getComputedStyle(el).translate ?? "none"; + const value = el.style.getPropertyValue("translate") || computed(); + if (value === "none") return { x: 0, y: 0 }; + const [x = "0px", y = "0px"] = splitTopLevelWhitespace(value); + if (PX.test(x) && PX.test(y)) return { x: Number.parseFloat(x), y: Number.parseFloat(y) }; + return resolveInTransform(el, x, y); +} + +/** Plain px only: GSAP's CSSPlugin splits `translate` on spaces and drops a calc(). */ +export function formatTranslatePx(p: Point): string { + return `${roundTo3(p.x)}px ${roundTo3(p.y)}px`; +} + +/** The source patch that saves a move: the same literal the live element shows. */ +export function translatePatch(p: Point): PatchOperation & { value: string } { + return { type: "inline-style", property: "translate", value: formatTranslatePx(p) }; +} + +export function writeTranslatePx(el: HTMLElement, p: Point): void { + el.style.setProperty("translate", formatTranslatePx(p)); +} + +/** The position the panel shows and edits: the translate a move writes, unless GSAP positions it. */ +export function readMoveOffset(el: HTMLElement): Point { + return gsapWritesPosition(el) ? readStudioPathOffset(el) : readTranslatePx(el); +} diff --git a/packages/studio/src/components/editor/propertyPanelTransformCommit.ts b/packages/studio/src/components/editor/propertyPanelTransformCommit.ts index 92e71a2b39..c11f3e60cb 100644 --- a/packages/studio/src/components/editor/propertyPanelTransformCommit.ts +++ b/packages/studio/src/components/editor/propertyPanelTransformCommit.ts @@ -1,5 +1,6 @@ import type { DomEditSelection } from "./domEditingTypes"; -import { readStudioBoxSize, readStudioPathOffset } from "./manualEdits"; +import { readStudioBoxSize } from "./manualEdits"; +import { readMoveOffset } from "./plainTranslate"; import { parsePxMetricValue, type PropertyPanelProps } from "./propertyPanelHelpers"; interface TransformCommitDeps { @@ -73,7 +74,7 @@ export function createTransformCommitHandlers({ ) ) return; - const current = readStudioPathOffset(element.element); + const current = readMoveOffset(element.element); await Promise.resolve( onSetManualOffset(element, { x: axis === "x" ? parsed : current.x, diff --git a/packages/studio/src/components/editor/useDomEditNudge.ts b/packages/studio/src/components/editor/useDomEditNudge.ts index fa76d816bd..85d9f53a6d 100644 --- a/packages/studio/src/components/editor/useDomEditNudge.ts +++ b/packages/studio/src/components/editor/useDomEditNudge.ts @@ -189,7 +189,7 @@ export function useDomEditNudge(params: UseDomEditNudgeParams): { flushNudge: () if (!targets) return null; const members: ManualOffsetDragMember[] = []; for (const target of targets) { - const result = createManualOffsetDragMember(target); + const result = createManualOffsetDragMember({ ...target, gesture: "nudge" }); if (!result.ok) { restoreManualOffsetDragMembers(members); return null; diff --git a/packages/studio/src/hooks/gsapRuntimeBridge.ts b/packages/studio/src/hooks/gsapRuntimeBridge.ts index 6c8448915c..6d43c5828e 100644 --- a/packages/studio/src/hooks/gsapRuntimeBridge.ts +++ b/packages/studio/src/hooks/gsapRuntimeBridge.ts @@ -35,7 +35,7 @@ import { pickClosestToPlayhead, readGsapPositionFromIframe, } from "./gsapPositionDetection"; -import { hasNonHoldTweenForElement } from "./gsapRuntimeKeyframes"; +import { hasNonHoldTweenForElement, POSITION_CHANNELS } from "./gsapRuntimeKeyframes"; import { getAnimationsForElement } from "./gsapElementMatch"; import { animationWritesAnyProperty, @@ -43,22 +43,7 @@ import { type GsapEditOutcome, } from "./gsapEditOutcome"; -// Position channels — used to scope the "has a live position tween?" check so a -// sibling rotation/scale animation never forces a static position hold into the -// keyframe branch (which corrupts it into a frozen duration-0 keyframed tween). -export const POSITION_CHANNELS: string[] = [ - "x", - "y", - "xPercent", - "yPercent", - "left", - "top", - // GSAP normalizes translateX/Y to x/y at play time, but readTween reads the - // AUTHORED shape — include them so a hand-authored translateX/Y position tween - // still counts as a live position tween. - "translateX", - "translateY", -]; +export { POSITION_CHANNELS }; const POSITION_CHANNEL_SET = new Set(POSITION_CHANNELS); const ROTATION_CHANNELS: string[] = ["rotation", "rotationX", "rotationY", "rotationZ"]; diff --git a/packages/studio/src/hooks/gsapRuntimeKeyframes.ts b/packages/studio/src/hooks/gsapRuntimeKeyframes.ts index 9f1bc35220..b144203746 100644 --- a/packages/studio/src/hooks/gsapRuntimeKeyframes.ts +++ b/packages/studio/src/hooks/gsapRuntimeKeyframes.ts @@ -405,6 +405,44 @@ export function hasNonHoldTweenForElement( return !!targetEl && hasNonHoldTween(timelinesOf(iframe), targetEl, channels, compositionId); } +// Position channels — used to scope the "has a live position tween?" check so a +// sibling rotation/scale animation never forces a static position hold into the +// keyframe branch (which corrupts it into a frozen duration-0 keyframed tween). +export const POSITION_CHANNELS: string[] = [ + "x", + "y", + "xPercent", + "yPercent", + "left", + "top", + // GSAP normalizes translateX/Y to x/y at play time, but readTween reads the + // AUTHORED shape — include them so a hand-authored translateX/Y position tween + // still counts as a live position tween. + "translateX", + "translateY", +]; +const MOVE_CHANNELS = [...POSITION_CHANNELS, "motionPath"]; + +/** Whether a live timeline tween or hold writes any of `channels` on `el`. Sync, no fetch. */ +export function gsapWritesChannels(el: Element, channels: string[]): boolean { + const win = el.ownerDocument.defaultView as { __timelines?: Record }; + return Object.values(win?.__timelines ?? {}).some((tl) => + (tl?.getChildren?.(true) ?? []).some( + (tween) => + !!tween.vars && + matchesElement(tween, el) && + (channels.some((ch) => ch in tween.vars!) || keyframeVarsCarryChannel(tween.vars, channels)), + ), + ); +} + +/** GSAP owns this element's position: a tween or hold writes it, or GSAP already renders its + * transform (a CSS translate would then apply twice). Everything else moves by plain CSS. */ +export function gsapWritesPosition(el: Element): boolean { + const cache = (el as { _gsap?: { renderTransform?: unknown } })._gsap; + return !!cache?.renderTransform || gsapWritesChannels(el, MOVE_CHANNELS); +} + /** `hasNonHoldTweenForElement` for an element in hand, read from its own window's timelines. */ export function elementHasNonHoldTween(el: Element, channels?: string[]): boolean { const win = el.ownerDocument.defaultView as { diff --git a/packages/studio/src/hooks/useDomGeometryCommit.test.tsx b/packages/studio/src/hooks/useDomGeometryCommit.test.tsx index 4577d7c8f6..3a867e75cf 100644 --- a/packages/studio/src/hooks/useDomGeometryCommit.test.tsx +++ b/packages/studio/src/hooks/useDomGeometryCommit.test.tsx @@ -16,6 +16,11 @@ vi.mock("../utils/studioTelemetry", () => ({ trackStudioEvent: vi.fn() })); const SOURCE = '
Card
Other
'; +/** GSAP already renders this element's transform, so a move takes the GSAP writer. */ +function gsapPositioned(element: HTMLElement): HTMLElement { + return Object.assign(element, { _gsap: { renderTransform: () => {} } }); +} + /** A warm parse where only another element animates, and a GSAP writer answering `status`. */ function stubServer(status = 200, parseStatus = 200) { const mutations: unknown[] = []; @@ -116,7 +121,8 @@ describe("useDomGeometryCommit, from the package entry", () => { onRotationCommit: hook().commitRotation, }; - const outcome = await overlayCommits.onPathOffsetCommit(makeSelection("card", element), { + const card = makeSelection("card", gsapPositioned(element)); + const outcome = await overlayCommits.onPathOffsetCommit(card, { x: 40, y: 20, }); @@ -132,6 +138,37 @@ describe("useDomGeometryCommit, from the package entry", () => { unmount(); }); + it("saves a GSAP-free move as its inline translate, with no GSAP script and no animation read", async () => { + const urls: string[] = []; + const patches: unknown[] = []; + vi.stubGlobal( + "fetch", + vi.fn(async (input: RequestInfo | URL, init?: RequestInit) => { + const url = String(input instanceof Request ? input.url : input); + urls.push(url); + if (url.includes("/file-mutations/patch-element/")) patches.push(JSON.parse(String(init?.body))); + const body = url.includes("/files/") + ? { content: SOURCE } + : { ok: true, changed: true, matched: true, content: "AFTER", version: "v2" }; + return new Response(JSON.stringify(body), { headers: { "content-type": "application/json" } }); + }), + ); + const { element, recordEdit, hook, unmount } = renderHost(); + + const card = makeSelection("card", element); + await expect(hook().commitPathOffset(card, { x: 130.5, y: 90 })).resolves.toEqual({ ok: true }); + + expect(element.style.getPropertyValue("translate")).toBe("130.5px 90px"); + expect(patches).toEqual([ + expect.objectContaining({ + operations: [{ type: "inline-style", property: "translate", value: "130.5px 90px" }], + }), + ]); + expect(urls.filter((url) => url.includes("gsap"))).toEqual([]); + expect(recordEdit).toHaveBeenCalledTimes(1); + unmount(); + }); + it("keeps the same commits across renders, so the overlay's handlers stay put", () => { stubServer(); const { hook, rerender, unmount } = renderHost(); @@ -148,7 +185,7 @@ describe("useDomGeometryCommit, from the package entry", () => { const { element, recordEdit, hook, unmount } = renderHost({ showToast }); await expect( - hook().commitPathOffset(makeSelection("card", element), { x: 40, y: 20 }), + hook().commitPathOffset(makeSelection("card", gsapPositioned(element)), { x: 40, y: 20 }), ).rejects.toThrow(); expect(recordEdit).not.toHaveBeenCalled(); expect(showToast).toHaveBeenCalledWith(expect.any(String), "error"); @@ -204,7 +241,8 @@ describe("useDomGeometryCommit, from the package entry", () => { const mutations = stubServer(); const { element, recordEdit, hook, unmount } = renderHost(); - const move = hook().commitPathOffset(makeSelection("card", element), { x: 40, y: 20 }); + const card = makeSelection("card", gsapPositioned(element)); + const move = hook().commitPathOffset(card, { x: 40, y: 20 }); await hook().waitForPendingSaves(); expect(mutations).toHaveLength(1); @@ -280,7 +318,8 @@ describe("useDomGeometryCommit, one word of a staggered phrase", () => { offsetLeft: { get: () => 100 + (Number.parseFloat(word.style.left) || 0) }, offsetTop: { get: () => 200 + (Number.parseFloat(word.style.top) || 0) }, }); - return { ...makeSelection("How", word), id: undefined, selector: ".w", hfId: "hf-w0" }; + const selection = makeSelection("How", gsapPositioned(word)); + return { ...selection, id: undefined, selector: ".w", hfId: "hf-w0" }; } it("saves left/top on the dragged word only and never rewrites the shared tween", async () => { diff --git a/packages/studio/src/hooks/useGsapAwareEditing.test.tsx b/packages/studio/src/hooks/useGsapAwareEditing.test.tsx index fbe6469951..362b2eded5 100644 --- a/packages/studio/src/hooks/useGsapAwareEditing.test.tsx +++ b/packages/studio/src/hooks/useGsapAwareEditing.test.tsx @@ -47,6 +47,11 @@ afterEach(() => { vi.clearAllMocks(); }); +/** An element GSAP already renders the transform of, so moves take the GSAP route. */ +function gsapPositioned(tag: string): HTMLElement { + return Object.assign(document.createElement(tag), { _gsap: { renderTransform: () => {} } }); +} + function mountResizeHandler( animations: GsapAnimation[], targetAnimations: GsapAnimation[] = animations, @@ -112,8 +117,14 @@ function mountGroupHandler({ makeFetchFallback, trackGsapInteractionFailure = vi.fn(), stageElementPositionOffset = vi.fn(), + commitPositionPatchToHtml = vi.fn(), }: Pick & - Partial>) { + Partial< + Pick< + AwareEditingParams, + "trackGsapInteractionFailure" | "stageElementPositionOffset" | "commitPositionPatchToHtml" + > + >) { let groupCommit!: (updates: DomEditGroupPathOffsetCommit[]) => Promise; let pathOffsetCommit!: ( selection: DomEditSelection, @@ -131,7 +142,7 @@ function mountGroupHandler({ trackGsapInteractionFailure, stageElementPositionOffset, handleDomBoxSizeCommit: vi.fn(), - commitPositionPatchToHtml: vi.fn(), + commitPositionPatchToHtml, addGsapAnimation: vi.fn(), convertToKeyframes: vi.fn(), setArcPath: vi.fn(), @@ -150,6 +161,75 @@ function mountGroupHandler({ }; } +describe("useGsapAwareEditing moves of an element GSAP does not position", () => { + const translatePatch = (value: string) => [{ type: "inline-style", property: "translate", value }]; + + it("writes its inline translate as drawn, with no GSAP write and no animation read", async () => { + const commitPositionPatchToHtml = vi.fn().mockResolvedValue(undefined); + const gsapCommitMutation = vi.fn(); + const makeFetchFallback = vi.fn(); + const { pathOffsetCommit, root } = mountGroupHandler({ + gsapCommitMutation, + makeFetchFallback, + commitPositionPatchToHtml, + }); + const box = { element: document.createElement("div"), id: "box", selector: "#box" }; + await act(() => pathOffsetCommit(box as unknown as DomEditSelection, { x: 130.25, y: 90 })); + expect(box.element.style.getPropertyValue("translate")).toBe("130.25px 90px"); + expect(commitPositionPatchToHtml).toHaveBeenCalledWith( + box, + translatePatch("130.25px 90px"), + expect.objectContaining({ label: "Move layer" }), + ); + expect(gsapCommitMutation).not.toHaveBeenCalled(); + expect(makeFetchFallback).not.toHaveBeenCalled(); + expect(mocks.drag).not.toHaveBeenCalled(); + act(() => root.unmount()); + }); + + it("puts the live translate back when the save fails", async () => { + const commitPositionPatchToHtml = vi.fn().mockRejectedValue(new Error("offline")); + const gsapCommitMutation = vi.fn(); + const { pathOffsetCommit, root } = mountGroupHandler({ + gsapCommitMutation, + makeFetchFallback: vi.fn(), + commitPositionPatchToHtml, + }); + const box = { element: document.createElement("div"), id: "box", selector: "#box" }; + box.element.style.setProperty("translate", "40px 30px"); + await expect(pathOffsetCommit(box as unknown as DomEditSelection, { x: 1, y: 2 })).rejects.toThrow( + "offline", + ); + expect(box.element.style.getPropertyValue("translate")).toBe("40px 30px"); + act(() => root.unmount()); + }); + + it("writes a GSAP-free group member by translate under the group key, the rest through GSAP", async () => { + mocks.drag.mockResolvedValue({ status: "persisted" }); + const commitPositionPatchToHtml = vi.fn().mockResolvedValue(undefined); + const { groupCommit, root } = mountGroupHandler({ + gsapCommitMutation: vi.fn().mockResolvedValue(undefined), + makeFetchFallback: () => vi.fn().mockResolvedValue([]), + commitPositionPatchToHtml, + }); + const plain = { element: document.createElement("div"), id: "plain", selector: "#plain" }; + const animated = { element: gsapPositioned("div"), id: "anim", selector: "#anim" }; + await act(() => + groupCommit([ + { selection: plain, next: { x: 10, y: 20 } }, + { selection: animated, next: { x: 10, y: 20 } }, + ] as unknown as DomEditGroupPathOffsetCommit[]), + ); + expect(commitPositionPatchToHtml).toHaveBeenCalledWith( + plain, + translatePatch("10px 20px"), + expect.objectContaining({ coalesceKey: expect.stringMatching(/^group-drag:\d+$/) }), + ); + expect(mocks.drag.mock.calls.map((call) => call[0])).toEqual([animated, animated]); + act(() => root.unmount()); + }); +}); + describe("useGsapAwareEditing shared-tween moves", () => { it("saves a single drag through the element's own offset", async () => { mocks.drag.mockResolvedValue({ status: "element-offset" }); @@ -161,7 +241,7 @@ describe("useGsapAwareEditing shared-tween moves", () => { makeFetchFallback: () => vi.fn().mockResolvedValue([]), stageElementPositionOffset, }); - const word = { element: document.createElement("span"), hfId: "w0", selector: ".w" }; + const word = { element: gsapPositioned("span"), hfId: "w0", selector: ".w" }; await act(() => pathOffsetCommit(word as unknown as DomEditSelection, { x: 40, y: 20 })); expect(stageElementPositionOffset).toHaveBeenCalledWith(word, { x: 40, y: 20 }); expect(save).toHaveBeenCalledTimes(1); @@ -182,8 +262,8 @@ describe("useGsapAwareEditing shared-tween moves", () => { makeFetchFallback: () => vi.fn().mockResolvedValue([]), stageElementPositionOffset, }); - const word = { element: document.createElement("span"), hfId: "w0", selector: ".w" }; - const box = { element: document.createElement("div"), id: "box", selector: "#box" }; + const word = { element: gsapPositioned("span"), hfId: "w0", selector: ".w" }; + const box = { element: gsapPositioned("div"), id: "box", selector: "#box" }; await act(() => groupCommit([ { selection: word, next: { x: 40, y: 20 } }, @@ -207,7 +287,7 @@ describe("useGsapAwareEditing anchored resize", () => { const h = mountResizeHandler([humanAnimation], [targetAnimation]); const target = { ...h.selection, - element: document.createElement("div"), + element: gsapPositioned("div"), id: "agent-target", selector: "#agent-target", } as DomEditSelection; @@ -447,11 +527,11 @@ describe("useGsapAwareEditing anchored resize", () => { }); const updates = [ { - selection: { element: document.createElement("div"), id: "a", selector: "#a" }, + selection: { element: gsapPositioned("div"), id: "a", selector: "#a" }, next: { x: 10, y: 10 }, }, { - selection: { element: document.createElement("div"), id: "b", selector: "#b" }, + selection: { element: gsapPositioned("div"), id: "b", selector: "#b" }, next: { x: 10, y: 10 }, }, ] as unknown as DomEditGroupPathOffsetCommit[]; @@ -485,12 +565,12 @@ describe("useGsapAwareEditing anchored resize", () => { }); const updates = [ { - selection: { element: document.createElement("div"), id: "ok", selector: "#ok" }, + selection: { element: gsapPositioned("div"), id: "ok", selector: "#ok" }, next: { x: 10, y: 10 }, }, { selection: { - element: document.createElement("div"), + element: gsapPositioned("div"), id: "blocked", selector: "#blocked", }, @@ -526,7 +606,7 @@ describe("useGsapAwareEditing anchored resize", () => { }); const updates = [ { - selection: { element: document.createElement("div"), id: "a", selector: "#a" }, + selection: { element: gsapPositioned("div"), id: "a", selector: "#a" }, next: { x: 10, y: 10 }, }, ] as unknown as DomEditGroupPathOffsetCommit[]; @@ -551,11 +631,11 @@ describe("useGsapAwareEditing anchored resize", () => { }); const updates = [ { - selection: { element: document.createElement("div"), id: "a", selector: "#a" }, + selection: { element: gsapPositioned("div"), id: "a", selector: "#a" }, next: { x: 10, y: 10 }, }, { - selection: { element: document.createElement("div"), id: "b", selector: "#b" }, + selection: { element: gsapPositioned("div"), id: "b", selector: "#b" }, next: { x: 20, y: 20 }, }, ] as unknown as DomEditGroupPathOffsetCommit[]; @@ -605,6 +685,7 @@ describe("useGsapAwareEditing anchored resize", () => { */ it("applies the anchor when the resize leaves the drop point to the caller", async () => { mocks.resize.mockResolvedValue({ status: "persisted" }); + mocks.drag.mockResolvedValue({ status: "persisted" }); const scale = { propertyGroup: "scale" } as GsapAnimation; const h = mountResizeHandler([scale]); await act(() => h.resize(h.selection, { width: 300, height: 200 }, { x: -50, y: -25 })); diff --git a/packages/studio/src/hooks/useGsapAwareEditing.ts b/packages/studio/src/hooks/useGsapAwareEditing.ts index 5cbc734146..96134b1aae 100644 --- a/packages/studio/src/hooks/useGsapAwareEditing.ts +++ b/packages/studio/src/hooks/useGsapAwareEditing.ts @@ -33,7 +33,8 @@ import { setElementGsapPosition } from "../utils/elementGsap"; import { logResize, logResizeSettle } from "../utils/resizeDebug"; import type { DomEditGroupPathOffsetCommit } from "../components/editor/DomEditOverlay"; import { runGestureTransaction } from "./gestureTransaction"; -import { hasNonHoldTweenForElement } from "./gsapRuntimeKeyframes"; +import { gsapWritesPosition, hasNonHoldTweenForElement } from "./gsapRuntimeKeyframes"; +import { translatePatch } from "../components/editor/plainTranslate"; import { assertGsapEditPersisted, saveMove } from "./gsapEditOutcome"; import type { GsapAnimationFetchOptions } from "./useGsapAnimationFetchFallback"; import type { ElementOffsetStagerDeps } from "./elementOffsetStager"; @@ -46,6 +47,7 @@ import { // Distinct coalesceKey per group drag so consecutive group drags don't fold // into one another's undo entry (module-local counter, not Date.now()). let groupDragCommitCounter = 0; +let plainMoveCounter = 0; function firstPreflightFailure( results: PromiseSettledResult[], @@ -147,12 +149,33 @@ export function useGsapAwareEditing({ [domEditSelection, selectedGsapAnimations, makeFetchFallback], ); + // The one move writer for an element GSAP does not position: its inline translate, as drawn. + const commitPlainTranslate = useCallback( + (selection: DomEditSelection, next: { x: number; y: number }, coalesceKey?: string) => { + const style = selection.element.style; + const before = style.getPropertyValue("translate"); + const patch = translatePatch(next); + const value = patch.value; + style.setProperty("translate", value); + return commitPositionPatchToHtml(selection, [patch], { + label: "Move layer", + coalesceKey: coalesceKey ?? `move:${++plainMoveCounter}`, + coalesceMs: Number.POSITIVE_INFINITY, + }).catch((error) => { + if (style.getPropertyValue("translate") === value) style.setProperty("translate", before); + throw error; + }); + }, + [commitPositionPatchToHtml], + ); + const handleGsapAwarePathOffsetCommit = useCallback( async ( selection: DomEditSelection, next: { x: number; y: number }, modifiers?: { altKey?: boolean }, ) => { + if (!gsapWritesPosition(selection.element)) return commitPlainTranslate(selection, next); if (gsapCommitMutation) { try { const ownedAnimations = getGsapAnimationsForSelection(selection); @@ -182,14 +205,12 @@ export function useGsapAwareEditing({ trackGsapInteractionFailure, getGsapAnimationsForSelection, stageElementPositionOffset, + commitPlainTranslate, ], ); - // Multi-select (group) drag: route EACH element through the SAME GSAP intercept as - // a single drag, so every position is written as GSAP code (tl.set / keyframes / - // gsap.set) — NEVER the deprecated `--hf-studio-offset` CSS var, and GSAP-animated - // elements are no longer blocked in a group. No CSS fallback: with no GSAP - // composition there's nothing to write (a no-op, exactly like the single-drag path). + // Multi-select (group) drag: each member takes the single drag's writer, its inline + // translate unless GSAP positions it, else the GSAP intercept. const handleGsapAwareGroupPathOffsetCommit = useCallback( async (updates: DomEditGroupPathOffsetCommit[]) => { if (!gsapCommitMutation || updates.length === 0) return; @@ -238,6 +259,9 @@ export function useGsapAwareEditing({ }; const preflightAnimations = new Map(); const offsetMembers = new Set(); + const plainMembers = new Set( + updates.filter((u) => !gsapWritesPosition(u.selection.element)).map((u) => u.selection), + ); // Editability is user-atomic: prove every member can be written before // the first source mutation. Network failures after this point retain the // existing multi-request semantics, but a blocked member can never leave @@ -247,6 +271,7 @@ export function useGsapAwareEditing({ // turns N sequential round trips into one. const preflightResults = await Promise.allSettled( updates.map(async ({ selection }) => { + if (plainMembers.has(selection)) return; const animations = await makeFetchFallback(selection, { failOnFetchError: true })(); preflightAnimations.set(selection, animations); const outcome = await tryGsapDragIntercept( @@ -273,10 +298,14 @@ export function useGsapAwareEditing({ throw preflightFailure.error; } const lastScriptWrite = updates.findLastIndex( - ({ selection }) => !offsetMembers.has(selection), + ({ selection }) => !offsetMembers.has(selection) && !plainMembers.has(selection), ); for (const [index, { selection, next }] of updates.entries()) { renderOnCommit = index === lastScriptWrite; + if (plainMembers.has(selection)) { + await commitPlainTranslate(selection, next, coalesceKey); + continue; + } if (offsetMembers.has(selection)) { await stageElementPositionOffset(selection, next, coalesceKey).save(); continue; @@ -318,6 +347,7 @@ export function useGsapAwareEditing({ makeFetchFallback, trackGsapInteractionFailure, stageElementPositionOffset, + commitPlainTranslate, ], ); From d80025678306ae88e6a404e0bcbb7e889a3f8fc8 Mon Sep 17 00:00:00 2001 From: Miguel Angel Simon Sierra Date: Wed, 30 Sep 2026 16:13:11 -0700 Subject: [PATCH 2/9] fix(studio): route a GSAP-free move through the on-element writer and meet the file checks --- .../src/components/editor/PropertyPanel.tsx | 1 - .../src/components/editor/manualOffsetDrag.ts | 11 ++- .../src/components/editor/plainTranslate.ts | 3 +- .../studio/src/hooks/elementOffsetStager.ts | 35 +++++++- .../studio/src/hooks/gsapRuntimeKeyframes.ts | 13 ++- .../src/hooks/useDomGeometryCommit.test.tsx | 41 +++++++--- .../src/hooks/useDomGeometryCommits.test.tsx | 6 +- .../src/hooks/useGsapAwareEditing.test.tsx | 82 ++++--------------- .../studio/src/hooks/useGsapAwareEditing.ts | 42 ++-------- 9 files changed, 99 insertions(+), 135 deletions(-) diff --git a/packages/studio/src/components/editor/PropertyPanel.tsx b/packages/studio/src/components/editor/PropertyPanel.tsx index a3b9ce63ec..b7c1d05094 100644 --- a/packages/studio/src/components/editor/PropertyPanel.tsx +++ b/packages/studio/src/components/editor/PropertyPanel.tsx @@ -210,7 +210,6 @@ export const PropertyPanel = memo(function PropertyPanel(props: PropertyPanelPro manualSize.height > 0 ? manualSize.height : (parsePxMetricValue(styles.height ?? "") ?? element.boundingBox.height); - const manualRotation = readStudioRotation(element.element); const elStart = Number.parseFloat(element?.dataAttributes?.start ?? "0") || 0; diff --git a/packages/studio/src/components/editor/manualOffsetDrag.ts b/packages/studio/src/components/editor/manualOffsetDrag.ts index 1e87cd54e7..e9398c7056 100644 --- a/packages/studio/src/components/editor/manualOffsetDrag.ts +++ b/packages/studio/src/components/editor/manualOffsetDrag.ts @@ -337,13 +337,11 @@ export function createManualOffsetDragMember(input: { selection: DomEditSelection; element: HTMLElement; rect: ManualOffsetDragRect; - /** A move or nudge; a resize's anchor member keeps the legacy offset channel. */ - gesture?: "drag" | "nudge"; + gesture?: "drag" | "nudge"; // a resize's anchor member keeps the legacy offset channel }): ManualOffsetDragMemberResult { const plainTranslate = !!input.gesture && !gsapWritesPosition(input.element); - // Base the drag on the offset ACTUALLY applied, never the raw (possibly dormant) - // var — see readAppliedStudioPathOffset. This keeps the commit purely relative - // (applied + delta) so a stale offset can't fling the element off-screen. + // Base the drag on the offset ACTUALLY applied, never a dormant var (readAppliedStudioPathOffset), + // so a stale offset can't fling the element off-screen. const initialOffset = plainTranslate ? readTranslatePx(input.element) : readAppliedStudioPathOffset(input.element); @@ -479,7 +477,8 @@ function applyManualOffsetCommitValue( member: ManualOffsetDragMember, offset: { x: number; y: number }, ): { x: number; y: number } { - if (!member.plainTranslate) stampGestureBase(member.element, member.initialOffset, member.baseGsap); + if (!member.plainTranslate) + stampGestureBase(member.element, member.initialOffset, member.baseGsap); drawMemberOffset(member, offset, true); return offset; } diff --git a/packages/studio/src/components/editor/plainTranslate.ts b/packages/studio/src/components/editor/plainTranslate.ts index a3cb9c5373..147515f016 100644 --- a/packages/studio/src/components/editor/plainTranslate.ts +++ b/packages/studio/src/components/editor/plainTranslate.ts @@ -31,11 +31,10 @@ export function readTranslatePx(el: HTMLElement): Point { } /** Plain px only: GSAP's CSSPlugin splits `translate` on spaces and drops a calc(). */ -export function formatTranslatePx(p: Point): string { +function formatTranslatePx(p: Point): string { return `${roundTo3(p.x)}px ${roundTo3(p.y)}px`; } -/** The source patch that saves a move: the same literal the live element shows. */ export function translatePatch(p: Point): PatchOperation & { value: string } { return { type: "inline-style", property: "translate", value: formatTranslatePx(p) }; } diff --git a/packages/studio/src/hooks/elementOffsetStager.ts b/packages/studio/src/hooks/elementOffsetStager.ts index 00397e7c7d..b6efd719ef 100644 --- a/packages/studio/src/hooks/elementOffsetStager.ts +++ b/packages/studio/src/hooks/elementOffsetStager.ts @@ -5,6 +5,8 @@ import { } from "../components/editor/elementPositionOffset"; import { LAYER_REVEAL_PRIOR_POSITION_ATTR } from "../player/lib/timelineElementHelpers"; import type { PatchOperation } from "../utils/sourcePatcher"; +import { translatePatch } from "../components/editor/plainTranslate"; +import { gsapWritesPosition } from "./gsapRuntimeKeyframes"; const ELEMENT_OFFSET_REFUSED: Record = { anchored: "This layer is anchored from its right or bottom edge. Move it in the Code tab.", @@ -30,8 +32,34 @@ function settleGsapDraftAtGestureStart(el: HTMLElement): void { if (gsap && Number.isFinite(x) && Number.isFinite(y)) gsap.set(el, { x, y }); } -/** Applies a shared-tween element's move live now; `save` persists it as left/top on that - * element, `rollback` takes the live move back. Throws, after a toast, when it cannot. */ +let plainMoveCounter = 0; + +/** GSAP does not position the element: `next` is its whole translate, live now and saved as drawn. */ +function stagePlainTranslate( + commitPositionPatchToHtml: ElementOffsetStagerDeps["commitPositionPatchToHtml"], + selection: DomEditSelection, + next: { x: number; y: number }, + coalesceKey?: string, +): { save: () => Promise; rollback: () => void } { + const style = selection.element.style; + const before = style.getPropertyValue("translate"); + const patch = translatePatch(next); + style.setProperty("translate", patch.value); + const rollback = () => { + if (style.getPropertyValue("translate") === patch.value) style.setProperty("translate", before); + }; + const key = coalesceKey ?? `move:${++plainMoveCounter}`; + const options = { label: "Move layer", coalesceKey: key, coalesceMs: Number.POSITIVE_INFINITY }; + const save = () => + commitPositionPatchToHtml(selection, [patch], options).catch((error) => { + rollback(); + throw error; + }); + return { save, rollback }; +} + +/** Applies a move on the element itself live now: its translate when GSAP does not position it, + * else left/top for a shared-tween element. Throws, after a toast, when it cannot. */ export function stageElementOffset( { commitPositionPatchToHtml, showToast, readOnlyPreview }: ElementOffsetStagerDeps, selection: DomEditSelection, @@ -40,6 +68,9 @@ export function stageElementOffset( ): { save: () => Promise; rollback: () => void } { const el = selection.element; if (readOnlyPreview) return { save: () => Promise.resolve(), rollback: () => undefined }; + if (!gsapWritesPosition(el)) { + return stagePlainTranslate(commitPositionPatchToHtml, selection, next, coalesceKey); + } const previous = { position: el.style.position, left: el.style.left, top: el.style.top }; const liftMarker = el.getAttribute(LAYER_REVEAL_PRIOR_POSITION_ATTR); const result = applyElementPositionOffset(el, next); diff --git a/packages/studio/src/hooks/gsapRuntimeKeyframes.ts b/packages/studio/src/hooks/gsapRuntimeKeyframes.ts index b144203746..09b1a2c089 100644 --- a/packages/studio/src/hooks/gsapRuntimeKeyframes.ts +++ b/packages/studio/src/hooks/gsapRuntimeKeyframes.ts @@ -405,9 +405,7 @@ export function hasNonHoldTweenForElement( return !!targetEl && hasNonHoldTween(timelinesOf(iframe), targetEl, channels, compositionId); } -// Position channels — used to scope the "has a live position tween?" check so a -// sibling rotation/scale animation never forces a static position hold into the -// keyframe branch (which corrupts it into a frozen duration-0 keyframed tween). +// A sibling rotation/scale tween must never push a static position hold into the keyframe branch. export const POSITION_CHANNELS: string[] = [ "x", "y", @@ -415,23 +413,22 @@ export const POSITION_CHANNELS: string[] = [ "yPercent", "left", "top", - // GSAP normalizes translateX/Y to x/y at play time, but readTween reads the - // AUTHORED shape — include them so a hand-authored translateX/Y position tween - // still counts as a live position tween. + // readTween reads the authored translateX/Y; GSAP normalizes them to x/y only at play time. "translateX", "translateY", ]; const MOVE_CHANNELS = [...POSITION_CHANNELS, "motionPath"]; /** Whether a live timeline tween or hold writes any of `channels` on `el`. Sync, no fetch. */ -export function gsapWritesChannels(el: Element, channels: string[]): boolean { +function gsapWritesChannels(el: Element, channels: string[]): boolean { const win = el.ownerDocument.defaultView as { __timelines?: Record }; return Object.values(win?.__timelines ?? {}).some((tl) => (tl?.getChildren?.(true) ?? []).some( (tween) => !!tween.vars && matchesElement(tween, el) && - (channels.some((ch) => ch in tween.vars!) || keyframeVarsCarryChannel(tween.vars, channels)), + (channels.some((ch) => ch in tween.vars!) || + keyframeVarsCarryChannel(tween.vars, channels)), ), ); } diff --git a/packages/studio/src/hooks/useDomGeometryCommit.test.tsx b/packages/studio/src/hooks/useDomGeometryCommit.test.tsx index 3a867e75cf..52cf8f3067 100644 --- a/packages/studio/src/hooks/useDomGeometryCommit.test.tsx +++ b/packages/studio/src/hooks/useDomGeometryCommit.test.tsx @@ -138,37 +138,56 @@ describe("useDomGeometryCommit, from the package entry", () => { unmount(); }); - it("saves a GSAP-free move as its inline translate, with no GSAP script and no animation read", async () => { - const urls: string[] = []; - const patches: unknown[] = []; + function stubPatchServer(patchStatus = 200) { + const calls = { urls: [] as string[], patches: [] as unknown[] }; vi.stubGlobal( "fetch", vi.fn(async (input: RequestInfo | URL, init?: RequestInit) => { const url = String(input instanceof Request ? input.url : input); - urls.push(url); - if (url.includes("/file-mutations/patch-element/")) patches.push(JSON.parse(String(init?.body))); - const body = url.includes("/files/") - ? { content: SOURCE } - : { ok: true, changed: true, matched: true, content: "AFTER", version: "v2" }; - return new Response(JSON.stringify(body), { headers: { "content-type": "application/json" } }); + calls.urls.push(url); + if (url.includes("/patch-element/")) calls.patches.push(JSON.parse(String(init?.body))); + const saved = { ok: true, changed: true, matched: true, content: "AFTER", version: "v2" }; + const body = url.includes("/files/") ? { content: SOURCE } : saved; + const status = url.includes("/patch-element/") ? patchStatus : 200; + return new Response(JSON.stringify(body), { + status, + headers: { "content-type": "application/json" }, + }); }), ); + return calls; + } + + it("saves a GSAP-free move as its inline translate, with no GSAP script and no animation read", async () => { + const calls = stubPatchServer(); const { element, recordEdit, hook, unmount } = renderHost(); const card = makeSelection("card", element); await expect(hook().commitPathOffset(card, { x: 130.5, y: 90 })).resolves.toEqual({ ok: true }); expect(element.style.getPropertyValue("translate")).toBe("130.5px 90px"); - expect(patches).toEqual([ + expect(calls.patches).toEqual([ expect.objectContaining({ operations: [{ type: "inline-style", property: "translate", value: "130.5px 90px" }], }), ]); - expect(urls.filter((url) => url.includes("gsap"))).toEqual([]); + expect(calls.urls.filter((url) => url.includes("gsap"))).toEqual([]); expect(recordEdit).toHaveBeenCalledTimes(1); unmount(); }); + it("puts a GSAP-free element's translate back when its move cannot be saved", async () => { + stubPatchServer(500); + const { element, hook, unmount } = renderHost(); + element.style.setProperty("translate", "40px 30px"); + + await expect( + hook().commitPathOffset(makeSelection("card", element), { x: 1, y: 2 }), + ).rejects.toThrow(); + expect(element.style.getPropertyValue("translate")).toBe("40px 30px"); + unmount(); + }); + it("keeps the same commits across renders, so the overlay's handlers stay put", () => { stubServer(); const { hook, rerender, unmount } = renderHost(); diff --git a/packages/studio/src/hooks/useDomGeometryCommits.test.tsx b/packages/studio/src/hooks/useDomGeometryCommits.test.tsx index 9f39635ad4..2d90698c33 100644 --- a/packages/studio/src/hooks/useDomGeometryCommits.test.tsx +++ b/packages/studio/src/hooks/useDomGeometryCommits.test.tsx @@ -147,8 +147,10 @@ describe("useDomGeometryCommits read-only preview", () => { }); describe("useDomGeometryCommits element position offset", () => { - it("persists left/top on the element and no translate offset", async () => { - const element = document.createElement("span"); + it("persists left/top on a word a shared tween positions, and no translate offset", async () => { + const element = Object.assign(document.createElement("span"), { + _gsap: { renderTransform: () => {} }, + }); Object.defineProperties(element, { offsetLeft: { get: () => 100 + (Number.parseFloat(element.style.left) || 0) }, offsetTop: { get: () => 200 + (Number.parseFloat(element.style.top) || 0) }, diff --git a/packages/studio/src/hooks/useGsapAwareEditing.test.tsx b/packages/studio/src/hooks/useGsapAwareEditing.test.tsx index 362b2eded5..2a089cc5de 100644 --- a/packages/studio/src/hooks/useGsapAwareEditing.test.tsx +++ b/packages/studio/src/hooks/useGsapAwareEditing.test.tsx @@ -117,14 +117,8 @@ function mountGroupHandler({ makeFetchFallback, trackGsapInteractionFailure = vi.fn(), stageElementPositionOffset = vi.fn(), - commitPositionPatchToHtml = vi.fn(), }: Pick & - Partial< - Pick< - AwareEditingParams, - "trackGsapInteractionFailure" | "stageElementPositionOffset" | "commitPositionPatchToHtml" - > - >) { + Partial>) { let groupCommit!: (updates: DomEditGroupPathOffsetCommit[]) => Promise; let pathOffsetCommit!: ( selection: DomEditSelection, @@ -142,7 +136,7 @@ function mountGroupHandler({ trackGsapInteractionFailure, stageElementPositionOffset, handleDomBoxSizeCommit: vi.fn(), - commitPositionPatchToHtml, + commitPositionPatchToHtml: vi.fn(), addGsapAnimation: vi.fn(), convertToKeyframes: vi.fn(), setArcPath: vi.fn(), @@ -162,72 +156,25 @@ function mountGroupHandler({ } describe("useGsapAwareEditing moves of an element GSAP does not position", () => { - const translatePatch = (value: string) => [{ type: "inline-style", property: "translate", value }]; - - it("writes its inline translate as drawn, with no GSAP write and no animation read", async () => { - const commitPositionPatchToHtml = vi.fn().mockResolvedValue(undefined); + it("saves the move on the element itself, with no GSAP write and no animation read", async () => { + const save = vi.fn().mockResolvedValue(undefined); + const stageElementPositionOffset = vi.fn(() => ({ save, rollback: vi.fn() })); const gsapCommitMutation = vi.fn(); const makeFetchFallback = vi.fn(); const { pathOffsetCommit, root } = mountGroupHandler({ gsapCommitMutation, makeFetchFallback, - commitPositionPatchToHtml, + stageElementPositionOffset, }); const box = { element: document.createElement("div"), id: "box", selector: "#box" }; await act(() => pathOffsetCommit(box as unknown as DomEditSelection, { x: 130.25, y: 90 })); - expect(box.element.style.getPropertyValue("translate")).toBe("130.25px 90px"); - expect(commitPositionPatchToHtml).toHaveBeenCalledWith( - box, - translatePatch("130.25px 90px"), - expect.objectContaining({ label: "Move layer" }), - ); + expect(stageElementPositionOffset).toHaveBeenCalledWith(box, { x: 130.25, y: 90 }); + expect(save).toHaveBeenCalledTimes(1); expect(gsapCommitMutation).not.toHaveBeenCalled(); expect(makeFetchFallback).not.toHaveBeenCalled(); expect(mocks.drag).not.toHaveBeenCalled(); act(() => root.unmount()); }); - - it("puts the live translate back when the save fails", async () => { - const commitPositionPatchToHtml = vi.fn().mockRejectedValue(new Error("offline")); - const gsapCommitMutation = vi.fn(); - const { pathOffsetCommit, root } = mountGroupHandler({ - gsapCommitMutation, - makeFetchFallback: vi.fn(), - commitPositionPatchToHtml, - }); - const box = { element: document.createElement("div"), id: "box", selector: "#box" }; - box.element.style.setProperty("translate", "40px 30px"); - await expect(pathOffsetCommit(box as unknown as DomEditSelection, { x: 1, y: 2 })).rejects.toThrow( - "offline", - ); - expect(box.element.style.getPropertyValue("translate")).toBe("40px 30px"); - act(() => root.unmount()); - }); - - it("writes a GSAP-free group member by translate under the group key, the rest through GSAP", async () => { - mocks.drag.mockResolvedValue({ status: "persisted" }); - const commitPositionPatchToHtml = vi.fn().mockResolvedValue(undefined); - const { groupCommit, root } = mountGroupHandler({ - gsapCommitMutation: vi.fn().mockResolvedValue(undefined), - makeFetchFallback: () => vi.fn().mockResolvedValue([]), - commitPositionPatchToHtml, - }); - const plain = { element: document.createElement("div"), id: "plain", selector: "#plain" }; - const animated = { element: gsapPositioned("div"), id: "anim", selector: "#anim" }; - await act(() => - groupCommit([ - { selection: plain, next: { x: 10, y: 20 } }, - { selection: animated, next: { x: 10, y: 20 } }, - ] as unknown as DomEditGroupPathOffsetCommit[]), - ); - expect(commitPositionPatchToHtml).toHaveBeenCalledWith( - plain, - translatePatch("10px 20px"), - expect.objectContaining({ coalesceKey: expect.stringMatching(/^group-drag:\d+$/) }), - ); - expect(mocks.drag.mock.calls.map((call) => call[0])).toEqual([animated, animated]); - act(() => root.unmount()); - }); }); describe("useGsapAwareEditing shared-tween moves", () => { @@ -249,7 +196,7 @@ describe("useGsapAwareEditing shared-tween moves", () => { act(() => root.unmount()); }); - it("saves a group member that shares a tween through its own offset, under the group key", async () => { + it("saves shared-tween and GSAP-free group members on themselves, under the group key", async () => { mocks.drag.mockImplementation(async (selection, _next, _a, _i, commit, _f, options) => { if (selection.hfId === "w0") return { status: "element-offset" }; if (!options?.preflightOnly) await commit(selection, { type: "move" }, { label: "Move" }); @@ -264,17 +211,18 @@ describe("useGsapAwareEditing shared-tween moves", () => { }); const word = { element: gsapPositioned("span"), hfId: "w0", selector: ".w" }; const box = { element: gsapPositioned("div"), id: "box", selector: "#box" }; + const plain = { element: document.createElement("div"), id: "plain", selector: "#plain" }; await act(() => groupCommit([ { selection: word, next: { x: 40, y: 20 } }, { selection: box, next: { x: 40, y: 20 } }, + { selection: plain, next: { x: 40, y: 20 } }, ] as unknown as DomEditGroupPathOffsetCommit[]), ); - expect(stageElementPositionOffset).toHaveBeenCalledWith( - word, - { x: 40, y: 20 }, - expect.stringMatching(/^group-drag:\d+$/), - ); + const groupKey = expect.stringMatching(/^group-drag:\d+$/); + expect(stageElementPositionOffset).toHaveBeenCalledWith(word, { x: 40, y: 20 }, groupKey); + expect(stageElementPositionOffset).toHaveBeenCalledWith(plain, { x: 40, y: 20 }, groupKey); + expect(mocks.drag.mock.calls.some((call) => call[0] === plain)).toBe(false); act(() => root.unmount()); }); }); diff --git a/packages/studio/src/hooks/useGsapAwareEditing.ts b/packages/studio/src/hooks/useGsapAwareEditing.ts index 96134b1aae..61fe6f59cb 100644 --- a/packages/studio/src/hooks/useGsapAwareEditing.ts +++ b/packages/studio/src/hooks/useGsapAwareEditing.ts @@ -34,7 +34,6 @@ import { logResize, logResizeSettle } from "../utils/resizeDebug"; import type { DomEditGroupPathOffsetCommit } from "../components/editor/DomEditOverlay"; import { runGestureTransaction } from "./gestureTransaction"; import { gsapWritesPosition, hasNonHoldTweenForElement } from "./gsapRuntimeKeyframes"; -import { translatePatch } from "../components/editor/plainTranslate"; import { assertGsapEditPersisted, saveMove } from "./gsapEditOutcome"; import type { GsapAnimationFetchOptions } from "./useGsapAnimationFetchFallback"; import type { ElementOffsetStagerDeps } from "./elementOffsetStager"; @@ -47,7 +46,6 @@ import { // Distinct coalesceKey per group drag so consecutive group drags don't fold // into one another's undo entry (module-local counter, not Date.now()). let groupDragCommitCounter = 0; -let plainMoveCounter = 0; function firstPreflightFailure( results: PromiseSettledResult[], @@ -149,33 +147,14 @@ export function useGsapAwareEditing({ [domEditSelection, selectedGsapAnimations, makeFetchFallback], ); - // The one move writer for an element GSAP does not position: its inline translate, as drawn. - const commitPlainTranslate = useCallback( - (selection: DomEditSelection, next: { x: number; y: number }, coalesceKey?: string) => { - const style = selection.element.style; - const before = style.getPropertyValue("translate"); - const patch = translatePatch(next); - const value = patch.value; - style.setProperty("translate", value); - return commitPositionPatchToHtml(selection, [patch], { - label: "Move layer", - coalesceKey: coalesceKey ?? `move:${++plainMoveCounter}`, - coalesceMs: Number.POSITIVE_INFINITY, - }).catch((error) => { - if (style.getPropertyValue("translate") === value) style.setProperty("translate", before); - throw error; - }); - }, - [commitPositionPatchToHtml], - ); - const handleGsapAwarePathOffsetCommit = useCallback( async ( selection: DomEditSelection, next: { x: number; y: number }, modifiers?: { altKey?: boolean }, ) => { - if (!gsapWritesPosition(selection.element)) return commitPlainTranslate(selection, next); + if (!gsapWritesPosition(selection.element)) + return stageElementPositionOffset(selection, next).save(); if (gsapCommitMutation) { try { const ownedAnimations = getGsapAnimationsForSelection(selection); @@ -205,12 +184,11 @@ export function useGsapAwareEditing({ trackGsapInteractionFailure, getGsapAnimationsForSelection, stageElementPositionOffset, - commitPlainTranslate, ], ); - // Multi-select (group) drag: each member takes the single drag's writer, its inline - // translate unless GSAP positions it, else the GSAP intercept. + // Multi-select (group) drag: each member takes the single drag's writer, so a member GSAP + // does not position is saved on itself and the rest go through the GSAP intercept. const handleGsapAwareGroupPathOffsetCommit = useCallback( async (updates: DomEditGroupPathOffsetCommit[]) => { if (!gsapCommitMutation || updates.length === 0) return; @@ -259,9 +237,6 @@ export function useGsapAwareEditing({ }; const preflightAnimations = new Map(); const offsetMembers = new Set(); - const plainMembers = new Set( - updates.filter((u) => !gsapWritesPosition(u.selection.element)).map((u) => u.selection), - ); // Editability is user-atomic: prove every member can be written before // the first source mutation. Network failures after this point retain the // existing multi-request semantics, but a blocked member can never leave @@ -271,7 +246,7 @@ export function useGsapAwareEditing({ // turns N sequential round trips into one. const preflightResults = await Promise.allSettled( updates.map(async ({ selection }) => { - if (plainMembers.has(selection)) return; + if (!gsapWritesPosition(selection.element)) return void offsetMembers.add(selection); const animations = await makeFetchFallback(selection, { failOnFetchError: true })(); preflightAnimations.set(selection, animations); const outcome = await tryGsapDragIntercept( @@ -298,14 +273,10 @@ export function useGsapAwareEditing({ throw preflightFailure.error; } const lastScriptWrite = updates.findLastIndex( - ({ selection }) => !offsetMembers.has(selection) && !plainMembers.has(selection), + ({ selection }) => !offsetMembers.has(selection), ); for (const [index, { selection, next }] of updates.entries()) { renderOnCommit = index === lastScriptWrite; - if (plainMembers.has(selection)) { - await commitPlainTranslate(selection, next, coalesceKey); - continue; - } if (offsetMembers.has(selection)) { await stageElementPositionOffset(selection, next, coalesceKey).save(); continue; @@ -347,7 +318,6 @@ export function useGsapAwareEditing({ makeFetchFallback, trackGsapInteractionFailure, stageElementPositionOffset, - commitPlainTranslate, ], ); From f1c5f2979c840c5644a5f7b3bb9b8eecce759fca Mon Sep 17 00:00:00 2001 From: Miguel Angel Simon Sierra Date: Wed, 30 Sep 2026 17:38:43 -0700 Subject: [PATCH 3/9] fix(studio): a drag press on a GSAP page leaves an element GSAP does not position alone --- .../editor/domEditOverlayStartGesture.test.ts | 69 +++++++++++++++++++ .../editor/domEditOverlayStartGesture.ts | 8 +-- 2 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 packages/studio/src/components/editor/domEditOverlayStartGesture.test.ts diff --git a/packages/studio/src/components/editor/domEditOverlayStartGesture.test.ts b/packages/studio/src/components/editor/domEditOverlayStartGesture.test.ts new file mode 100644 index 0000000000..747454d5ed --- /dev/null +++ b/packages/studio/src/components/editor/domEditOverlayStartGesture.test.ts @@ -0,0 +1,69 @@ +// @vitest-environment happy-dom +import { afterEach, describe, expect, it, vi } from "vitest"; +import type { DomEditSelection } from "./domEditing"; +import type { GestureState } from "./domEditOverlayGestures"; +import { createDomEditOverlayGestureHandlers } from "./useDomEditOverlayGestures"; + +afterEach(() => { + delete (window as { gsap?: unknown }).gsap; + delete (window as { __timelines?: unknown }).__timelines; + document.body.innerHTML = ""; +}); + +describe("a drag press on a page that loads GSAP", () => { + it.each([ + ["GSAP animates nothing", false], + ["GSAP animates only its parent", true], + ])( + "%s: the press never asks GSAP about the element, so its translate stays CSS", + (_, parentTween) => { + const getProperty = vi.fn(() => 0); + const set = vi.fn(); + const parent = document.createElement("div"); + const element = document.createElement("div"); + element.style.setProperty("translate", "40px 30px"); + parent.append(element); + document.body.append(parent); + const tween = { targets: () => [parent], vars: { x: 100 }, duration: () => 2 }; + const timelines = { main: { getChildren: () => (parentTween ? [tween] : []) } }; + Object.assign(window, { gsap: { getProperty, set }, __timelines: timelines }); + const selection = { element, capabilities: { canApplyManualOffset: true } }; + const ref = (current: T) => ({ current }); + const opts = { + selectionRef: ref(selection as unknown as DomEditSelection), + overlayRectRef: ref({ + left: 0, + top: 0, + width: 50, + height: 40, + editScaleX: 1, + editScaleY: 1, + }), + boxRef: ref(null), + overlayRef: ref(null), + iframeRef: ref(null), + gestureRef: ref(null), + rafPausedRef: ref(false), + onManualDragStartRef: ref(vi.fn()), + onBlockedMoveRef: ref(vi.fn()), + }; + const press = { + clientX: 10, + clientY: 10, + pointerId: 1, + button: 0, + preventDefault() {}, + stopPropagation() {}, + currentTarget: { setPointerCapture() {} }, + }; + + const handlers = createDomEditOverlayGestureHandlers(opts as never); + expect(handlers.startGesture("drag", press as never)).toBe(true); + + expect(opts.gestureRef.current?.pathOffsetMember?.plainTranslate).toBe(true); + expect(getProperty).not.toHaveBeenCalled(); + expect(set).not.toHaveBeenCalled(); + expect(element.style.getPropertyValue("translate")).toBe("40px 30px"); + }, + ); +}); diff --git a/packages/studio/src/components/editor/domEditOverlayStartGesture.ts b/packages/studio/src/components/editor/domEditOverlayStartGesture.ts index be9fe3d05c..8bb387c817 100644 --- a/packages/studio/src/components/editor/domEditOverlayStartGesture.ts +++ b/packages/studio/src/components/editor/domEditOverlayStartGesture.ts @@ -152,10 +152,6 @@ export function startGesture( return false; const size = readStudioBoxSize(sel.element); - // Single-source rotation base = the live GSAP transform rotation plus any legacy - // `--hf-studio-rotation` CSS var (old projects), so a rotate gesture starts from the - // element's actual visual angle and commits an absolute angle to the timeline. - const rotation = { angle: readGsapRotation(sel.element) + readStudioRotation(sel.element).angle }; // The draft writes CSS width/height, so the resize base must be the CSS // layout size. offsetWidth/Height are transform-free; the overlay-rect // fallback (rect / editScale) includes the element's own GSAP scale and @@ -234,6 +230,10 @@ export function startGesture( } } + // Rotation base = GSAP's rotation plus the legacy `--hf-studio-rotation` var. A plain-translate + // move never asks GSAP: reading a property makes it bake the CSS translate into its transform. + const gsapRotation = pathOffsetMember?.plainTranslate ? 0 : readGsapRotation(sel.element); + const rotation = { angle: gsapRotation + readStudioRotation(sel.element).angle }; const overlayBounds = overlayEl?.getBoundingClientRect(); const centerX = (overlayBounds?.left ?? 0) + rect.left + rect.width / 2; const centerY = (overlayBounds?.top ?? 0) + rect.top + rect.height / 2; From 06f9a0b70ced4b77ffee2aba5ee9fe7df15d6dcc Mon Sep 17 00:00:00 2001 From: Miguel Angel Simon Sierra Date: Wed, 30 Sep 2026 18:32:11 -0700 Subject: [PATCH 4/9] fix(studio): a press reads a percent or calc translate without touching the element --- .../editor/domEditOverlayStartGesture.test.ts | 74 +++++++++++-------- .../components/editor/plainTranslate.test.ts | 42 +++++++++++ .../src/components/editor/plainTranslate.ts | 49 +++++++++--- 3 files changed, 124 insertions(+), 41 deletions(-) create mode 100644 packages/studio/src/components/editor/plainTranslate.test.ts diff --git a/packages/studio/src/components/editor/domEditOverlayStartGesture.test.ts b/packages/studio/src/components/editor/domEditOverlayStartGesture.test.ts index 747454d5ed..9e4d3e09b0 100644 --- a/packages/studio/src/components/editor/domEditOverlayStartGesture.test.ts +++ b/packages/studio/src/components/editor/domEditOverlayStartGesture.test.ts @@ -10,6 +10,32 @@ afterEach(() => { document.body.innerHTML = ""; }); +const PRESS = { + clientX: 10, + clientY: 10, + pointerId: 1, + button: 0, + preventDefault() {}, + stopPropagation() {}, + currentTarget: { setPointerCapture() {} }, +}; + +function pressOptions(element: HTMLElement) { + const ref = (current: T) => ({ current }); + const selection = { element, capabilities: { canApplyManualOffset: true } }; + return { + selectionRef: ref(selection as unknown as DomEditSelection), + overlayRectRef: ref({ left: 0, top: 0, width: 240, height: 160, editScaleX: 1, editScaleY: 1 }), + boxRef: ref(null), + overlayRef: ref(null), + iframeRef: ref(null), + gestureRef: ref(null), + rafPausedRef: ref(false), + onManualDragStartRef: ref(vi.fn()), + onBlockedMoveRef: ref(vi.fn()), + }; +} + describe("a drag press on a page that loads GSAP", () => { it.each([ ["GSAP animates nothing", false], @@ -27,38 +53,9 @@ describe("a drag press on a page that loads GSAP", () => { const tween = { targets: () => [parent], vars: { x: 100 }, duration: () => 2 }; const timelines = { main: { getChildren: () => (parentTween ? [tween] : []) } }; Object.assign(window, { gsap: { getProperty, set }, __timelines: timelines }); - const selection = { element, capabilities: { canApplyManualOffset: true } }; - const ref = (current: T) => ({ current }); - const opts = { - selectionRef: ref(selection as unknown as DomEditSelection), - overlayRectRef: ref({ - left: 0, - top: 0, - width: 50, - height: 40, - editScaleX: 1, - editScaleY: 1, - }), - boxRef: ref(null), - overlayRef: ref(null), - iframeRef: ref(null), - gestureRef: ref(null), - rafPausedRef: ref(false), - onManualDragStartRef: ref(vi.fn()), - onBlockedMoveRef: ref(vi.fn()), - }; - const press = { - clientX: 10, - clientY: 10, - pointerId: 1, - button: 0, - preventDefault() {}, - stopPropagation() {}, - currentTarget: { setPointerCapture() {} }, - }; - + const opts = pressOptions(element); const handlers = createDomEditOverlayGestureHandlers(opts as never); - expect(handlers.startGesture("drag", press as never)).toBe(true); + expect(handlers.startGesture("drag", PRESS as never)).toBe(true); expect(opts.gestureRef.current?.pathOffsetMember?.plainTranslate).toBe(true); expect(getProperty).not.toHaveBeenCalled(); @@ -67,3 +64,18 @@ describe("a drag press on a page that loads GSAP", () => { }, ); }); + +describe("a drag press on a centred element without GSAP", () => { + it("starts from its -50% translate in px and leaves its style as it was", () => { + const element = document.createElement("div"); + element.style.cssText = + "position: absolute; left: 50%; top: 50%; width: 240px; height: 160px; translate: -50% -50%"; + document.body.append(element); + const style = element.getAttribute("style"); + const opts = pressOptions(element); + const handlers = createDomEditOverlayGestureHandlers(opts as never); + expect(handlers.startGesture("drag", PRESS as never)).toBe(true); + expect(opts.gestureRef.current?.pathOffsetMember?.initialOffset).toEqual({ x: -120, y: -80 }); + expect(element.getAttribute("style")).toBe(style); + }); +}); diff --git a/packages/studio/src/components/editor/plainTranslate.test.ts b/packages/studio/src/components/editor/plainTranslate.test.ts new file mode 100644 index 0000000000..c27025164e --- /dev/null +++ b/packages/studio/src/components/editor/plainTranslate.test.ts @@ -0,0 +1,42 @@ +// @vitest-environment happy-dom +import { describe, expect, it } from "vitest"; +import { readTranslatePx } from "./plainTranslate"; + +function box(style: string): HTMLElement { + const element = document.createElement("div"); + element.style.cssText = `position: absolute; width: 240px; height: 160px; ${style}`; + document.body.append(element); + return element; +} + +describe("readTranslatePx", () => { + it.each([ + ["40px 30px", { x: 40, y: 30 }], + ["-50% -50%", { x: -120, y: -80 }], + ["25% 25%", { x: 60, y: 40 }], + ["calc(-50% + 12px) calc(10% - 6px)", { x: -108, y: 10 }], + ["30px", { x: 30, y: 0 }], + ])("reads %s against the border box, in px", (translate, want) => { + expect(readTranslatePx(box(`translate: ${translate}`))).toEqual(want); + }); + + it("counts padding and border in the box a percent resolves against", () => { + const element = box( + "translate: 50% 50%; padding: 10px; border: 5px solid; box-sizing: content-box", + ); + expect(readTranslatePx(element)).toEqual({ x: 135, y: 95 }); + }); + + it("writes nothing to the element it reads", () => { + const element = box("translate: -50% -50%"); + const before = element.getAttribute("style"); + const writes: MutationRecord[] = []; + const observer = new MutationObserver((records) => writes.push(...records)); + observer.observe(element, { attributes: true }); + readTranslatePx(element); + writes.push(...observer.takeRecords()); + observer.disconnect(); + expect(writes).toEqual([]); + expect(element.getAttribute("style")).toBe(before); + }); +}); diff --git a/packages/studio/src/components/editor/plainTranslate.ts b/packages/studio/src/components/editor/plainTranslate.ts index 147515f016..6c2c0ab45c 100644 --- a/packages/studio/src/components/editor/plainTranslate.ts +++ b/packages/studio/src/components/editor/plainTranslate.ts @@ -6,28 +6,57 @@ import type { PatchOperation } from "../../utils/sourcePatcher"; type Point = { x: number; y: number }; -const PX = /^-?\d*\.?\d+(?:e[-+]?\d+)?px$/i; +const TERM = /^(-?\d*\.?\d+(?:e[-+]?\d+)?)(px|%)$/i; -// Chrome resolves %, calc(), min()/max()/clamp() and em inside a transform function to a matrix. +/** px, %, or Chrome's computed `calc(P% + Lpx)`, against the border-box side; null for min()/max()/clamp(). */ +function resolveLength(value: string, side: number): number | null { + const parts = (/^calc\((.*)\)$/.exec(value)?.[1] ?? value).split(" "); + let total = 0; + for (let i = 0; i < parts.length; i += 2) { + const term = TERM.exec(parts[i] ?? ""); + const sign = i === 0 || parts[i - 1] === "+" ? 1 : parts[i - 1] === "-" ? -1 : 0; + if (!term || !sign) return null; + total += sign * Number(term[1]) * (term[2] === "%" ? side / 100 : 1); + } + return parts.length % 2 === 1 ? total : null; +} + +function borderBox( + cs: CSSStyleDeclaration, + size: "width" | "height", + a: string, + b: string, +): number { + const n = (prop: string) => Number.parseFloat(cs.getPropertyValue(prop)) || 0; + const pad = + n(`padding-${a}`) + n(`padding-${b}`) + n(`border-${a}-width`) + n(`border-${b}-width`); + return n(size) + (cs.boxSizing === "border-box" ? 0 : pad); +} + +// Chrome resolves min()/max()/clamp() inside a transform function to a matrix; an unrendered box has none. function resolveInTransform(el: HTMLElement, x: string, y: string): Point { const style = el.style; const saved = [style.getPropertyValue("transform"), style.getPropertyPriority("transform")]; style.setProperty("transform", `translate(${x}, ${y})`, "important"); - const view = el.ownerDocument.defaultView; - const matrix = new DOMMatrixReadOnly(view?.getComputedStyle(el).transform ?? "none"); - style.setProperty("transform", saved[0] ?? "", saved[1] ?? ""); - return { x: matrix.m41, y: matrix.m42 }; + try { + const resolved = el.ownerDocument.defaultView?.getComputedStyle(el).transform ?? ""; + const matrix = new DOMMatrixReadOnly(resolved.startsWith("matrix") ? resolved : undefined); + return { x: matrix.m41, y: matrix.m42 }; + } finally { + style.setProperty("transform", saved[0] ?? "", saved[1] ?? ""); + } } /** The element's CSS `translate` in px, as it renders now. */ // ponytail: a 3-value translate loses its z on the next move; keep z when a fixture needs it. export function readTranslatePx(el: HTMLElement): Point { - const computed = () => el.ownerDocument.defaultView?.getComputedStyle(el).translate ?? "none"; - const value = el.style.getPropertyValue("translate") || computed(); + const cs = el.ownerDocument.defaultView?.getComputedStyle(el); + const value = el.style.getPropertyValue("translate") || cs?.translate || "none"; if (value === "none") return { x: 0, y: 0 }; const [x = "0px", y = "0px"] = splitTopLevelWhitespace(value); - if (PX.test(x) && PX.test(y)) return { x: Number.parseFloat(x), y: Number.parseFloat(y) }; - return resolveInTransform(el, x, y); + const px = cs && resolveLength(x, borderBox(cs, "width", "left", "right")); + const py = cs && resolveLength(y, borderBox(cs, "height", "top", "bottom")); + return px != null && py != null ? { x: px, y: py } : resolveInTransform(el, x, y); } /** Plain px only: GSAP's CSSPlugin splits `translate` on spaces and drops a calc(). */ From 660922d79ab0774f4604a78b1f3396f9d4e0d251 Mon Sep 17 00:00:00 2001 From: Miguel Angel Simon Sierra Date: Wed, 30 Sep 2026 18:32:13 -0700 Subject: [PATCH 5/9] refactor(studio): import POSITION_CHANNELS from its owner instead of a re-export --- packages/studio/src/hooks/gsapRuntimeBridge.ts | 1 - .../studio/src/hooks/useGsapAwareEditing.test.tsx | 1 - packages/studio/src/hooks/useGsapAwareEditing.ts | 12 ++++++------ 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/studio/src/hooks/gsapRuntimeBridge.ts b/packages/studio/src/hooks/gsapRuntimeBridge.ts index 6d43c5828e..016b7d6031 100644 --- a/packages/studio/src/hooks/gsapRuntimeBridge.ts +++ b/packages/studio/src/hooks/gsapRuntimeBridge.ts @@ -43,7 +43,6 @@ import { type GsapEditOutcome, } from "./gsapEditOutcome"; -export { POSITION_CHANNELS }; const POSITION_CHANNEL_SET = new Set(POSITION_CHANNELS); const ROTATION_CHANNELS: string[] = ["rotation", "rotationX", "rotationY", "rotationZ"]; diff --git a/packages/studio/src/hooks/useGsapAwareEditing.test.tsx b/packages/studio/src/hooks/useGsapAwareEditing.test.tsx index 2a089cc5de..354df00022 100644 --- a/packages/studio/src/hooks/useGsapAwareEditing.test.tsx +++ b/packages/studio/src/hooks/useGsapAwareEditing.test.tsx @@ -22,7 +22,6 @@ const mocks = vi.hoisted(() => ({ vi.mock("./gsapResizeIntercept", () => ({ tryGsapResizeIntercept: mocks.resize })); vi.mock("./gsapRuntimeBridge", () => ({ - POSITION_CHANNELS: ["x", "y"], tryGsapDragIntercept: mocks.drag, tryGsapRotationIntercept: vi.fn(), })); diff --git a/packages/studio/src/hooks/useGsapAwareEditing.ts b/packages/studio/src/hooks/useGsapAwareEditing.ts index 61fe6f59cb..11ea9ca373 100644 --- a/packages/studio/src/hooks/useGsapAwareEditing.ts +++ b/packages/studio/src/hooks/useGsapAwareEditing.ts @@ -10,11 +10,7 @@ import { useCallback } from "react"; import type { GsapAnimation } from "@hyperframes/core/gsap-parser"; import type { DomEditSelection } from "../components/editor/domEditingTypes"; -import { - POSITION_CHANNELS, - tryGsapDragIntercept, - tryGsapRotationIntercept, -} from "./gsapRuntimeBridge"; +import { tryGsapDragIntercept, tryGsapRotationIntercept } from "./gsapRuntimeBridge"; import { tryGsapResizeIntercept } from "./gsapResizeIntercept"; import { computeDraggedGsapPosition } from "./draggedGsapPosition"; import { readGsapPositionFromIframe } from "./gsapPositionDetection"; @@ -33,7 +29,11 @@ import { setElementGsapPosition } from "../utils/elementGsap"; import { logResize, logResizeSettle } from "../utils/resizeDebug"; import type { DomEditGroupPathOffsetCommit } from "../components/editor/DomEditOverlay"; import { runGestureTransaction } from "./gestureTransaction"; -import { gsapWritesPosition, hasNonHoldTweenForElement } from "./gsapRuntimeKeyframes"; +import { + gsapWritesPosition, + hasNonHoldTweenForElement, + POSITION_CHANNELS, +} from "./gsapRuntimeKeyframes"; import { assertGsapEditPersisted, saveMove } from "./gsapEditOutcome"; import type { GsapAnimationFetchOptions } from "./useGsapAnimationFetchFallback"; import type { ElementOffsetStagerDeps } from "./elementOffsetStager"; From 0bbbdf06404c7bc555d824aba647f8b2588950ac Mon Sep 17 00:00:00 2001 From: Miguel Angel Simon Sierra Date: Wed, 30 Sep 2026 18:58:16 -0700 Subject: [PATCH 6/9] test(studio): share the drag press helper in the start gesture tests --- .../editor/domEditOverlayStartGesture.test.ts | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/studio/src/components/editor/domEditOverlayStartGesture.test.ts b/packages/studio/src/components/editor/domEditOverlayStartGesture.test.ts index 9e4d3e09b0..548e5981d2 100644 --- a/packages/studio/src/components/editor/domEditOverlayStartGesture.test.ts +++ b/packages/studio/src/components/editor/domEditOverlayStartGesture.test.ts @@ -20,6 +20,15 @@ const PRESS = { currentTarget: { setPointerCapture() {} }, }; +/** Presses a drag on the element and returns the gesture it started. */ +function pressDrag(element: HTMLElement): GestureState | null { + const opts = pressOptions(element); + expect( + createDomEditOverlayGestureHandlers(opts as never).startGesture("drag", PRESS as never), + ).toBe(true); + return opts.gestureRef.current; +} + function pressOptions(element: HTMLElement) { const ref = (current: T) => ({ current }); const selection = { element, capabilities: { canApplyManualOffset: true } }; @@ -53,11 +62,7 @@ describe("a drag press on a page that loads GSAP", () => { const tween = { targets: () => [parent], vars: { x: 100 }, duration: () => 2 }; const timelines = { main: { getChildren: () => (parentTween ? [tween] : []) } }; Object.assign(window, { gsap: { getProperty, set }, __timelines: timelines }); - const opts = pressOptions(element); - const handlers = createDomEditOverlayGestureHandlers(opts as never); - expect(handlers.startGesture("drag", PRESS as never)).toBe(true); - - expect(opts.gestureRef.current?.pathOffsetMember?.plainTranslate).toBe(true); + expect(pressDrag(element)?.pathOffsetMember?.plainTranslate).toBe(true); expect(getProperty).not.toHaveBeenCalled(); expect(set).not.toHaveBeenCalled(); expect(element.style.getPropertyValue("translate")).toBe("40px 30px"); @@ -72,10 +77,7 @@ describe("a drag press on a centred element without GSAP", () => { "position: absolute; left: 50%; top: 50%; width: 240px; height: 160px; translate: -50% -50%"; document.body.append(element); const style = element.getAttribute("style"); - const opts = pressOptions(element); - const handlers = createDomEditOverlayGestureHandlers(opts as never); - expect(handlers.startGesture("drag", PRESS as never)).toBe(true); - expect(opts.gestureRef.current?.pathOffsetMember?.initialOffset).toEqual({ x: -120, y: -80 }); + expect(pressDrag(element)?.pathOffsetMember?.initialOffset).toEqual({ x: -120, y: -80 }); expect(element.getAttribute("style")).toBe(style); }); }); From 340dcf3f2b679fb13ad7e516720be0682c495856 Mon Sep 17 00:00:00 2001 From: Miguel Angel Simon Sierra Date: Wed, 30 Sep 2026 19:25:26 -0700 Subject: [PATCH 7/9] refactor(studio): split the translate length reader into term and sum --- .../src/components/editor/plainTranslate.ts | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/studio/src/components/editor/plainTranslate.ts b/packages/studio/src/components/editor/plainTranslate.ts index 6c2c0ab45c..d454a1d2cc 100644 --- a/packages/studio/src/components/editor/plainTranslate.ts +++ b/packages/studio/src/components/editor/plainTranslate.ts @@ -8,17 +8,24 @@ type Point = { x: number; y: number }; const TERM = /^(-?\d*\.?\d+(?:e[-+]?\d+)?)(px|%)$/i; +const SIGN: Record = { "+": 1, "-": -1 }; + +function termPx(term: string | undefined, side: number): number | null { + const match = TERM.exec(term ?? ""); + return match ? Number(match[1]) * (match[2] === "%" ? side / 100 : 1) : null; +} + /** px, %, or Chrome's computed `calc(P% + Lpx)`, against the border-box side; null for min()/max()/clamp(). */ function resolveLength(value: string, side: number): number | null { const parts = (/^calc\((.*)\)$/.exec(value)?.[1] ?? value).split(" "); - let total = 0; - for (let i = 0; i < parts.length; i += 2) { - const term = TERM.exec(parts[i] ?? ""); - const sign = i === 0 || parts[i - 1] === "+" ? 1 : parts[i - 1] === "-" ? -1 : 0; - if (!term || !sign) return null; - total += sign * Number(term[1]) * (term[2] === "%" ? side / 100 : 1); + if (parts.length % 2 === 0) return null; + let total = termPx(parts[0], side); + for (let i = 1; i < parts.length && total !== null; i += 2) { + const term = termPx(parts[i + 1], side); + const sign = SIGN[parts[i] ?? ""]; + total = term === null || !sign ? null : total + sign * term; } - return parts.length % 2 === 1 ? total : null; + return total; } function borderBox( From 995003c238b703d807bc9d88f69a3a9d688073f8 Mon Sep 17 00:00:00 2001 From: Miguel Angel Simon Sierra Date: Wed, 30 Sep 2026 19:25:27 -0700 Subject: [PATCH 8/9] test(studio): cover each translate form the reader resolves or hands to Chrome --- .../components/editor/plainTranslate.test.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/studio/src/components/editor/plainTranslate.test.ts b/packages/studio/src/components/editor/plainTranslate.test.ts index c27025164e..5d45e75b15 100644 --- a/packages/studio/src/components/editor/plainTranslate.test.ts +++ b/packages/studio/src/components/editor/plainTranslate.test.ts @@ -20,6 +20,26 @@ describe("readTranslatePx", () => { expect(readTranslatePx(box(`translate: ${translate}`))).toEqual(want); }); + it.each([ + ["calc(50% - 20px) 0px", { x: 100, y: 0 }], + ["calc(50% + 20px) calc(50% - 20px)", { x: 140, y: 60 }], + ])("adds and subtracts the terms of %s", (translate, want) => { + expect(readTranslatePx(box(`translate: ${translate}`))).toEqual(want); + }); + + it.each([ + "min(10px, 5%) 0px", + "calc(2 * 10px) 0px", + "calc(10px +) 0px", + "clamp(0px, 10%, 30px) 5px", + ])("hands %s to Chrome's own resolution and puts the element's style back", (translate) => { + const element = box(`translate: ${translate}; transform: rotate(5deg)`); + const before = element.getAttribute("style"); + const read = readTranslatePx(element); + expect(Number.isFinite(read.x) && Number.isFinite(read.y)).toBe(true); + expect(element.getAttribute("style")).toBe(before); + }); + it("counts padding and border in the box a percent resolves against", () => { const element = box( "translate: 50% 50%; padding: 10px; border: 5px solid; box-sizing: content-box", From 2ea7bab83a25d9e2db424f510120d6f6c856e4e3 Mon Sep 17 00:00:00 2001 From: Miguel Angel Simon Sierra Date: Wed, 30 Sep 2026 19:26:01 -0700 Subject: [PATCH 9/9] test(studio): bank the edit accuracy cases plain-CSS moves now pass baseline.json is the edit-accuracy-gate artifact of the CI run at 2a84c103, copied byte for byte: 60 newly passing cases, none regressed. The commits since change no behaviour (a reader split and tests). --- .../tests/e2e/edit-accuracy/baseline.json | 1326 ++++++++--------- 1 file changed, 663 insertions(+), 663 deletions(-) diff --git a/packages/studio/tests/e2e/edit-accuracy/baseline.json b/packages/studio/tests/e2e/edit-accuracy/baseline.json index 1523334565..bf7b676d52 100644 --- a/packages/studio/tests/e2e/edit-accuracy/baseline.json +++ b/packages/studio/tests/e2e/edit-accuracy/baseline.json @@ -1,668 +1,668 @@ { - "studio": "796cc67", - "build": "f187bf1371f1", - "bench": "796cc67", + "studio": "892cbe7", + "build": "134113f2b48f", + "bench": "892cbe7", "grid": "full (CI)", "cases": { - "crop-hold-center-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.5,"frameP95":18.4}, - "crop-hold-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.52,"frameP95":18.5}, - "crop-hold-center-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.03,"frameP95":18.7}, - "crop-hold-center-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":2.39,"frameP95":17.2}, - "crop-hold-center-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":3.88,"frameP95":18.11}, - "crop-hold-center-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":3.05,"frameP95":17.2}, - "crop-hold-center-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":4.07,"frameP95":18.9}, - "crop-hold-center-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":3.52,"frameP95":17.6}, - "crop-hold-center-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.07,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":3.92,"frameP95":17.91}, - "crop-hold-center-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":4.12,"frameP95":17.5}, - "crop-hold-center-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":3.45,"frameP95":17.31}, - "crop-hold-center-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.07,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":2.84,"frameP95":17.2}, - "crop-hold-pct-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.39,"frameP95":18.41}, - "crop-hold-pct-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":1.77,"frameP95":17}, - "crop-hold-pct-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.3,"frameP95":18}, - "crop-hold-pct-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.08,"frameP95":18.71}, - "crop-hold-pct-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.03,"reload":0.04,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":2.56,"frameP95":17.21}, - "crop-hold-pct-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.05,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.4,"frameP95":19.9}, - "crop-hold-pct-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.7,"frameP95":18.41}, - "crop-hold-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.84,"frameP95":17.91}, - "crop-hold-pct-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.14,"reload":0.05,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.22,"frameP95":18.6}, - "crop-hold-pct-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":3.67,"frameP95":17.7}, - "crop-hold-pct-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":3.28,"frameP95":18.5}, - "crop-hold-pct-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.12,"reload":0.07,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":2.75,"frameP95":17.11}, - "crop-hold-px-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.6,"frameP95":18.21}, - "crop-hold-px-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.38,"frameP95":18.4}, - "crop-hold-px-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.03,"frameP95":17.11}, - "crop-hold-px-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":2.07,"frameP95":17.2}, - "crop-hold-px-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.03,"reload":0.04,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.28,"frameP95":17.2}, - "crop-hold-px-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.05,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.48,"frameP95":19.41}, - "crop-hold-px-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":4.34,"frameP95":18.3}, - "crop-hold-px-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.38,"frameP95":18.6}, - "crop-hold-px-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.14,"reload":0.05,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":2.5,"frameP95":17.6}, - "crop-hold-px-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":3.43,"frameP95":17.71}, - "crop-hold-px-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":2.93,"frameP95":17.1}, - "crop-hold-px-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.12,"reload":0.07,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":3.61,"frameP95":17.6}, - "crop-hold-xpercent-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.6,"frameP95":17.61}, - "crop-hold-xpercent-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.59,"frameP95":17}, - "crop-hold-xpercent-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.42,"frameP95":17.61}, - "crop-hold-xpercent-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":3.34,"frameP95":17.91}, - "crop-hold-xpercent-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":3.32,"frameP95":18.2}, - "crop-hold-xpercent-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":2.87,"frameP95":17.1}, - "crop-hold-xpercent-r30-nested-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.24,"undo":true,"dropped":1,"controlDropped":0,"work":4.24,"frameP95":22.31}, - "crop-hold-xpercent-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":3.01,"frameP95":17.81}, - "crop-hold-xpercent-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.07,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":3.54,"frameP95":17.3}, - "crop-hold-xpercent-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":3.65,"frameP95":18.2}, - "crop-hold-xpercent-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":3.37,"frameP95":17.81}, - "crop-hold-xpercent-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.07,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":2.84,"frameP95":17.4}, - "crop-none-center-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.37,"frameP95":18.41}, - "crop-none-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":1.97,"frameP95":17.71}, - "crop-none-center-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.11,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.93,"frameP95":17.8}, - "crop-none-center-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.11,"frameP95":19.61}, - "crop-none-center-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.92,"frameP95":19.21}, - "crop-none-center-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.11,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.94,"frameP95":17.4}, - "crop-none-center-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.7,"frameP95":18.6}, - "crop-none-center-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.24,"frameP95":18.2}, - "crop-none-center-r30-nested-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.08,"reload":0.07,"render":0.26,"undo":true,"dropped":1,"controlDropped":0,"work":3.14,"frameP95":17.71}, - "crop-none-center-r30-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.53,"frameP95":17.71}, - "crop-none-center-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.72,"frameP95":17.9}, - "crop-none-center-r30-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.08,"reload":0.07,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.83,"frameP95":19.5}, - "crop-none-pct-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.64,"frameP95":18.4}, - "crop-none-pct-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.02,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.43,"frameP95":17.5}, - "crop-none-pct-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.3,"frameP95":18.5}, - "crop-none-pct-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.35,"frameP95":18}, - "crop-none-pct-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.03,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.44,"frameP95":19.31}, - "crop-none-pct-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.11,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.34,"frameP95":17.21}, - "crop-none-pct-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.8,"frameP95":20.1}, - "crop-none-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.05,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":4.05,"frameP95":17.21}, - "crop-none-pct-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":2.42,"frameP95":17.6}, - "crop-none-pct-r30-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.93,"frameP95":19}, - "crop-none-pct-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.04,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.65,"frameP95":17.71}, - "crop-none-pct-r30-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.11,"reload":0.09,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.8,"frameP95":19.1}, - "crop-none-px-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.6,"frameP95":17.8}, - "crop-none-px-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.05,"frameP95":18.5}, - "crop-none-px-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.91,"frameP95":19.11}, - "crop-none-px-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.03,"undo":true,"dropped":2,"controlDropped":0,"work":3.22,"frameP95":23.3}, - "crop-none-px-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.16,"frameP95":18.6}, - "crop-none-px-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.13,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.37,"frameP95":18.6}, - "crop-none-px-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.3,"undo":true,"dropped":0,"controlDropped":0,"work":3.76,"frameP95":18.4}, - "crop-none-px-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.3,"undo":true,"dropped":0,"controlDropped":0,"work":3.99,"frameP95":18.1}, - "crop-none-px-r30-nested-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.14,"reload":0.07,"render":0.3,"undo":true,"dropped":1,"controlDropped":0,"work":3.76,"frameP95":18.41}, - "crop-none-px-r30-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.6,"frameP95":18.9}, - "crop-none-px-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.44,"frameP95":18.1}, - "crop-none-px-r30-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.14,"reload":0.07,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.36,"frameP95":18.1}, - "crop-tween-center-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.62,"frameP95":18.8}, - "crop-tween-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.7,"frameP95":17.91}, - "crop-tween-center-r0-nested-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.13,"reload":0.07,"render":0.03,"undo":true,"dropped":1,"controlDropped":0,"work":4.41,"frameP95":18.31}, - "crop-tween-center-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":2.26,"frameP95":18.1}, - "crop-tween-center-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.15,"frameP95":17.4}, - "crop-tween-center-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.13,"reload":0.07,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":2.88,"frameP95":18}, - "crop-tween-center-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.99,"frameP95":18.5}, - "crop-tween-center-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.71,"frameP95":18.6}, - "crop-tween-center-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.12,"reload":0.08,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.07,"frameP95":18.1}, - "crop-tween-center-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.26,"undo":false,"dropped":0,"controlDropped":0,"work":3.49,"frameP95":17.41}, - "crop-tween-center-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.26,"undo":false,"dropped":0,"controlDropped":0,"work":3.4,"frameP95":17.5}, - "crop-tween-center-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.12,"reload":0.08,"render":0.26,"undo":false,"dropped":0,"controlDropped":0,"work":2.98,"frameP95":17.41}, - "crop-tween-pct-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.45,"frameP95":19}, - "crop-tween-pct-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.03,"reload":0.01,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.3}, - "crop-tween-pct-r0-nested-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.07,"render":0.02,"undo":true,"dropped":1,"controlDropped":0,"work":4.1,"frameP95":21}, - "crop-tween-pct-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.03,"frameP95":17.61}, - "crop-tween-pct-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.03,"reload":0.03,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.49,"frameP95":17.71}, - "crop-tween-pct-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.05,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.43,"frameP95":19.4}, - "crop-tween-pct-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":3.92,"frameP95":19.3}, - "crop-tween-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":4,"frameP95":17.81}, - "crop-tween-pct-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.08,"reload":0.06,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":3.62,"frameP95":18.6}, - "crop-tween-pct-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.05,"reload":0,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":3.39,"frameP95":17.61}, - "crop-tween-pct-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.27,"undo":false,"dropped":1,"controlDropped":0,"work":3.22,"frameP95":19.21}, - "crop-tween-pct-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.07,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":3.78,"frameP95":18.31}, - "crop-tween-px-r0-nested-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.09,"reload":0,"render":0.02,"undo":true,"dropped":1,"controlDropped":0,"work":3.61,"frameP95":21.3}, - "crop-tween-px-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.02,"undo":true,"dropped":2,"controlDropped":0,"work":3.54,"frameP95":20.61}, - "crop-tween-px-r0-nested-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.07,"render":0.02,"undo":true,"dropped":3,"controlDropped":0,"work":4.25,"frameP95":27.2}, - "crop-tween-px-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":2.18,"frameP95":17.31}, - "crop-tween-px-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.02,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":3.53,"frameP95":17.6}, - "crop-tween-px-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.02,"undo":false,"dropped":1,"controlDropped":0,"work":3.8,"frameP95":18.5}, - "crop-tween-px-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.25,"undo":true,"dropped":0,"controlDropped":0,"work":3.61,"frameP95":18}, - "crop-tween-px-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.05,"render":0.25,"undo":true,"dropped":1,"controlDropped":0,"work":4.31,"frameP95":20.3}, - "crop-tween-px-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.08,"reload":0.05,"render":0.25,"undo":true,"dropped":0,"controlDropped":0,"work":2.53,"frameP95":17.31}, - "crop-tween-px-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.24,"undo":false,"dropped":1,"controlDropped":0,"work":3.55,"frameP95":20.9}, - "crop-tween-px-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.04,"render":0.24,"undo":false,"dropped":1,"controlDropped":0,"work":3.42,"frameP95":19.8}, - "crop-tween-px-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":3.48,"frameP95":20.5}, - "crop-tween-xpercent-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.92,"frameP95":19.2}, - "crop-tween-xpercent-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.5}, - "crop-tween-xpercent-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.13,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.69,"frameP95":19.2}, - "crop-tween-xpercent-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.4,"frameP95":19}, - "crop-tween-xpercent-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.47,"frameP95":19.6}, - "crop-tween-xpercent-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.13,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.06,"frameP95":18}, - "crop-tween-xpercent-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.48,"frameP95":18.91}, - "crop-tween-xpercent-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.83,"frameP95":18.6}, - "crop-tween-xpercent-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.12,"reload":0.08,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.28,"frameP95":20.81}, - "crop-tween-xpercent-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.26,"undo":false,"dropped":0,"controlDropped":0,"work":3.75,"frameP95":19}, - "crop-tween-xpercent-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.26,"undo":false,"dropped":0,"controlDropped":0,"work":3.39,"frameP95":18.81}, - "crop-tween-xpercent-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.12,"reload":0.08,"render":0.26,"undo":false,"dropped":0,"controlDropped":0,"work":3.88,"frameP95":17.8}, - "move-hold-center-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.3,"frameP95":18.81}, - "move-hold-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.65,"frameP95":17.6}, - "move-hold-center-r0-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.48,"frameP95":19.8}, - "move-hold-center-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":1,"controlDropped":0,"work":4.36,"frameP95":21.81}, - "move-hold-center-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.88,"frameP95":17.91}, - "move-hold-center-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.58,"frameP95":17}, - "move-hold-center-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.4,"frameP95":18}, - "move-hold-center-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.41,"frameP95":18.6}, - "move-hold-center-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.02,"frameP95":17.9}, - "move-hold-center-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.93,"frameP95":19.1}, - "move-hold-center-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.22,"frameP95":18.61}, - "move-hold-center-r30-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.7,"frameP95":18.6}, - "move-hold-pct-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.34,"frameP95":18.31}, - "move-hold-pct-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.67,"frameP95":18.61}, - "move-hold-pct-r0-nested-z50": {"pass":true,"tracking":0.08,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.82,"frameP95":18.21}, - "move-hold-pct-r0-root-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":4.14,"frameP95":18.91}, - "move-hold-pct-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.01,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":4.33,"frameP95":17.3}, - "move-hold-pct-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.05,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":4.19,"frameP95":18.4}, - "move-hold-pct-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.98,"frameP95":19.41}, - "move-hold-pct-r30-nested-z200": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.57,"frameP95":18.6}, - "move-hold-pct-r30-nested-z50": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.21,"frameP95":18.7}, - "move-hold-pct-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.43,"frameP95":19.6}, - "move-hold-pct-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.58,"frameP95":18.61}, - "move-hold-pct-r30-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.1,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.52,"frameP95":17.91}, - "move-hold-px-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.27,"frameP95":21.5}, - "move-hold-px-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.22,"frameP95":19.41}, - "move-hold-px-r0-nested-z50": {"pass":true,"tracking":0.08,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.1,"frameP95":18.3}, - "move-hold-px-r0-root-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":4.17,"frameP95":18.11}, - "move-hold-px-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.01,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":4.08,"frameP95":17.31}, - "move-hold-px-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.05,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":3.05,"frameP95":17.21}, - "move-hold-px-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.12,"frameP95":18.31}, - "move-hold-px-r30-nested-z200": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.93,"frameP95":18.41}, - "move-hold-px-r30-nested-z50": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":6.04,"frameP95":20.21}, - "move-hold-px-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.15,"frameP95":17.6}, - "move-hold-px-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.7,"frameP95":17.41}, - "move-hold-px-r30-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.1,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.03,"frameP95":18.1}, - "move-hold-xpercent-r0-nested-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17}, - "move-hold-xpercent-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.4,"frameP95":18}, - "move-hold-xpercent-r0-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.83,"frameP95":17.11}, - "move-hold-xpercent-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.52,"frameP95":19.41}, - "move-hold-xpercent-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.69,"frameP95":17.41}, - "move-hold-xpercent-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.68,"frameP95":20.6}, - "move-hold-xpercent-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.1,"frameP95":19.1}, - "move-hold-xpercent-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.07,"frameP95":18.2}, - "move-hold-xpercent-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.03,"frameP95":20.81}, - "move-hold-xpercent-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.43,"frameP95":19.5}, - "move-hold-xpercent-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.48,"frameP95":19.91}, - "move-hold-xpercent-r30-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.64,"frameP95":19.21}, - "move-none-center-r0-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":108.19,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.79,"frameP95":18.71}, - "move-none-center-r0-nested-z200": {"pass":false,"tracking":0.01,"pressJump":0,"drop":108.17,"reload":0.03,"render":0.03,"undo":true,"dropped":1,"controlDropped":0,"work":5.17,"frameP95":21.5}, - "move-none-center-r0-nested-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":108.23,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.51,"frameP95":18.6}, - "move-none-center-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.1,"frameP95":19.21}, - "move-none-center-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.59,"frameP95":21.11}, - "move-none-center-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.67,"frameP95":18.3}, - "move-none-center-r30-nested-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":108.19,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":4.88,"frameP95":19.41}, - "move-none-center-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":108.18,"reload":0.04,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":4.5,"frameP95":18.21}, - "move-none-center-r30-nested-z50": {"pass":false,"tracking":0.04,"pressJump":0,"drop":108.15,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":4.24,"frameP95":17.41}, - "move-none-center-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.09,"frameP95":18.3}, - "move-none-center-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.99,"frameP95":19.1}, - "move-none-center-r30-root-z50": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0.11,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.96,"frameP95":17.41}, - "move-none-pct-r0-nested-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":108.15,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.22,"frameP95":19.21}, - "move-none-pct-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":108.19,"reload":0.02,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.71,"frameP95":20.41}, - "move-none-pct-r0-nested-z50": {"pass":false,"tracking":0.06,"pressJump":0,"drop":108.23,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.32,"frameP95":18.8}, - "move-none-pct-r0-root-z100": {"pass":false,"tracking":0.05,"pressJump":0,"drop":72.11,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.29,"frameP95":18.71}, - "move-none-pct-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":72.14,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.63,"frameP95":18}, - "move-none-pct-r0-root-z50": {"pass":false,"tracking":0.07,"pressJump":0,"drop":72.16,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.6,"frameP95":17.3}, - "move-none-pct-r30-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":108.23,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.02,"frameP95":18.5}, - "move-none-pct-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":108.16,"reload":0.06,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.73,"frameP95":19}, - "move-none-pct-r30-nested-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":108.23,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.67,"frameP95":19.6}, - "move-none-pct-r30-root-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":72.14,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.7,"frameP95":18.21}, - "move-none-pct-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":72.11,"reload":0.04,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18}, - "move-none-pct-r30-root-z50": {"pass":false,"tracking":0.06,"pressJump":0,"drop":72.11,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":5,"frameP95":18}, - "move-none-px-r0-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":108.19,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.76,"frameP95":18.11}, - "move-none-px-r0-nested-z200": {"pass":false,"tracking":0.01,"pressJump":0,"drop":108.17,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.41,"frameP95":17.6}, - "move-none-px-r0-nested-z50": {"pass":false,"tracking":0.06,"pressJump":0,"drop":108.23,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.76,"frameP95":19.4}, - "move-none-px-r0-root-z100": {"pass":false,"tracking":0.05,"pressJump":0,"drop":50.03,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.69,"frameP95":20.6}, - "move-none-px-r0-root-z200": {"pass":false,"tracking":0.03,"pressJump":0,"drop":50.01,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.18,"frameP95":19.5}, - "move-none-px-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":50.09,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.26,"frameP95":17.5}, - "move-none-px-r30-nested-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":108.19,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.27,"frameP95":18.61}, - "move-none-px-r30-nested-z200": {"pass":false,"tracking":0.03,"pressJump":0,"drop":108.2,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.23,"frameP95":19}, - "move-none-px-r30-nested-z50": {"pass":false,"tracking":0.06,"pressJump":0,"drop":108.23,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.89,"frameP95":18.91}, - "move-none-px-r30-root-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":50.03,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.98,"frameP95":17.6}, - "move-none-px-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":50.01,"reload":0.04,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":4.13,"frameP95":17.9}, - "move-none-px-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":50.04,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":4.29,"frameP95":18.3}, - "move-tween-center-r0-nested-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":6.85,"frameP95":20}, - "move-tween-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.23,"frameP95":21.5}, - "move-tween-center-r0-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.62,"frameP95":17.31}, - "move-tween-center-r0-root-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.69,"frameP95":17.8}, - "move-tween-center-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.03,"frameP95":17.91}, - "move-tween-center-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.66,"frameP95":18}, - "move-tween-center-r30-nested-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.21,"frameP95":18.2}, - "move-tween-center-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.11,"frameP95":18.5}, - "move-tween-center-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.1,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.02,"frameP95":18.1}, - "move-tween-center-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.36,"frameP95":18}, - "move-tween-center-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.79,"frameP95":18.6}, - "move-tween-center-r30-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.1,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.66,"frameP95":19}, - "move-tween-pct-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.54,"frameP95":17.41}, - "move-tween-pct-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.92,"frameP95":18.31}, - "move-tween-pct-r0-nested-z50": {"pass":true,"tracking":0.08,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.45,"frameP95":17.61}, - "move-tween-pct-r0-root-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.29,"frameP95":18.2}, - "move-tween-pct-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.02,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.92,"frameP95":17.5}, - "move-tween-pct-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.2,"frameP95":17.31}, - "move-tween-pct-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":4.84,"frameP95":19.1}, - "move-tween-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":4.17,"frameP95":18.41}, - "move-tween-pct-r30-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.11,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":5.45,"frameP95":18.41}, - "move-tween-pct-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.36,"frameP95":18.3}, - "move-tween-pct-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.65,"frameP95":18.21}, - "move-tween-pct-r30-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.67,"frameP95":19.1}, - "move-tween-px-r0-nested-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":1,"controlDropped":0,"work":4.67,"frameP95":19.41}, - "move-tween-px-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.3,"frameP95":19.1}, - "move-tween-px-r0-nested-z50": {"pass":true,"tracking":0.08,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.09,"frameP95":18.71}, - "move-tween-px-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.23,"frameP95":18.81}, - "move-tween-px-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.47,"frameP95":18.9}, - "move-tween-px-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.39,"frameP95":17.2}, - "move-tween-px-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.92,"frameP95":17.81}, - "move-tween-px-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.54,"frameP95":18.31}, - "move-tween-px-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.51,"frameP95":18.5}, - "move-tween-px-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.16,"frameP95":17.8}, - "move-tween-px-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.48,"frameP95":18.21}, - "move-tween-px-r30-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.86,"frameP95":18.71}, - "move-tween-xpercent-r0-nested-z100": {"pass":false,"tracking":0.05,"pressJump":0,"drop":144.24,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.93,"frameP95":17.8}, - "move-tween-xpercent-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":144.22,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.82,"frameP95":19.3}, - "move-tween-xpercent-r0-nested-z50": {"pass":false,"tracking":0.07,"pressJump":0,"drop":144.22,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.52,"frameP95":19.1}, - "move-tween-xpercent-r0-root-z100": {"pass":false,"tracking":0.05,"pressJump":0,"drop":144.24,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.48,"frameP95":17.91}, - "move-tween-xpercent-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":144.22,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.84,"frameP95":18.5}, - "move-tween-xpercent-r0-root-z50": {"pass":false,"tracking":0.07,"pressJump":0,"drop":144.22,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.79,"frameP95":17.7}, - "move-tween-xpercent-r30-nested-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":144.24,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.92,"frameP95":18.6}, - "move-tween-xpercent-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":144.22,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.25,"frameP95":18.6}, - "move-tween-xpercent-r30-nested-z50": {"pass":false,"tracking":0.06,"pressJump":0,"drop":144.27,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.16,"frameP95":19.41}, - "move-tween-xpercent-r30-root-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":144.24,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.36,"frameP95":20.7}, - "move-tween-xpercent-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":144.22,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.72,"frameP95":18}, - "move-tween-xpercent-r30-root-z50": {"pass":false,"tracking":0.06,"pressJump":0,"drop":144.27,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.15,"frameP95":19}, - "nudge-hold-center-r0-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.2}, - "nudge-hold-center-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.85,"frameP95":17.61}, - "nudge-hold-center-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.92,"frameP95":17.11}, - "nudge-hold-center-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.91,"frameP95":18}, - "nudge-hold-center-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.66,"frameP95":17.5}, - "nudge-hold-center-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.5,"frameP95":17.41}, - "nudge-hold-center-r30-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.95,"frameP95":18.31}, - "nudge-hold-center-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.55,"frameP95":17.31}, - "nudge-hold-center-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":null,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.07,"frameP95":17.3}, - "nudge-hold-center-r30-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.93,"frameP95":17.2}, - "nudge-hold-center-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.77,"frameP95":17.21}, - "nudge-hold-center-r30-root-z50": {"pass":true,"tracking":0.06,"pressJump":null,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.55,"frameP95":17.21}, - "nudge-hold-pct-r0-nested-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.51,"frameP95":17.3}, - "nudge-hold-pct-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.88,"frameP95":17.8}, - "nudge-hold-pct-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.15,"frameP95":18}, - "nudge-hold-pct-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.17,"frameP95":17.2}, - "nudge-hold-pct-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.76,"frameP95":17.71}, - "nudge-hold-pct-r0-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.2}, - "nudge-hold-pct-r30-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":8.21,"frameP95":22}, - "nudge-hold-pct-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.17,"frameP95":18.7}, - "nudge-hold-pct-r30-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.87,"frameP95":17.7}, - "nudge-hold-pct-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.12,"frameP95":16.91}, - "nudge-hold-pct-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.68,"frameP95":17.1}, - "nudge-hold-pct-r30-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.08,"frameP95":17.31}, - "nudge-hold-px-r0-nested-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.73,"frameP95":17}, - "nudge-hold-px-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.48,"frameP95":19.1}, - "nudge-hold-px-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.64,"frameP95":17.31}, - "nudge-hold-px-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.04,"frameP95":17.6}, - "nudge-hold-px-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.16,"frameP95":17.6}, - "nudge-hold-px-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.15,"frameP95":17.1}, - "nudge-hold-px-r30-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.37,"frameP95":17.5}, - "nudge-hold-px-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.33,"frameP95":17.31}, - "nudge-hold-px-r30-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.67,"frameP95":17.41}, - "nudge-hold-px-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":5.03,"frameP95":19.31}, - "nudge-hold-px-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.93,"frameP95":17.4}, - "nudge-hold-px-r30-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.07,"frameP95":17.31}, - "nudge-hold-xpercent-r0-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.8,"frameP95":17.6}, - "nudge-hold-xpercent-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.21,"frameP95":17.31}, - "nudge-hold-xpercent-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.2,"frameP95":17.31}, - "nudge-hold-xpercent-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.22,"frameP95":17.31}, - "nudge-hold-xpercent-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.29,"frameP95":17.5}, - "nudge-hold-xpercent-r0-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.21}, - "nudge-hold-xpercent-r30-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.75,"frameP95":19.91}, - "nudge-hold-xpercent-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.74,"frameP95":18.1}, - "nudge-hold-xpercent-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":null,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.1,"frameP95":17.21}, - "nudge-hold-xpercent-r30-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.48,"frameP95":17.11}, - "nudge-hold-xpercent-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.2}, - "nudge-hold-xpercent-r30-root-z50": {"pass":true,"tracking":0.06,"pressJump":null,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.53,"frameP95":17.21}, - "nudge-none-center-r0-nested-z100": {"pass":false,"tracking":0.02,"pressJump":null,"drop":5.01,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.33,"frameP95":17.5}, - "nudge-none-center-r0-nested-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.01,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.38,"frameP95":17.61}, - "nudge-none-center-r0-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.06,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.69,"frameP95":17.1}, - "nudge-none-center-r0-root-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.62,"frameP95":17.5}, - "nudge-none-center-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.18,"frameP95":17.6}, - "nudge-none-center-r0-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.1}, - "nudge-none-center-r30-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.01,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.47,"frameP95":17.41}, - "nudge-none-center-r30-nested-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.01,"reload":0.04,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.28,"frameP95":17.3}, - "nudge-none-center-r30-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.06,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.21,"frameP95":17.4}, - "nudge-none-center-r30-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.69,"frameP95":18.5}, - "nudge-none-center-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.21,"frameP95":17.21}, - "nudge-none-center-r30-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.61,"frameP95":17.3}, - "nudge-none-pct-r0-nested-z100": {"pass":false,"tracking":0.02,"pressJump":null,"drop":5.01,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.06,"frameP95":17.1}, - "nudge-none-pct-r0-nested-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.01,"reload":0.02,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.77,"frameP95":17.3}, - "nudge-none-pct-r0-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.06,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.84,"frameP95":17.3}, - "nudge-none-pct-r0-root-z100": {"pass":false,"tracking":0.02,"pressJump":null,"drop":72.11,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.64,"frameP95":17.6}, - "nudge-none-pct-r0-root-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":72.12,"reload":0.02,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.2,"frameP95":17.71}, - "nudge-none-pct-r0-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":72.16,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.26,"frameP95":17.41}, - "nudge-none-pct-r30-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.06,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.17,"frameP95":17.5}, - "nudge-none-pct-r30-nested-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.01,"reload":0.06,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.55,"frameP95":17.31}, - "nudge-none-pct-r30-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.06,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.66,"frameP95":17.1}, - "nudge-none-pct-r30-root-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":72.14,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.21,"frameP95":18.91}, - "nudge-none-pct-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":null,"drop":72.12,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.23,"frameP95":17.1}, - "nudge-none-pct-r30-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":72.16,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.27,"frameP95":17.5}, - "nudge-none-px-r0-nested-z100": {"pass":false,"tracking":0.02,"pressJump":null,"drop":5.01,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.5,"frameP95":17.5}, - "nudge-none-px-r0-nested-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.01,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.33,"frameP95":17.3}, - "nudge-none-px-r0-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.06,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.03,"frameP95":17.3}, - "nudge-none-px-r0-root-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":49.99,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.21,"frameP95":19.81}, - "nudge-none-px-r0-root-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":50.03,"reload":0.02,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.83,"frameP95":19.4}, - "nudge-none-px-r0-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":50.09,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.79,"frameP95":17.5}, - "nudge-none-px-r30-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.01,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.12,"frameP95":17.8}, - "nudge-none-px-r30-nested-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.04,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.33,"frameP95":17.31}, - "nudge-none-px-r30-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":5.06,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.74,"frameP95":18.71}, - "nudge-none-px-r30-root-z100": {"pass":false,"tracking":0.02,"pressJump":null,"drop":50.03,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.68,"frameP95":17.6}, - "nudge-none-px-r30-root-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":50.01,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.31}, - "nudge-none-px-r30-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":50.09,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.52,"frameP95":17.31}, - "nudge-tween-center-r0-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.41}, - "nudge-tween-center-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.84,"frameP95":17.31}, - "nudge-tween-center-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.55,"frameP95":18.71}, - "nudge-tween-center-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.16,"frameP95":18.91}, - "nudge-tween-center-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.31,"frameP95":17.6}, - "nudge-tween-center-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.12,"frameP95":17.21}, - "nudge-tween-center-r30-nested-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.02,"frameP95":20.2}, - "nudge-tween-center-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.53,"frameP95":17.6}, - "nudge-tween-center-r30-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.1,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.21,"frameP95":18.7}, - "nudge-tween-center-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.5,"frameP95":17.8}, - "nudge-tween-center-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.48,"frameP95":19.2}, - "nudge-tween-center-r30-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.1,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":6.37,"frameP95":20}, - "nudge-tween-pct-r0-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.57,"frameP95":17.5}, - "nudge-tween-pct-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.01,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.1,"frameP95":18}, - "nudge-tween-pct-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.74,"frameP95":17.1}, - "nudge-tween-pct-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.66,"frameP95":17.4}, - "nudge-tween-pct-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.68,"frameP95":21}, - "nudge-tween-pct-r0-root-z50": {"pass":true,"tracking":0.04,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.08,"frameP95":17.2}, - "nudge-tween-pct-r30-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.9,"frameP95":17.3}, - "nudge-tween-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.9,"frameP95":21.7}, - "nudge-tween-pct-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":null,"drop":0,"reload":0.11,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.74,"frameP95":17.71}, - "nudge-tween-pct-r30-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.65,"frameP95":17.3}, - "nudge-tween-pct-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.1}, - "nudge-tween-pct-r30-root-z50": {"pass":true,"tracking":0.06,"pressJump":null,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.78,"frameP95":17.3}, - "nudge-tween-px-r0-nested-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.99,"frameP95":17.2}, - "nudge-tween-px-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.54,"frameP95":18.1}, - "nudge-tween-px-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.92,"frameP95":17.41}, - "nudge-tween-px-r0-root-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":4.64,"frameP95":17.41}, - "nudge-tween-px-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":4.03,"frameP95":17.2}, - "nudge-tween-px-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":2.69,"frameP95":17.11}, - "nudge-tween-px-r30-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.71,"frameP95":18.21}, - "nudge-tween-px-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.28,"frameP95":17.6}, - "nudge-tween-px-r30-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.5,"frameP95":19.1}, - "nudge-tween-px-r30-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.68,"frameP95":17.31}, - "nudge-tween-px-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.54,"frameP95":17.3}, - "nudge-tween-px-r30-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.01,"frameP95":17.4}, - "nudge-tween-xpercent-r0-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.27,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.05,"frameP95":21.2}, - "nudge-tween-xpercent-r0-nested-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.22,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.83,"frameP95":17.8}, - "nudge-tween-xpercent-r0-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.22,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.46,"frameP95":17.2}, - "nudge-tween-xpercent-r0-root-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.27,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.69,"frameP95":17.41}, - "nudge-tween-xpercent-r0-root-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.22,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.34,"frameP95":17.41}, - "nudge-tween-xpercent-r0-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.22,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.29,"frameP95":17.2}, - "nudge-tween-xpercent-r30-nested-z100": {"pass":false,"tracking":0.02,"pressJump":null,"drop":144.24,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.08,"frameP95":17.41}, - "nudge-tween-xpercent-r30-nested-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.24,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.26,"frameP95":17.4}, - "nudge-tween-xpercent-r30-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.32,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.29,"frameP95":17.5}, - "nudge-tween-xpercent-r30-root-z100": {"pass":false,"tracking":0.02,"pressJump":null,"drop":144.24,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.7,"frameP95":17.41}, - "nudge-tween-xpercent-r30-root-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.24,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.06,"frameP95":18.2}, - "nudge-tween-xpercent-r30-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.32,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.25,"frameP95":17.6}, - "resize-hold-center-r0-nested-z100": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.75,"frameP95":20}, - "resize-hold-center-r0-nested-z200": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.01,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.72,"frameP95":19.2}, - "resize-hold-center-r0-nested-z50": {"pass":true,"tracking":0.27,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.47,"frameP95":17.11}, - "resize-hold-center-r0-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":0,"reload":60.2,"render":50,"undo":false,"dropped":0,"controlDropped":0,"work":4.84,"frameP95":19.81}, - "resize-hold-center-r0-root-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":60.2,"render":50,"undo":false,"dropped":0,"controlDropped":0,"work":4.34,"frameP95":18.7}, - "resize-hold-center-r0-root-z50": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":60.21,"render":50,"undo":false,"dropped":0,"controlDropped":0,"work":4.59,"frameP95":19.5}, - "resize-hold-center-r30-nested-z100": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.81,"frameP95":18.6}, - "resize-hold-center-r30-nested-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.61}, - "resize-hold-center-r30-nested-z50": {"pass":true,"tracking":0.31,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.76,"frameP95":18}, - "resize-hold-center-r30-root-z100": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":60.2,"render":60.06,"undo":false,"dropped":0,"controlDropped":0,"work":5.4,"frameP95":19.11}, - "resize-hold-center-r30-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":60.19,"render":60.06,"undo":false,"dropped":0,"controlDropped":0,"work":3.02,"frameP95":17.41}, - "resize-hold-center-r30-root-z50": {"pass":false,"tracking":0.31,"pressJump":0,"drop":0,"reload":60.24,"render":60.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.69,"frameP95":17.9}, - "resize-hold-pct-r0-nested-z100": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.27,"frameP95":18.81}, - "resize-hold-pct-r0-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.86,"frameP95":19.11}, - "resize-hold-pct-r0-nested-z50": {"pass":true,"tracking":0.3,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.47,"frameP95":19.6}, - "resize-hold-pct-r0-root-z100": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":120.41,"render":100.02,"undo":false,"dropped":0,"controlDropped":0,"work":4.76,"frameP95":20.31}, - "resize-hold-pct-r0-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":120.38,"render":100.02,"undo":false,"dropped":0,"controlDropped":0,"work":4.24,"frameP95":19.1}, - "resize-hold-pct-r0-root-z50": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":120.34,"render":100.02,"undo":false,"dropped":0,"controlDropped":0,"work":4.94,"frameP95":20}, - "resize-hold-pct-r30-nested-z100": {"pass":true,"tracking":0.29,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.45,"frameP95":19.91}, - "resize-hold-pct-r30-nested-z200": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.94,"frameP95":18.61}, - "resize-hold-pct-r30-nested-z50": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.2,"frameP95":19.41}, - "resize-hold-pct-r30-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":0,"reload":116.24,"render":110.06,"undo":false,"dropped":0,"controlDropped":0,"work":2.83,"frameP95":18.4}, - "resize-hold-pct-r30-root-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":116.29,"render":110.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.73,"frameP95":18.31}, - "resize-hold-pct-r30-root-z50": {"pass":false,"tracking":0.32,"pressJump":0,"drop":0,"reload":116.3,"render":110.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.48,"frameP95":18.71}, - "resize-hold-px-r0-nested-z100": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.8,"frameP95":19.8}, - "resize-hold-px-r0-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.16,"frameP95":18.41}, - "resize-hold-px-r0-nested-z50": {"pass":true,"tracking":0.3,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.16,"frameP95":18.71}, - "resize-hold-px-r0-root-z100": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":120.41,"render":100.02,"undo":false,"dropped":1,"controlDropped":0,"work":4.77,"frameP95":21.2}, - "resize-hold-px-r0-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":120.38,"render":100.02,"undo":false,"dropped":0,"controlDropped":0,"work":4.5,"frameP95":18}, - "resize-hold-px-r0-root-z50": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":120.34,"render":100.02,"undo":false,"dropped":0,"controlDropped":0,"work":5.97,"frameP95":18.5}, - "resize-hold-px-r30-nested-z100": {"pass":true,"tracking":0.29,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":7.81,"frameP95":19.5}, - "resize-hold-px-r30-nested-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.4}, - "resize-hold-px-r30-nested-z50": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":6.1,"frameP95":19.2}, - "resize-hold-px-r30-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":0,"reload":116.24,"render":110.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.76,"frameP95":18.7}, - "resize-hold-px-r30-root-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":116.29,"render":110.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.46,"frameP95":20}, - "resize-hold-px-r30-root-z50": {"pass":false,"tracking":0.32,"pressJump":0,"drop":0,"reload":116.3,"render":110.06,"undo":false,"dropped":0,"controlDropped":0,"work":5.03,"frameP95":19.5}, - "resize-hold-xpercent-r0-nested-z100": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.99,"frameP95":19.71}, - "resize-hold-xpercent-r0-nested-z200": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.01,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.92,"frameP95":19.3}, - "resize-hold-xpercent-r0-nested-z50": {"pass":true,"tracking":0.27,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.25,"frameP95":18.31}, - "resize-hold-xpercent-r0-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":0,"reload":60.2,"render":50,"undo":false,"dropped":0,"controlDropped":0,"work":5.01,"frameP95":18.21}, - "resize-hold-xpercent-r0-root-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":60.2,"render":50,"undo":false,"dropped":0,"controlDropped":0,"work":3.76,"frameP95":18}, - "resize-hold-xpercent-r0-root-z50": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":60.21,"render":50,"undo":false,"dropped":0,"controlDropped":0,"work":4.84,"frameP95":19.31}, - "resize-hold-xpercent-r30-nested-z100": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.45,"frameP95":18.81}, - "resize-hold-xpercent-r30-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.33,"frameP95":18.6}, - "resize-hold-xpercent-r30-nested-z50": {"pass":true,"tracking":0.31,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.62,"frameP95":19.81}, - "resize-hold-xpercent-r30-root-z100": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":60.2,"render":60.06,"undo":false,"dropped":0,"controlDropped":0,"work":2.45,"frameP95":17.8}, - "resize-hold-xpercent-r30-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":60.19,"render":60.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.27,"frameP95":19.31}, - "resize-hold-xpercent-r30-root-z50": {"pass":false,"tracking":0.31,"pressJump":0,"drop":0,"reload":60.24,"render":60.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.04,"frameP95":17.5}, - "resize-none-center-r0-nested-z100": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.17,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.78,"frameP95":18.5}, - "resize-none-center-r0-nested-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.19,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.67,"frameP95":17.9}, - "resize-none-center-r0-nested-z50": {"pass":false,"tracking":0.23,"pressJump":0,"drop":60.17,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.41,"frameP95":18.5}, - "resize-none-center-r0-root-z100": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.17,"reload":0,"render":49.98,"undo":true,"dropped":0,"controlDropped":0,"work":4.47,"frameP95":18}, - "resize-none-center-r0-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.19,"reload":0.03,"render":49.98,"undo":true,"dropped":0,"controlDropped":0,"work":4.17,"frameP95":17.91}, - "resize-none-center-r0-root-z50": {"pass":false,"tracking":0.23,"pressJump":0,"drop":60.17,"reload":0.05,"render":49.98,"undo":true,"dropped":0,"controlDropped":0,"work":4.93,"frameP95":19}, - "resize-none-center-r30-nested-z100": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.2,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":4.53,"frameP95":17.81}, - "resize-none-center-r30-nested-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":60.19,"reload":0.04,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":4.75,"frameP95":17.61}, - "resize-none-center-r30-nested-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.18,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":5.94,"frameP95":18.71}, - "resize-none-center-r30-root-z100": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.2,"reload":0,"render":60.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.98,"frameP95":17.61}, - "resize-none-center-r30-root-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":60.19,"reload":0.04,"render":60.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.81,"frameP95":19}, - "resize-none-center-r30-root-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.18,"reload":0.07,"render":60.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.89,"frameP95":18.1}, - "resize-none-pct-r0-nested-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":60.2,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.63,"frameP95":18.5}, - "resize-none-pct-r0-nested-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.19,"reload":0.02,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.82,"frameP95":18.5}, - "resize-none-pct-r0-nested-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.17,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.82,"frameP95":17.31}, - "resize-none-pct-r0-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":222.58,"reload":0,"render":100.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.54,"frameP95":18}, - "resize-none-pct-r0-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":222.59,"reload":0.03,"render":100.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.25,"frameP95":18}, - "resize-none-pct-r0-root-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":222.56,"reload":0.07,"render":100.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.6,"frameP95":19}, - "resize-none-pct-r30-nested-z100": {"pass":false,"tracking":0.23,"pressJump":0,"drop":60.22,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.75,"frameP95":18.3}, - "resize-none-pct-r30-nested-z200": {"pass":false,"tracking":0.26,"pressJump":0,"drop":60.21,"reload":0.06,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.21,"frameP95":17.71}, - "resize-none-pct-r30-nested-z50": {"pass":false,"tracking":0.29,"pressJump":0,"drop":60.22,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.27,"frameP95":18.6}, - "resize-none-pct-r30-root-z100": {"pass":false,"tracking":0.23,"pressJump":0,"drop":216.61,"reload":0,"render":110.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.51,"frameP95":18}, - "resize-none-pct-r30-root-z200": {"pass":false,"tracking":0.25,"pressJump":0,"drop":216.57,"reload":0.04,"render":110.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.62,"frameP95":19.4}, - "resize-none-pct-r30-root-z50": {"pass":false,"tracking":0.37,"pressJump":0,"drop":216.6,"reload":0.07,"render":110.05,"undo":true,"dropped":0,"controlDropped":0,"work":5.35,"frameP95":18.1}, - "resize-none-px-r0-nested-z100": {"pass":false,"tracking":0.21,"pressJump":0,"drop":60.17,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.85,"frameP95":18.3}, - "resize-none-px-r0-nested-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.19,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5,"frameP95":18.21}, - "resize-none-px-r0-nested-z50": {"pass":false,"tracking":0.27,"pressJump":0,"drop":60.17,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.51,"frameP95":18.6}, - "resize-none-px-r0-root-z100": {"pass":false,"tracking":0.23,"pressJump":0,"drop":170.31,"reload":0,"render":100,"undo":true,"dropped":0,"controlDropped":0,"work":5.4,"frameP95":21.1}, - "resize-none-px-r0-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":170.32,"reload":0.03,"render":100,"undo":true,"dropped":0,"controlDropped":0,"work":4.86,"frameP95":18.21}, - "resize-none-px-r0-root-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":170.3,"reload":0.07,"render":100,"undo":true,"dropped":0,"controlDropped":0,"work":4.73,"frameP95":18}, - "resize-none-px-r30-nested-z100": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.2,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.5,"frameP95":18.5}, - "resize-none-px-r30-nested-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":60.2,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.54,"frameP95":18.9}, - "resize-none-px-r30-nested-z50": {"pass":false,"tracking":0.28,"pressJump":0,"drop":60.24,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.38,"frameP95":19.3}, - "resize-none-px-r30-root-z100": {"pass":false,"tracking":0.3,"pressJump":0,"drop":165.53,"reload":0,"render":110.05,"undo":true,"dropped":0,"controlDropped":0,"work":6.47,"frameP95":19.5}, - "resize-none-px-r30-root-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":165.5,"reload":0.06,"render":110.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.28,"frameP95":19.11}, - "resize-none-px-r30-root-z50": {"pass":false,"tracking":0.29,"pressJump":0,"drop":165.53,"reload":0.05,"render":110.05,"undo":true,"dropped":0,"controlDropped":0,"work":5.17,"frameP95":17.9}, - "resize-tween-center-r0-nested-z100": {"pass":true,"tracking":0.27,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.93,"frameP95":19}, - "resize-tween-center-r0-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.8,"frameP95":21.5}, - "resize-tween-center-r0-nested-z50": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.41,"frameP95":18.1}, - "resize-tween-center-r0-root-z100": {"pass":true,"tracking":0.27,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.81,"frameP95":19.81}, - "resize-tween-center-r0-root-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.76,"frameP95":18.9}, - "resize-tween-center-r0-root-z50": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.58,"frameP95":18.5}, - "resize-tween-center-r30-nested-z100": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.98,"frameP95":20.11}, - "resize-tween-center-r30-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.48,"frameP95":19.2}, - "resize-tween-center-r30-nested-z50": {"pass":true,"tracking":0.38,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.49,"frameP95":18.91}, - "resize-tween-center-r30-root-z100": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.56,"frameP95":18.81}, - "resize-tween-center-r30-root-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.06,"frameP95":19.81}, - "resize-tween-center-r30-root-z50": {"pass":true,"tracking":0.38,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.25,"frameP95":19.6}, - "resize-tween-pct-r0-nested-z100": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":6.12,"frameP95":20.21}, - "resize-tween-pct-r0-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.86,"frameP95":18.8}, - "resize-tween-pct-r0-nested-z50": {"pass":true,"tracking":0.3,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":6.15,"frameP95":19.5}, - "resize-tween-pct-r0-root-z100": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":1,"controlDropped":1,"work":6.16,"frameP95":21}, - "resize-tween-pct-r0-root-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.3,"frameP95":18.11}, - "resize-tween-pct-r0-root-z50": {"pass":true,"tracking":0.27,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.88,"frameP95":17.41}, - "resize-tween-pct-r30-nested-z100": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.93,"frameP95":20.1}, - "resize-tween-pct-r30-nested-z200": {"pass":true,"tracking":0.25,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.37,"frameP95":18.8}, - "resize-tween-pct-r30-nested-z50": {"pass":true,"tracking":0.28,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.76,"frameP95":19.5}, - "resize-tween-pct-r30-root-z100": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.7,"frameP95":17.5}, - "resize-tween-pct-r30-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.04,"render":0.07,"undo":true,"dropped":1,"controlDropped":0,"work":5.3,"frameP95":20.91}, - "resize-tween-pct-r30-root-z50": {"pass":false,"tracking":0.31,"pressJump":0,"drop":0,"reload":0.07,"render":0.07,"undo":true,"dropped":1,"controlDropped":0,"work":5.05,"frameP95":18}, - "resize-tween-px-r0-nested-z100": {"pass":true,"tracking":0.22,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.32,"frameP95":18.7}, - "resize-tween-px-r0-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.02,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.65,"frameP95":19.8}, - "resize-tween-px-r0-nested-z50": {"pass":true,"tracking":0.31,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.56,"frameP95":17.31}, - "resize-tween-px-r0-root-z100": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":6.21,"frameP95":18.11}, - "resize-tween-px-r0-root-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.4,"frameP95":17.61}, - "resize-tween-px-r0-root-z50": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.98,"frameP95":18.7}, - "resize-tween-px-r30-nested-z100": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":1,"controlDropped":0,"work":5.58,"frameP95":19.21}, - "resize-tween-px-r30-nested-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.81}, - "resize-tween-px-r30-nested-z50": {"pass":true,"tracking":0.28,"pressJump":0,"drop":0,"reload":0.1,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.34,"frameP95":20.3}, - "resize-tween-px-r30-root-z100": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.99,"frameP95":18.71}, - "resize-tween-px-r30-root-z200": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.98,"frameP95":17.8}, - "resize-tween-px-r30-root-z50": {"pass":true,"tracking":0.3,"pressJump":0,"drop":0,"reload":0.11,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.19,"frameP95":18.8}, - "resize-tween-xpercent-r0-nested-z100": {"pass":false,"tracking":0.27,"pressJump":0,"drop":204.41,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.63,"frameP95":19}, - "resize-tween-xpercent-r0-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.57,"frameP95":21.21}, - "resize-tween-xpercent-r0-nested-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":204.44,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.74,"frameP95":18.41}, - "resize-tween-xpercent-r0-root-z100": {"pass":false,"tracking":0.27,"pressJump":0,"drop":204.41,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":6.18,"frameP95":18.41}, - "resize-tween-xpercent-r0-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":1,"controlDropped":0,"work":5.38,"frameP95":19.81}, - "resize-tween-xpercent-r0-root-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":204.44,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.59,"frameP95":18}, - "resize-tween-xpercent-r30-nested-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":204.44,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.22,"frameP95":18}, - "resize-tween-xpercent-r30-nested-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":204.4,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.45,"frameP95":20.31}, - "resize-tween-xpercent-r30-nested-z50": {"pass":false,"tracking":0.38,"pressJump":0,"drop":204.44,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.95,"frameP95":18.21}, - "resize-tween-xpercent-r30-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":204.44,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.62,"frameP95":18.7}, - "resize-tween-xpercent-r30-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":204.4,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.29,"frameP95":18.31}, - "resize-tween-xpercent-r30-root-z50": {"pass":false,"tracking":0.38,"pressJump":0,"drop":204.44,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.06,"frameP95":19.3}, - "rotate-hold-center-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.79,"frameP95":19.31}, - "rotate-hold-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.02,"frameP95":17.41}, - "rotate-hold-center-r0-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.1,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.8,"frameP95":17.8}, - "rotate-hold-center-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.82,"frameP95":20.31}, - "rotate-hold-center-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.18,"frameP95":20.11}, - "rotate-hold-center-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.1,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.27,"frameP95":18.41}, - "rotate-hold-center-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.09,"frameP95":19.41}, - "rotate-hold-center-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.06,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.45,"frameP95":18.3}, - "rotate-hold-center-r30-nested-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.11,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.65,"frameP95":17.71}, - "rotate-hold-center-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.86,"frameP95":17.9}, - "rotate-hold-center-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.06,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.93,"frameP95":17.6}, - "rotate-hold-center-r30-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.11,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.5,"frameP95":18.3}, - "rotate-hold-pct-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.09,"frameP95":17.81}, - "rotate-hold-pct-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.68,"frameP95":18.31}, - "rotate-hold-pct-r0-nested-z50": {"pass":true,"tracking":0.09,"pressJump":0,"drop":0,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.94,"frameP95":17.7}, - "rotate-hold-pct-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.88,"frameP95":17.8}, - "rotate-hold-pct-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.05,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17}, - "rotate-hold-pct-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.05,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.03,"frameP95":17.6}, - "rotate-hold-pct-r30-nested-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":1.56,"frameP95":17}, - "rotate-hold-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.05,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.17,"frameP95":18.81}, - "rotate-hold-pct-r30-nested-z50": {"pass":true,"tracking":0.09,"pressJump":0,"drop":0,"reload":0.07,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.32,"frameP95":19}, - "rotate-hold-pct-r30-root-z100": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0,"render":0.09,"undo":true,"dropped":0,"controlDropped":0,"work":2.8,"frameP95":19.5}, - "rotate-hold-pct-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.88,"frameP95":19.5}, - "rotate-hold-pct-r30-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.1,"render":0.09,"undo":true,"dropped":0,"controlDropped":0,"work":2.54,"frameP95":17.5}, - "rotate-hold-px-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.28,"frameP95":18.1}, - "rotate-hold-px-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.82,"frameP95":18.41}, - "rotate-hold-px-r0-nested-z50": {"pass":true,"tracking":0.09,"pressJump":0,"drop":0,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.11,"frameP95":17.81}, - "rotate-hold-px-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.88,"frameP95":20.5}, - "rotate-hold-px-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.05,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.64,"frameP95":20.2}, - "rotate-hold-px-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.05,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.65,"frameP95":17.7}, - "rotate-hold-px-r30-nested-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.91,"frameP95":18}, - "rotate-hold-px-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.05,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.03,"frameP95":18.2}, - "rotate-hold-px-r30-nested-z50": {"pass":true,"tracking":0.09,"pressJump":0,"drop":0,"reload":0.07,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.86,"frameP95":20.7}, - "rotate-hold-px-r30-root-z100": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0,"render":0.09,"undo":true,"dropped":0,"controlDropped":0,"work":2.7,"frameP95":20}, - "rotate-hold-px-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.98,"frameP95":17.91}, - "rotate-hold-px-r30-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.1,"render":0.09,"undo":true,"dropped":0,"controlDropped":0,"work":1.98,"frameP95":17.91}, - "rotate-hold-xpercent-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.96,"frameP95":18.5}, - "rotate-hold-xpercent-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.97,"frameP95":17.5}, - "rotate-hold-xpercent-r0-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.1,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.83,"frameP95":19}, - "rotate-hold-xpercent-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.37,"frameP95":18.31}, - "rotate-hold-xpercent-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":1.49,"frameP95":17.3}, - "rotate-hold-xpercent-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.1,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.36,"frameP95":17.4}, - "rotate-hold-xpercent-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.05,"frameP95":17.91}, - "rotate-hold-xpercent-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.06,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.56,"frameP95":18.31}, - "rotate-hold-xpercent-r30-nested-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.11,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.76,"frameP95":18.81}, - "rotate-hold-xpercent-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.82,"frameP95":17.6}, - "rotate-hold-xpercent-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.06,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.54,"frameP95":18.7}, - "rotate-hold-xpercent-r30-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.11,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.51,"frameP95":17.5}, - "rotate-none-center-r0-nested-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.46,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.22,"frameP95":22}, - "rotate-none-center-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.44,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.39,"frameP95":19.71}, - "rotate-none-center-r0-nested-z50": {"pass":false,"tracking":0.1,"pressJump":0,"drop":62.43,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.03,"frameP95":21.5}, - "rotate-none-center-r0-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.72,"frameP95":17.4}, - "rotate-none-center-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.19,"frameP95":17.9}, - "rotate-none-center-r0-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.13,"frameP95":18.6}, - "rotate-none-center-r30-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":62.46,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.41,"frameP95":18.6}, - "rotate-none-center-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.43,"reload":0.04,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.05,"frameP95":17.41}, - "rotate-none-center-r30-nested-z50": {"pass":false,"tracking":0.09,"pressJump":0,"drop":62.47,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.88,"frameP95":17.71}, - "rotate-none-center-r30-root-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":74.67,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.46,"frameP95":17.21}, - "rotate-none-center-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":74.66,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.73,"frameP95":20}, - "rotate-none-center-r30-root-z50": {"pass":false,"tracking":0.09,"pressJump":0,"drop":74.73,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.61,"frameP95":17.5}, - "rotate-none-pct-r0-nested-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.43,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.44,"frameP95":17.71}, - "rotate-none-pct-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.47,"reload":0.02,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.98,"frameP95":18}, - "rotate-none-pct-r0-nested-z50": {"pass":false,"tracking":0.07,"pressJump":0,"drop":62.49,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.83,"frameP95":20}, - "rotate-none-pct-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.48,"frameP95":17.71}, - "rotate-none-pct-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.48,"frameP95":17.4}, - "rotate-none-pct-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.18,"frameP95":17.5}, - "rotate-none-pct-r30-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":62.47,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.51,"frameP95":17.8}, - "rotate-none-pct-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.44,"reload":0.06,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.72,"frameP95":17.3}, - "rotate-none-pct-r30-nested-z50": {"pass":false,"tracking":0.1,"pressJump":0,"drop":62.45,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.29,"frameP95":17.5}, - "rotate-none-pct-r30-root-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":74.71,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.46,"frameP95":17.41}, - "rotate-none-pct-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":74.68,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.7,"frameP95":18.71}, - "rotate-none-pct-r30-root-z50": {"pass":false,"tracking":0.11,"pressJump":0,"drop":74.73,"reload":0.11,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":1.64,"frameP95":17.21}, - "rotate-none-px-r0-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":62.43,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.25,"frameP95":18.4}, - "rotate-none-px-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.44,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.9,"frameP95":19.6}, - "rotate-none-px-r0-nested-z50": {"pass":false,"tracking":0.08,"pressJump":0,"drop":62.43,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.34,"frameP95":19.41}, - "rotate-none-px-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.98,"frameP95":17.4}, - "rotate-none-px-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.08,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":1.95,"frameP95":18.8}, - "rotate-none-px-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.07,"frameP95":21.6}, - "rotate-none-px-r30-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":62.45,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.16,"frameP95":17.21}, - "rotate-none-px-r30-nested-z200": {"pass":false,"tracking":0.03,"pressJump":0,"drop":62.43,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.88,"frameP95":17.61}, - "rotate-none-px-r30-nested-z50": {"pass":false,"tracking":0.1,"pressJump":0,"drop":62.47,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.17,"frameP95":17.4}, - "rotate-none-px-r30-root-z100": {"pass":false,"tracking":0.05,"pressJump":0,"drop":74.68,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.51,"frameP95":17.4}, - "rotate-none-px-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":74.71,"reload":0.08,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.29,"frameP95":20}, - "rotate-none-px-r30-root-z50": {"pass":false,"tracking":0.09,"pressJump":0,"drop":74.65,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.82,"frameP95":18}, - "rotate-tween-center-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.9,"frameP95":19.3}, - "rotate-tween-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.18,"frameP95":17.5}, - "rotate-tween-center-r0-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.25,"frameP95":19.7}, - "rotate-tween-center-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.47,"frameP95":18.61}, - "rotate-tween-center-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.78,"frameP95":17.9}, - "rotate-tween-center-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.73,"frameP95":17.6}, - "rotate-tween-center-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.54,"frameP95":19.5}, - "rotate-tween-center-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.07,"frameP95":18.6}, - "rotate-tween-center-r30-nested-z50": {"pass":true,"tracking":0.11,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.82,"frameP95":17.91}, - "rotate-tween-center-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.94,"frameP95":18.31}, - "rotate-tween-center-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.68,"frameP95":20.5}, - "rotate-tween-center-r30-root-z50": {"pass":true,"tracking":0.11,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.03,"frameP95":18.41}, - "rotate-tween-pct-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.95,"frameP95":17.8}, - "rotate-tween-pct-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.65,"frameP95":17.5}, - "rotate-tween-pct-r0-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.73,"frameP95":19.31}, - "rotate-tween-pct-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.08,"frameP95":17.71}, - "rotate-tween-pct-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":1.81,"frameP95":17.21}, - "rotate-tween-pct-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.59,"frameP95":19.2}, - "rotate-tween-pct-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.06,"frameP95":19}, - "rotate-tween-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.06,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.56,"frameP95":17.31}, - "rotate-tween-pct-r30-nested-z50": {"pass":true,"tracking":0.09,"pressJump":0,"drop":0,"reload":0.07,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.51,"frameP95":17.8}, - "rotate-tween-pct-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.31,"frameP95":20}, - "rotate-tween-pct-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.07,"render":0.09,"undo":true,"dropped":0,"controlDropped":0,"work":2.97,"frameP95":18.1}, - "rotate-tween-pct-r30-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.99,"frameP95":17.71}, - "rotate-tween-px-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.68,"frameP95":22.5}, - "rotate-tween-px-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.06,"render":0.07,"undo":true,"dropped":1,"controlDropped":0,"work":2.72,"frameP95":19.71}, - "rotate-tween-px-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.1,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.97,"frameP95":19.21}, - "rotate-tween-px-r0-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.46,"frameP95":17.71}, - "rotate-tween-px-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.02,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.73,"frameP95":17.71}, - "rotate-tween-px-r0-root-z50": {"pass":true,"tracking":0.08,"pressJump":0,"drop":0,"reload":0.05,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.67,"frameP95":17.6}, - "rotate-tween-px-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.94,"frameP95":18.21}, - "rotate-tween-px-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.2,"frameP95":18.4}, - "rotate-tween-px-r30-nested-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.58,"frameP95":19.5}, - "rotate-tween-px-r30-root-z100": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.7,"frameP95":17.61}, - "rotate-tween-px-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4,"frameP95":21.71}, - "rotate-tween-px-r30-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.11,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":1.45,"frameP95":17.3}, - "rotate-tween-xpercent-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.34,"frameP95":17.71}, - "rotate-tween-xpercent-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.9,"frameP95":17.41}, - "rotate-tween-xpercent-r0-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.22,"frameP95":19.2}, - "rotate-tween-xpercent-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.92,"frameP95":19.9}, - "rotate-tween-xpercent-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":1.79,"frameP95":17.41}, - "rotate-tween-xpercent-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.83,"frameP95":17.9}, - "rotate-tween-xpercent-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.08,"frameP95":19.5}, - "rotate-tween-xpercent-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.92,"frameP95":18.2}, - "rotate-tween-xpercent-r30-nested-z50": {"pass":true,"tracking":0.11,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.16,"frameP95":18.31}, - "rotate-tween-xpercent-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.72,"frameP95":18.6}, - "rotate-tween-xpercent-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.43,"frameP95":17.61}, - "rotate-tween-xpercent-r30-root-z50": {"pass":true,"tracking":0.11,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.66,"frameP95":17.61} + "crop-hold-center-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.26,"frameP95":19.1}, + "crop-hold-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.45,"frameP95":18.3}, + "crop-hold-center-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":1.86,"frameP95":17.8}, + "crop-hold-center-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":2.91,"frameP95":18.3}, + "crop-hold-center-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":3.29,"frameP95":18.6}, + "crop-hold-center-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":1.98,"frameP95":18.1}, + "crop-hold-center-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":4.48,"frameP95":19.31}, + "crop-hold-center-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":2.2,"frameP95":18.7}, + "crop-hold-center-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.07,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":3.09,"frameP95":18.6}, + "crop-hold-center-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":3.96,"frameP95":18.5}, + "crop-hold-center-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":2.5,"frameP95":17}, + "crop-hold-center-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.07,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":2.69,"frameP95":18.31}, + "crop-hold-pct-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.46,"frameP95":17.6}, + "crop-hold-pct-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.09,"frameP95":17}, + "crop-hold-pct-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.75,"frameP95":17.6}, + "crop-hold-pct-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.62,"frameP95":17.71}, + "crop-hold-pct-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.03,"reload":0.04,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":2.51,"frameP95":17}, + "crop-hold-pct-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.05,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.63,"frameP95":18.11}, + "crop-hold-pct-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":2.51,"frameP95":17.41}, + "crop-hold-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.59,"frameP95":18.8}, + "crop-hold-pct-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.14,"reload":0.05,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":4.56,"frameP95":19.9}, + "crop-hold-pct-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.41}, + "crop-hold-pct-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":3.2,"frameP95":17.8}, + "crop-hold-pct-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.12,"reload":0.07,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":3.51,"frameP95":18.5}, + "crop-hold-px-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.29,"frameP95":19}, + "crop-hold-px-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.38,"frameP95":18.5}, + "crop-hold-px-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.31,"frameP95":17.81}, + "crop-hold-px-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":2.79,"frameP95":18.1}, + "crop-hold-px-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.03,"reload":0.04,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.42,"frameP95":18.31}, + "crop-hold-px-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.05,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":2.21,"frameP95":17.1}, + "crop-hold-px-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.88,"frameP95":18.81}, + "crop-hold-px-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":16.91}, + "crop-hold-px-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.14,"reload":0.05,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.16,"frameP95":20.2}, + "crop-hold-px-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":3.52,"frameP95":17.5}, + "crop-hold-px-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":1.6,"frameP95":17}, + "crop-hold-px-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.12,"reload":0.07,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":2.62,"frameP95":17.21}, + "crop-hold-xpercent-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.6,"frameP95":17.41}, + "crop-hold-xpercent-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.87,"frameP95":17.31}, + "crop-hold-xpercent-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.54,"frameP95":17.5}, + "crop-hold-xpercent-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":4.25,"frameP95":19.11}, + "crop-hold-xpercent-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":4.56,"frameP95":17.7}, + "crop-hold-xpercent-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":3.61,"frameP95":18.91}, + "crop-hold-xpercent-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":3.65,"frameP95":18.5}, + "crop-hold-xpercent-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":3.11,"frameP95":17.7}, + "crop-hold-xpercent-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.07,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":3.09,"frameP95":17.2}, + "crop-hold-xpercent-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":null,"frameP95":16.91}, + "crop-hold-xpercent-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":4.72,"frameP95":20.3}, + "crop-hold-xpercent-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.07,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.6}, + "crop-none-center-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.39,"frameP95":18.21}, + "crop-none-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.74,"frameP95":17.11}, + "crop-none-center-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.11,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.16,"frameP95":18.5}, + "crop-none-center-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.69,"frameP95":17.9}, + "crop-none-center-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.16,"frameP95":17.21}, + "crop-none-center-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.11,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.99,"frameP95":17.5}, + "crop-none-center-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.51,"frameP95":18.71}, + "crop-none-center-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.43,"frameP95":18.5}, + "crop-none-center-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.08,"reload":0.07,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.88,"frameP95":18.9}, + "crop-none-center-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.8}, + "crop-none-center-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.53,"frameP95":19.3}, + "crop-none-center-r30-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.08,"reload":0.07,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.64,"frameP95":17.8}, + "crop-none-pct-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.17,"frameP95":17.7}, + "crop-none-pct-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.02,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.87,"frameP95":18.31}, + "crop-none-pct-r0-nested-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.71}, + "crop-none-pct-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.74,"frameP95":17.3}, + "crop-none-pct-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.03,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.11,"frameP95":17.2}, + "crop-none-pct-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.11,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.15,"frameP95":18}, + "crop-none-pct-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.22,"frameP95":18.5}, + "crop-none-pct-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.05,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17}, + "crop-none-pct-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.06,"frameP95":17.6}, + "crop-none-pct-r30-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.31,"frameP95":18.1}, + "crop-none-pct-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.04,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.16,"frameP95":17.71}, + "crop-none-pct-r30-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.11,"reload":0.09,"render":0.27,"undo":true,"dropped":0,"controlDropped":0,"work":3.94,"frameP95":17.81}, + "crop-none-px-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.02,"frameP95":18}, + "crop-none-px-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.97,"frameP95":17.31}, + "crop-none-px-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.01,"frameP95":17.8}, + "crop-none-px-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.65,"frameP95":18}, + "crop-none-px-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.09,"frameP95":17.7}, + "crop-none-px-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.13,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.89,"frameP95":18.21}, + "crop-none-px-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.3,"undo":true,"dropped":0,"controlDropped":0,"work":4.84,"frameP95":17.6}, + "crop-none-px-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.3,"undo":true,"dropped":0,"controlDropped":0,"work":3.68,"frameP95":19.3}, + "crop-none-px-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.14,"reload":0.07,"render":0.3,"undo":true,"dropped":0,"controlDropped":0,"work":3.44,"frameP95":17.3}, + "crop-none-px-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.61}, + "crop-none-px-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.32,"frameP95":18.8}, + "crop-none-px-r30-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.14,"reload":0.07,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.83,"frameP95":18.2}, + "crop-tween-center-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.31,"frameP95":18.2}, + "crop-tween-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.32,"frameP95":18.31}, + "crop-tween-center-r0-nested-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.13,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.4}, + "crop-tween-center-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.32,"frameP95":18.8}, + "crop-tween-center-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.47,"frameP95":20.41}, + "crop-tween-center-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.13,"reload":0.07,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":null,"frameP95":19.1}, + "crop-tween-center-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.73,"frameP95":19.91}, + "crop-tween-center-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.71}, + "crop-tween-center-r30-nested-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.12,"reload":0.08,"render":0.26,"undo":true,"dropped":1,"controlDropped":0,"work":3.49,"frameP95":20.31}, + "crop-tween-center-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.26,"undo":false,"dropped":0,"controlDropped":0,"work":3.29,"frameP95":17.71}, + "crop-tween-center-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.26,"undo":false,"dropped":0,"controlDropped":0,"work":2.84,"frameP95":17.1}, + "crop-tween-center-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.12,"reload":0.08,"render":0.26,"undo":false,"dropped":0,"controlDropped":0,"work":4.12,"frameP95":17.11}, + "crop-tween-pct-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.39,"frameP95":17.3}, + "crop-tween-pct-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.03,"reload":0.01,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.51,"frameP95":17.3}, + "crop-tween-pct-r0-nested-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.07,"render":0.02,"undo":true,"dropped":1,"controlDropped":0,"work":3.08,"frameP95":17.7}, + "crop-tween-pct-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.49,"frameP95":18.1}, + "crop-tween-pct-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.03,"reload":0.03,"render":0.03,"undo":false,"dropped":0,"controlDropped":0,"work":3.37,"frameP95":17.91}, + "crop-tween-pct-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.1,"reload":0.05,"render":0.03,"undo":false,"dropped":1,"controlDropped":0,"work":3.65,"frameP95":18.8}, + "crop-tween-pct-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":3.05,"frameP95":19.7}, + "crop-tween-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.24,"undo":true,"dropped":0,"controlDropped":0,"work":3.65,"frameP95":18.5}, + "crop-tween-pct-r30-nested-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.08,"reload":0.06,"render":0.24,"undo":true,"dropped":1,"controlDropped":0,"work":4.44,"frameP95":18.1}, + "crop-tween-pct-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.05,"reload":0,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.71}, + "crop-tween-pct-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":3.24,"frameP95":17.7}, + "crop-tween-pct-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.07,"render":0.27,"undo":false,"dropped":0,"controlDropped":0,"work":3.33,"frameP95":18.5}, + "crop-tween-px-r0-nested-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.09,"reload":0,"render":0.02,"undo":true,"dropped":1,"controlDropped":0,"work":4,"frameP95":18.31}, + "crop-tween-px-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.02,"undo":true,"dropped":1,"controlDropped":0,"work":3.8,"frameP95":19.5}, + "crop-tween-px-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.17,"frameP95":17.7}, + "crop-tween-px-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":3.19,"frameP95":17.6}, + "crop-tween-px-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.02,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":3.43,"frameP95":18.1}, + "crop-tween-px-r0-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.02,"undo":false,"dropped":0,"controlDropped":0,"work":2.88,"frameP95":17.41}, + "crop-tween-px-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.08,"reload":0,"render":0.25,"undo":true,"dropped":0,"controlDropped":0,"work":4.16,"frameP95":19.3}, + "crop-tween-px-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.05,"render":0.25,"undo":true,"dropped":0,"controlDropped":0,"work":2.52,"frameP95":20.1}, + "crop-tween-px-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.08,"reload":0.05,"render":0.25,"undo":true,"dropped":0,"controlDropped":0,"work":3,"frameP95":18.5}, + "crop-tween-px-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.06,"reload":0,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":3.52,"frameP95":18.1}, + "crop-tween-px-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.04,"render":0.24,"undo":false,"dropped":0,"controlDropped":0,"work":3.61,"frameP95":17.41}, + "crop-tween-px-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.07,"reload":0.05,"render":0.24,"undo":false,"dropped":1,"controlDropped":0,"work":3.64,"frameP95":18.6}, + "crop-tween-xpercent-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.23,"frameP95":18}, + "crop-tween-xpercent-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.95,"frameP95":17.5}, + "crop-tween-xpercent-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.13,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.96,"frameP95":18.5}, + "crop-tween-xpercent-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0.03,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.71,"frameP95":17.6}, + "crop-tween-xpercent-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.04,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.42,"frameP95":18.31}, + "crop-tween-xpercent-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.13,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.54,"frameP95":17.41}, + "crop-tween-xpercent-r30-nested-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.2}, + "crop-tween-xpercent-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.6,"frameP95":18.5}, + "crop-tween-xpercent-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0.12,"reload":0.08,"render":0.26,"undo":true,"dropped":0,"controlDropped":0,"work":3.74,"frameP95":19.11}, + "crop-tween-xpercent-r30-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0.07,"reload":0,"render":0.26,"undo":false,"dropped":0,"controlDropped":0,"work":null,"frameP95":17}, + "crop-tween-xpercent-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0.02,"reload":0.03,"render":0.26,"undo":false,"dropped":0,"controlDropped":0,"work":3.37,"frameP95":17.5}, + "crop-tween-xpercent-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0.12,"reload":0.08,"render":0.26,"undo":false,"dropped":0,"controlDropped":0,"work":3.02,"frameP95":17.2}, + "move-hold-center-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.59,"frameP95":19.1}, + "move-hold-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.6,"frameP95":17.8}, + "move-hold-center-r0-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.24,"frameP95":17.3}, + "move-hold-center-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.66,"frameP95":19.6}, + "move-hold-center-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":16.91}, + "move-hold-center-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.53,"frameP95":17.4}, + "move-hold-center-r30-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.5}, + "move-hold-center-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.44,"frameP95":19.31}, + "move-hold-center-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.06,"frameP95":19.3}, + "move-hold-center-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.35,"frameP95":17.3}, + "move-hold-center-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.37,"frameP95":19.2}, + "move-hold-center-r30-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.7,"frameP95":18}, + "move-hold-pct-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.49,"frameP95":18.5}, + "move-hold-pct-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":19}, + "move-hold-pct-r0-nested-z50": {"pass":true,"tracking":0.08,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.28,"frameP95":18.11}, + "move-hold-pct-r0-root-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":3.27,"frameP95":18}, + "move-hold-pct-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.01,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":4.78,"frameP95":18.71}, + "move-hold-pct-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.05,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":4.25,"frameP95":19}, + "move-hold-pct-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.03,"frameP95":20.2}, + "move-hold-pct-r30-nested-z200": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.66,"frameP95":17.71}, + "move-hold-pct-r30-nested-z50": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.94,"frameP95":17.71}, + "move-hold-pct-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.3,"frameP95":17.41}, + "move-hold-pct-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.16,"frameP95":18.7}, + "move-hold-pct-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.1,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.41}, + "move-hold-px-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.45,"frameP95":19}, + "move-hold-px-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.18,"frameP95":17.91}, + "move-hold-px-r0-nested-z50": {"pass":true,"tracking":0.08,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":6.2,"frameP95":18.6}, + "move-hold-px-r0-root-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":4.72,"frameP95":19}, + "move-hold-px-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.01,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.31}, + "move-hold-px-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.05,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":3.41,"frameP95":17.11}, + "move-hold-px-r30-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.4}, + "move-hold-px-r30-nested-z200": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.81,"frameP95":19.8}, + "move-hold-px-r30-nested-z50": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.84,"frameP95":17.3}, + "move-hold-px-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.74,"frameP95":17.11}, + "move-hold-px-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.47,"frameP95":18.41}, + "move-hold-px-r30-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.1,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.01,"frameP95":17.71}, + "move-hold-xpercent-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.79,"frameP95":18}, + "move-hold-xpercent-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":6.34,"frameP95":18.81}, + "move-hold-xpercent-r0-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.29,"frameP95":19.5}, + "move-hold-xpercent-r0-root-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.41}, + "move-hold-xpercent-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.07,"frameP95":18.81}, + "move-hold-xpercent-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.21,"frameP95":19}, + "move-hold-xpercent-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.5,"frameP95":18.5}, + "move-hold-xpercent-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.06,"frameP95":17.5}, + "move-hold-xpercent-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.55,"frameP95":18}, + "move-hold-xpercent-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.75,"frameP95":18.2}, + "move-hold-xpercent-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.72,"frameP95":18.6}, + "move-hold-xpercent-r30-root-z50": {"pass":false,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":1,"controlDropped":0,"work":null,"frameP95":18.5}, + "move-none-center-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.88,"frameP95":17.21}, + "move-none-center-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.58,"frameP95":17.5}, + "move-none-center-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.7,"frameP95":19.71}, + "move-none-center-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.23,"frameP95":17.5}, + "move-none-center-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.81,"frameP95":20.1}, + "move-none-center-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.03,"frameP95":17.3}, + "move-none-center-r30-nested-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.66,"frameP95":17.8}, + "move-none-center-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.13,"frameP95":18}, + "move-none-center-r30-nested-z50": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0.11,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.81,"frameP95":18.5}, + "move-none-center-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.25,"frameP95":18.3}, + "move-none-center-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.82,"frameP95":18.8}, + "move-none-center-r30-root-z50": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0,"reload":0.11,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.1}, + "move-none-pct-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.61,"frameP95":18.81}, + "move-none-pct-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.85,"frameP95":19.3}, + "move-none-pct-r0-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.57,"frameP95":18.71}, + "move-none-pct-r0-root-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.21,"frameP95":18.5}, + "move-none-pct-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18}, + "move-none-pct-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.98,"frameP95":17.21}, + "move-none-pct-r30-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.4}, + "move-none-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.43,"frameP95":18.71}, + "move-none-pct-r30-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.4,"frameP95":17.81}, + "move-none-pct-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.38,"frameP95":17}, + "move-none-pct-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.09,"undo":true,"dropped":0,"controlDropped":0,"work":3.3,"frameP95":18.1}, + "move-none-pct-r30-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.65,"frameP95":17.71}, + "move-none-px-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.7,"frameP95":17.31}, + "move-none-px-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.7,"frameP95":17.8}, + "move-none-px-r0-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.47,"frameP95":18.21}, + "move-none-px-r0-root-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.73,"frameP95":18.7}, + "move-none-px-r0-root-z200": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.03,"frameP95":20.7}, + "move-none-px-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.86,"frameP95":19.4}, + "move-none-px-r30-nested-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":4.89,"frameP95":18.7}, + "move-none-px-r30-nested-z200": {"pass":false,"tracking":0.03,"pressJump":0,"drop":0,"reload":0.04,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":20.21}, + "move-none-px-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.11,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.78,"frameP95":19}, + "move-none-px-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":4.33,"frameP95":18.9}, + "move-none-px-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":5.14,"frameP95":19.5}, + "move-none-px-r30-root-z50": {"pass":false,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.13,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.3}, + "move-tween-center-r0-nested-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":7.81,"frameP95":20}, + "move-tween-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.2,"frameP95":19.61}, + "move-tween-center-r0-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.89,"frameP95":17.5}, + "move-tween-center-r0-root-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.39,"frameP95":18.5}, + "move-tween-center-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17}, + "move-tween-center-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.68,"frameP95":18.41}, + "move-tween-center-r30-nested-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.3}, + "move-tween-center-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.68,"frameP95":18.91}, + "move-tween-center-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.1,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.53,"frameP95":17.91}, + "move-tween-center-r30-root-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.41}, + "move-tween-center-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.35,"frameP95":19.4}, + "move-tween-center-r30-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.1,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.33,"frameP95":19.3}, + "move-tween-pct-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.06,"frameP95":18.31}, + "move-tween-pct-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.58,"frameP95":19.21}, + "move-tween-pct-r0-nested-z50": {"pass":true,"tracking":0.08,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.31,"frameP95":17}, + "move-tween-pct-r0-root-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.2,"frameP95":17.6}, + "move-tween-pct-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.02,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.01,"frameP95":19.3}, + "move-tween-pct-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.63,"frameP95":19.61}, + "move-tween-pct-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":5.12,"frameP95":19.21}, + "move-tween-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.48,"frameP95":19.31}, + "move-tween-pct-r30-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.11,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.59,"frameP95":18}, + "move-tween-pct-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.87,"frameP95":17.81}, + "move-tween-pct-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.49,"frameP95":18.91}, + "move-tween-pct-r30-root-z50": {"pass":false,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.81}, + "move-tween-px-r0-nested-z100": {"pass":false,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":1,"controlDropped":0,"work":5.14,"frameP95":18.8}, + "move-tween-px-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.96,"frameP95":18.5}, + "move-tween-px-r0-nested-z50": {"pass":true,"tracking":0.08,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.56,"frameP95":18.1}, + "move-tween-px-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.87,"frameP95":17.6}, + "move-tween-px-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.1}, + "move-tween-px-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.19,"frameP95":17.41}, + "move-tween-px-r30-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.7}, + "move-tween-px-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.05,"frameP95":19.1}, + "move-tween-px-r30-nested-z50": {"pass":false,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":1,"controlDropped":0,"work":4.54,"frameP95":20.21}, + "move-tween-px-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.65,"frameP95":17.71}, + "move-tween-px-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.37,"frameP95":18.5}, + "move-tween-px-r30-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":5.4,"frameP95":19.5}, + "move-tween-xpercent-r0-nested-z100": {"pass":false,"tracking":0.05,"pressJump":0,"drop":144.24,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.12,"frameP95":18.6}, + "move-tween-xpercent-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":144.22,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.95,"frameP95":18.21}, + "move-tween-xpercent-r0-nested-z50": {"pass":false,"tracking":0.07,"pressJump":0,"drop":144.22,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.25,"frameP95":18.21}, + "move-tween-xpercent-r0-root-z100": {"pass":false,"tracking":0.05,"pressJump":0,"drop":144.24,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.02,"frameP95":17.5}, + "move-tween-xpercent-r0-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":144.22,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.83,"frameP95":18.71}, + "move-tween-xpercent-r0-root-z50": {"pass":false,"tracking":0.07,"pressJump":0,"drop":144.22,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.28,"frameP95":18.3}, + "move-tween-xpercent-r30-nested-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":144.24,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.65,"frameP95":19.41}, + "move-tween-xpercent-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":144.22,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.99,"frameP95":17.6}, + "move-tween-xpercent-r30-nested-z50": {"pass":false,"tracking":0.06,"pressJump":0,"drop":144.27,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":5.06,"frameP95":18.31}, + "move-tween-xpercent-r30-root-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":144.24,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.29,"frameP95":17.6}, + "move-tween-xpercent-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":144.22,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.53,"frameP95":17.21}, + "move-tween-xpercent-r30-root-z50": {"pass":false,"tracking":0.06,"pressJump":0,"drop":144.27,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.31}, + "nudge-hold-center-r0-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":10.17,"frameP95":18.5}, + "nudge-hold-center-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.73,"frameP95":17.41}, + "nudge-hold-center-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.95,"frameP95":17}, + "nudge-hold-center-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.68,"frameP95":18.21}, + "nudge-hold-center-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.81,"frameP95":17.5}, + "nudge-hold-center-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.67,"frameP95":17.31}, + "nudge-hold-center-r30-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.29,"frameP95":17.3}, + "nudge-hold-center-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.66,"frameP95":17.41}, + "nudge-hold-center-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":null,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.8,"frameP95":17.2}, + "nudge-hold-center-r30-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.54,"frameP95":17.41}, + "nudge-hold-center-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4,"frameP95":17.5}, + "nudge-hold-center-r30-root-z50": {"pass":false,"tracking":0.06,"pressJump":null,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.1}, + "nudge-hold-pct-r0-nested-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":6.69,"frameP95":21.4}, + "nudge-hold-pct-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.78,"frameP95":17.6}, + "nudge-hold-pct-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.54,"frameP95":17.8}, + "nudge-hold-pct-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.19,"frameP95":17.8}, + "nudge-hold-pct-r0-root-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18}, + "nudge-hold-pct-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.39,"frameP95":17.7}, + "nudge-hold-pct-r30-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.1}, + "nudge-hold-pct-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.42,"frameP95":17.41}, + "nudge-hold-pct-r30-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.73,"frameP95":19.81}, + "nudge-hold-pct-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.01,"frameP95":17.3}, + "nudge-hold-pct-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.11,"frameP95":17.31}, + "nudge-hold-pct-r30-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.33,"frameP95":17.31}, + "nudge-hold-px-r0-nested-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.97,"frameP95":17.2}, + "nudge-hold-px-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.85,"frameP95":18}, + "nudge-hold-px-r0-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.1}, + "nudge-hold-px-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.77,"frameP95":17}, + "nudge-hold-px-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.82,"frameP95":17.2}, + "nudge-hold-px-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.01,"frameP95":17.1}, + "nudge-hold-px-r30-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.38,"frameP95":17.3}, + "nudge-hold-px-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.03,"frameP95":19.31}, + "nudge-hold-px-r30-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.9,"frameP95":18.3}, + "nudge-hold-px-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.12,"frameP95":17.5}, + "nudge-hold-px-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.53,"frameP95":17.41}, + "nudge-hold-px-r30-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.2}, + "nudge-hold-xpercent-r0-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.84,"frameP95":17.1}, + "nudge-hold-xpercent-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.78,"frameP95":17.41}, + "nudge-hold-xpercent-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.09,"frameP95":17.31}, + "nudge-hold-xpercent-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.37,"frameP95":17.21}, + "nudge-hold-xpercent-r0-root-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.11}, + "nudge-hold-xpercent-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.22,"frameP95":17.2}, + "nudge-hold-xpercent-r30-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.11}, + "nudge-hold-xpercent-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.99,"frameP95":17.1}, + "nudge-hold-xpercent-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":null,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.68,"frameP95":17.2}, + "nudge-hold-xpercent-r30-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.11,"frameP95":17}, + "nudge-hold-xpercent-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.97,"frameP95":17.31}, + "nudge-hold-xpercent-r30-root-z50": {"pass":true,"tracking":0.06,"pressJump":null,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.72,"frameP95":18.1}, + "nudge-none-center-r0-nested-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.1,"frameP95":17.61}, + "nudge-none-center-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.33,"frameP95":17.5}, + "nudge-none-center-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.12,"frameP95":18}, + "nudge-none-center-r0-root-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.87,"frameP95":17.61}, + "nudge-none-center-r0-root-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":1,"controlDropped":0,"work":null,"frameP95":27.41}, + "nudge-none-center-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.95,"frameP95":17.41}, + "nudge-none-center-r30-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17}, + "nudge-none-center-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.45,"frameP95":17.3}, + "nudge-none-center-r30-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.02,"frameP95":17.21}, + "nudge-none-center-r30-root-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.1}, + "nudge-none-center-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.86,"frameP95":17.1}, + "nudge-none-center-r30-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.91,"frameP95":17.61}, + "nudge-none-pct-r0-nested-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":2.88,"frameP95":17.5}, + "nudge-none-pct-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":3.88,"frameP95":17.6}, + "nudge-none-pct-r0-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.2}, + "nudge-none-pct-r0-root-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":7.26,"frameP95":17.21}, + "nudge-none-pct-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.59,"frameP95":17.4}, + "nudge-none-pct-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.16,"frameP95":17.21}, + "nudge-none-pct-r30-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.08,"frameP95":17.21}, + "nudge-none-pct-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.19,"frameP95":17.3}, + "nudge-none-pct-r30-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.12,"frameP95":17.1}, + "nudge-none-pct-r30-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.2,"frameP95":17.41}, + "nudge-none-pct-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.34,"frameP95":18.3}, + "nudge-none-pct-r30-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.1,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":19.21}, + "nudge-none-px-r0-nested-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.24,"frameP95":19.3}, + "nudge-none-px-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.84,"frameP95":19.1}, + "nudge-none-px-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.26,"frameP95":17.21}, + "nudge-none-px-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.62,"frameP95":18.1}, + "nudge-none-px-r0-root-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.21}, + "nudge-none-px-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.43,"frameP95":17.21}, + "nudge-none-px-r30-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":16.81}, + "nudge-none-px-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.87,"frameP95":19.3}, + "nudge-none-px-r30-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.49,"frameP95":17.3}, + "nudge-none-px-r30-root-z100": {"pass":false,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.1}, + "nudge-none-px-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.53,"frameP95":17.11}, + "nudge-none-px-r30-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.01,"frameP95":17.3}, + "nudge-tween-center-r0-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":7.38,"frameP95":24.8}, + "nudge-tween-center-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.41,"frameP95":19.1}, + "nudge-tween-center-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.15,"frameP95":17.21}, + "nudge-tween-center-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.99,"frameP95":18}, + "nudge-tween-center-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.42,"frameP95":17.41}, + "nudge-tween-center-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.2,"frameP95":17.3}, + "nudge-tween-center-r30-nested-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.82,"frameP95":17.81}, + "nudge-tween-center-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.99,"frameP95":17.91}, + "nudge-tween-center-r30-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.1,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.02,"frameP95":17.21}, + "nudge-tween-center-r30-root-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.09,"frameP95":17.3}, + "nudge-tween-center-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.58,"frameP95":17.41}, + "nudge-tween-center-r30-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.1,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":21.81}, + "nudge-tween-pct-r0-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":9.43,"frameP95":19.11}, + "nudge-tween-pct-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.01,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.74,"frameP95":17.3}, + "nudge-tween-pct-r0-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.23,"frameP95":17.31}, + "nudge-tween-pct-r0-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.92,"frameP95":21.11}, + "nudge-tween-pct-r0-root-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.81}, + "nudge-tween-pct-r0-root-z50": {"pass":true,"tracking":0.04,"pressJump":null,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.82,"frameP95":17.1}, + "nudge-tween-pct-r30-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.96,"frameP95":17}, + "nudge-tween-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.57,"frameP95":17.4}, + "nudge-tween-pct-r30-nested-z50": {"pass":true,"tracking":0.06,"pressJump":null,"drop":0,"reload":0.11,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.83,"frameP95":19.3}, + "nudge-tween-pct-r30-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.3,"frameP95":16.8}, + "nudge-tween-pct-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.65,"frameP95":17.11}, + "nudge-tween-pct-r30-root-z50": {"pass":true,"tracking":0.06,"pressJump":null,"drop":0,"reload":0.11,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.78,"frameP95":17.41}, + "nudge-tween-px-r0-nested-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.13,"frameP95":17.2}, + "nudge-tween-px-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.7,"frameP95":20.21}, + "nudge-tween-px-r0-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":19.11}, + "nudge-tween-px-r0-root-z100": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":3.79,"frameP95":17.5}, + "nudge-tween-px-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":4.29,"frameP95":17.5}, + "nudge-tween-px-r0-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.05,"render":0.01,"undo":true,"dropped":0,"controlDropped":0,"work":4.07,"frameP95":17.3}, + "nudge-tween-px-r30-nested-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.04,"frameP95":19.21}, + "nudge-tween-px-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.04,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.84,"frameP95":18.2}, + "nudge-tween-px-r30-nested-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.67,"frameP95":18}, + "nudge-tween-px-r30-root-z100": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.37,"frameP95":17.5}, + "nudge-tween-px-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":null,"drop":0,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.21,"frameP95":18}, + "nudge-tween-px-r30-root-z50": {"pass":true,"tracking":0.01,"pressJump":null,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.89,"frameP95":17.41}, + "nudge-tween-xpercent-r0-nested-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.27,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.6,"frameP95":17.5}, + "nudge-tween-xpercent-r0-nested-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.22,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.77,"frameP95":24.2}, + "nudge-tween-xpercent-r0-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.22,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.6,"frameP95":17.91}, + "nudge-tween-xpercent-r0-root-z100": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.27,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17}, + "nudge-tween-xpercent-r0-root-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.22,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.5}, + "nudge-tween-xpercent-r0-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.22,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.02,"frameP95":17.41}, + "nudge-tween-xpercent-r30-nested-z100": {"pass":false,"tracking":0.02,"pressJump":null,"drop":144.24,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.09,"frameP95":17.41}, + "nudge-tween-xpercent-r30-nested-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.24,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.43,"frameP95":17.5}, + "nudge-tween-xpercent-r30-nested-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.32,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.6,"frameP95":17.31}, + "nudge-tween-xpercent-r30-root-z100": {"pass":false,"tracking":0.02,"pressJump":null,"drop":144.24,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.64,"frameP95":17.1}, + "nudge-tween-xpercent-r30-root-z200": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.24,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.18,"frameP95":17.4}, + "nudge-tween-xpercent-r30-root-z50": {"pass":false,"tracking":0.01,"pressJump":null,"drop":144.32,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.82,"frameP95":17.9}, + "resize-hold-center-r0-nested-z100": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.6,"frameP95":20.41}, + "resize-hold-center-r0-nested-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.01,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.31}, + "resize-hold-center-r0-nested-z50": {"pass":true,"tracking":0.27,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.39,"frameP95":17.6}, + "resize-hold-center-r0-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":0,"reload":60.2,"render":50,"undo":false,"dropped":0,"controlDropped":0,"work":5.03,"frameP95":19.7}, + "resize-hold-center-r0-root-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":60.2,"render":50,"undo":false,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.9}, + "resize-hold-center-r0-root-z50": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":60.21,"render":50,"undo":false,"dropped":0,"controlDropped":0,"work":3.95,"frameP95":17.41}, + "resize-hold-center-r30-nested-z100": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.71,"frameP95":18}, + "resize-hold-center-r30-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.83,"frameP95":18.11}, + "resize-hold-center-r30-nested-z50": {"pass":true,"tracking":0.31,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.73,"frameP95":18.1}, + "resize-hold-center-r30-root-z100": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":60.2,"render":60.06,"undo":false,"dropped":0,"controlDropped":0,"work":5.27,"frameP95":17.7}, + "resize-hold-center-r30-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":60.19,"render":60.06,"undo":false,"dropped":0,"controlDropped":0,"work":3.58,"frameP95":17.41}, + "resize-hold-center-r30-root-z50": {"pass":false,"tracking":0.31,"pressJump":0,"drop":0,"reload":60.24,"render":60.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.8,"frameP95":18.31}, + "resize-hold-pct-r0-nested-z100": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.06,"frameP95":18.41}, + "resize-hold-pct-r0-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.49,"frameP95":19.91}, + "resize-hold-pct-r0-nested-z50": {"pass":true,"tracking":0.3,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.16,"frameP95":19.6}, + "resize-hold-pct-r0-root-z100": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":120.41,"render":100.02,"undo":false,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.9}, + "resize-hold-pct-r0-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":120.38,"render":100.02,"undo":false,"dropped":0,"controlDropped":0,"work":5.76,"frameP95":19.41}, + "resize-hold-pct-r0-root-z50": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":120.34,"render":100.02,"undo":false,"dropped":0,"controlDropped":0,"work":4.91,"frameP95":18.91}, + "resize-hold-pct-r30-nested-z100": {"pass":true,"tracking":0.29,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.43,"frameP95":20.1}, + "resize-hold-pct-r30-nested-z200": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.7,"frameP95":20}, + "resize-hold-pct-r30-nested-z50": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.91}, + "resize-hold-pct-r30-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":0,"reload":116.24,"render":110.06,"undo":false,"dropped":0,"controlDropped":0,"work":5.76,"frameP95":19}, + "resize-hold-pct-r30-root-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":116.29,"render":110.06,"undo":false,"dropped":0,"controlDropped":0,"work":5.33,"frameP95":20.6}, + "resize-hold-pct-r30-root-z50": {"pass":false,"tracking":0.32,"pressJump":0,"drop":0,"reload":116.3,"render":110.06,"undo":false,"dropped":0,"controlDropped":0,"work":3.63,"frameP95":17.91}, + "resize-hold-px-r0-nested-z100": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.43,"frameP95":18.71}, + "resize-hold-px-r0-nested-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.31}, + "resize-hold-px-r0-nested-z50": {"pass":true,"tracking":0.3,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.46,"frameP95":17.5}, + "resize-hold-px-r0-root-z100": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":120.41,"render":100.02,"undo":false,"dropped":0,"controlDropped":0,"work":4.27,"frameP95":18.4}, + "resize-hold-px-r0-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":120.38,"render":100.02,"undo":false,"dropped":0,"controlDropped":0,"work":3.74,"frameP95":17.6}, + "resize-hold-px-r0-root-z50": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":120.34,"render":100.02,"undo":false,"dropped":0,"controlDropped":0,"work":4.44,"frameP95":17.6}, + "resize-hold-px-r30-nested-z100": {"pass":true,"tracking":0.29,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.54,"frameP95":19.8}, + "resize-hold-px-r30-nested-z200": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.59,"frameP95":21.31}, + "resize-hold-px-r30-nested-z50": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.78,"frameP95":19.7}, + "resize-hold-px-r30-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":0,"reload":116.24,"render":110.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.5,"frameP95":17.91}, + "resize-hold-px-r30-root-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":116.29,"render":110.06,"undo":false,"dropped":0,"controlDropped":0,"work":3.36,"frameP95":18.41}, + "resize-hold-px-r30-root-z50": {"pass":false,"tracking":0.32,"pressJump":0,"drop":0,"reload":116.3,"render":110.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.47,"frameP95":17.71}, + "resize-hold-xpercent-r0-nested-z100": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.43,"frameP95":18.31}, + "resize-hold-xpercent-r0-nested-z200": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.01,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.86,"frameP95":18.31}, + "resize-hold-xpercent-r0-nested-z50": {"pass":true,"tracking":0.27,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.53,"frameP95":18.1}, + "resize-hold-xpercent-r0-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":0,"reload":60.2,"render":50,"undo":false,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.9}, + "resize-hold-xpercent-r0-root-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":60.2,"render":50,"undo":false,"dropped":0,"controlDropped":0,"work":5.26,"frameP95":19.11}, + "resize-hold-xpercent-r0-root-z50": {"pass":false,"tracking":0.27,"pressJump":0,"drop":0,"reload":60.21,"render":50,"undo":false,"dropped":1,"controlDropped":0,"work":4.31,"frameP95":18}, + "resize-hold-xpercent-r30-nested-z100": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":6.37,"frameP95":19.9}, + "resize-hold-xpercent-r30-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.77,"frameP95":20}, + "resize-hold-xpercent-r30-nested-z50": {"pass":false,"tracking":0.31,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.81}, + "resize-hold-xpercent-r30-root-z100": {"pass":false,"tracking":0.23,"pressJump":0,"drop":0,"reload":60.2,"render":60.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.22,"frameP95":17.6}, + "resize-hold-xpercent-r30-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":60.19,"render":60.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.26,"frameP95":18.8}, + "resize-hold-xpercent-r30-root-z50": {"pass":false,"tracking":0.31,"pressJump":0,"drop":0,"reload":60.24,"render":60.06,"undo":false,"dropped":0,"controlDropped":0,"work":4.06,"frameP95":17.81}, + "resize-none-center-r0-nested-z100": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.17,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.93,"frameP95":17.9}, + "resize-none-center-r0-nested-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.19,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.81,"frameP95":20.5}, + "resize-none-center-r0-nested-z50": {"pass":false,"tracking":0.23,"pressJump":0,"drop":60.17,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.71,"frameP95":18.21}, + "resize-none-center-r0-root-z100": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.17,"reload":0,"render":49.98,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18}, + "resize-none-center-r0-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.19,"reload":0.03,"render":49.98,"undo":true,"dropped":0,"controlDropped":0,"work":4.7,"frameP95":17.71}, + "resize-none-center-r0-root-z50": {"pass":false,"tracking":0.23,"pressJump":0,"drop":60.17,"reload":0.05,"render":49.98,"undo":true,"dropped":0,"controlDropped":0,"work":4.63,"frameP95":17.7}, + "resize-none-center-r30-nested-z100": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.2,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":4.97,"frameP95":19.8}, + "resize-none-center-r30-nested-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":60.19,"reload":0.04,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":4.76,"frameP95":19.1}, + "resize-none-center-r30-nested-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.18,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.1}, + "resize-none-center-r30-root-z100": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.2,"reload":0,"render":60.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.76,"frameP95":20.1}, + "resize-none-center-r30-root-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":60.19,"reload":0.04,"render":60.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.07,"frameP95":17.81}, + "resize-none-center-r30-root-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.18,"reload":0.07,"render":60.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.63,"frameP95":18.7}, + "resize-none-pct-r0-nested-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":60.2,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.9,"frameP95":20}, + "resize-none-pct-r0-nested-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.19,"reload":0.02,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.44,"frameP95":17.6}, + "resize-none-pct-r0-nested-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.17,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.42,"frameP95":18.31}, + "resize-none-pct-r0-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":222.58,"reload":0,"render":100.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.23,"frameP95":18.6}, + "resize-none-pct-r0-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":222.59,"reload":0.03,"render":100.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.48,"frameP95":18.7}, + "resize-none-pct-r0-root-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":222.56,"reload":0.07,"render":100.02,"undo":true,"dropped":0,"controlDropped":0,"work":3.89,"frameP95":17.71}, + "resize-none-pct-r30-nested-z100": {"pass":false,"tracking":0.23,"pressJump":0,"drop":60.22,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.91,"frameP95":19.1}, + "resize-none-pct-r30-nested-z200": {"pass":false,"tracking":0.26,"pressJump":0,"drop":60.21,"reload":0.06,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.43,"frameP95":18}, + "resize-none-pct-r30-nested-z50": {"pass":false,"tracking":0.29,"pressJump":0,"drop":60.22,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.18,"frameP95":18}, + "resize-none-pct-r30-root-z100": {"pass":false,"tracking":0.23,"pressJump":0,"drop":216.61,"reload":0,"render":110.05,"undo":true,"dropped":2,"controlDropped":0,"work":6.2,"frameP95":21.21}, + "resize-none-pct-r30-root-z200": {"pass":false,"tracking":0.25,"pressJump":0,"drop":216.57,"reload":0.04,"render":110.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.7,"frameP95":18.5}, + "resize-none-pct-r30-root-z50": {"pass":false,"tracking":0.37,"pressJump":0,"drop":216.6,"reload":0.07,"render":110.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.55,"frameP95":17.5}, + "resize-none-px-r0-nested-z100": {"pass":false,"tracking":0.21,"pressJump":0,"drop":60.17,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.05,"frameP95":17.9}, + "resize-none-px-r0-nested-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.19,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.76,"frameP95":18.8}, + "resize-none-px-r0-nested-z50": {"pass":false,"tracking":0.27,"pressJump":0,"drop":60.17,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.89,"frameP95":18.5}, + "resize-none-px-r0-root-z100": {"pass":false,"tracking":0.23,"pressJump":0,"drop":170.31,"reload":0,"render":100,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":19.8}, + "resize-none-px-r0-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":170.32,"reload":0.03,"render":100,"undo":true,"dropped":0,"controlDropped":0,"work":4.52,"frameP95":19.1}, + "resize-none-px-r0-root-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":170.3,"reload":0.07,"render":100,"undo":true,"dropped":6,"controlDropped":0,"work":3.99,"frameP95":52.8}, + "resize-none-px-r30-nested-z100": {"pass":false,"tracking":0.24,"pressJump":0,"drop":60.2,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.24,"frameP95":19.11}, + "resize-none-px-r30-nested-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":60.2,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.61,"frameP95":18.91}, + "resize-none-px-r30-nested-z50": {"pass":false,"tracking":0.28,"pressJump":0,"drop":60.24,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18}, + "resize-none-px-r30-root-z100": {"pass":false,"tracking":0.3,"pressJump":0,"drop":165.53,"reload":0,"render":110.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.15,"frameP95":17.5}, + "resize-none-px-r30-root-z200": {"pass":false,"tracking":0.23,"pressJump":0,"drop":165.5,"reload":0.06,"render":110.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.42,"frameP95":17.6}, + "resize-none-px-r30-root-z50": {"pass":false,"tracking":0.29,"pressJump":0,"drop":165.53,"reload":0.05,"render":110.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.58,"frameP95":17.4}, + "resize-tween-center-r0-nested-z100": {"pass":true,"tracking":0.27,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.24,"frameP95":19.21}, + "resize-tween-center-r0-nested-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":19.1}, + "resize-tween-center-r0-nested-z50": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.04,"frameP95":19}, + "resize-tween-center-r0-root-z100": {"pass":true,"tracking":0.27,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.84,"frameP95":20.41}, + "resize-tween-center-r0-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.6}, + "resize-tween-center-r0-root-z50": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.3,"frameP95":18.41}, + "resize-tween-center-r30-nested-z100": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.11,"frameP95":18.2}, + "resize-tween-center-r30-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.65,"frameP95":20.7}, + "resize-tween-center-r30-nested-z50": {"pass":true,"tracking":0.38,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.98,"frameP95":19.11}, + "resize-tween-center-r30-root-z100": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.62,"frameP95":18.31}, + "resize-tween-center-r30-root-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.21,"frameP95":19.31}, + "resize-tween-center-r30-root-z50": {"pass":true,"tracking":0.38,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.39,"frameP95":18.91}, + "resize-tween-pct-r0-nested-z100": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.82,"frameP95":19.8}, + "resize-tween-pct-r0-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.03,"frameP95":19.5}, + "resize-tween-pct-r0-nested-z50": {"pass":true,"tracking":0.3,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":6.49,"frameP95":19.71}, + "resize-tween-pct-r0-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.6}, + "resize-tween-pct-r0-root-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.25,"frameP95":18.8}, + "resize-tween-pct-r0-root-z50": {"pass":true,"tracking":0.27,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":4.43,"frameP95":17.6}, + "resize-tween-pct-r30-nested-z100": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":1,"controlDropped":0,"work":6.55,"frameP95":22.21}, + "resize-tween-pct-r30-nested-z200": {"pass":true,"tracking":0.25,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":6.23,"frameP95":18.2}, + "resize-tween-pct-r30-nested-z50": {"pass":false,"tracking":0.28,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.81}, + "resize-tween-pct-r30-root-z100": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.88,"frameP95":17.91}, + "resize-tween-pct-r30-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.04,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":20.5}, + "resize-tween-pct-r30-root-z50": {"pass":true,"tracking":0.31,"pressJump":0,"drop":0,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.1,"frameP95":18.6}, + "resize-tween-px-r0-nested-z100": {"pass":true,"tracking":0.22,"pressJump":0,"drop":0,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.31,"frameP95":18.71}, + "resize-tween-px-r0-nested-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.02,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.6}, + "resize-tween-px-r0-nested-z50": {"pass":true,"tracking":0.31,"pressJump":0,"drop":0,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.74,"frameP95":19.81}, + "resize-tween-px-r0-root-z100": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.87,"frameP95":18.1}, + "resize-tween-px-r0-root-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.61,"frameP95":19.1}, + "resize-tween-px-r0-root-z50": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.25,"frameP95":17.41}, + "resize-tween-px-r30-nested-z100": {"pass":true,"tracking":0.27,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.06,"frameP95":17.71}, + "resize-tween-px-r30-nested-z200": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":6.27,"frameP95":20.41}, + "resize-tween-px-r30-nested-z50": {"pass":true,"tracking":0.28,"pressJump":0,"drop":0,"reload":0.1,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":6.14,"frameP95":18.9}, + "resize-tween-px-r30-root-z100": {"pass":true,"tracking":0.23,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.31,"frameP95":19.4}, + "resize-tween-px-r30-root-z200": {"pass":true,"tracking":0.26,"pressJump":0,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.87,"frameP95":18.5}, + "resize-tween-px-r30-root-z50": {"pass":true,"tracking":0.3,"pressJump":0,"drop":0,"reload":0.11,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":5.2,"frameP95":17.71}, + "resize-tween-xpercent-r0-nested-z100": {"pass":false,"tracking":0.27,"pressJump":0,"drop":204.41,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.28,"frameP95":18}, + "resize-tween-xpercent-r0-nested-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.43,"frameP95":19.61}, + "resize-tween-xpercent-r0-nested-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":204.44,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.16,"frameP95":18.21}, + "resize-tween-xpercent-r0-root-z100": {"pass":false,"tracking":0.27,"pressJump":0,"drop":204.41,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.31}, + "resize-tween-xpercent-r0-root-z200": {"pass":true,"tracking":0.24,"pressJump":0,"drop":0,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":5.04,"frameP95":18.5}, + "resize-tween-xpercent-r0-root-z50": {"pass":false,"tracking":0.24,"pressJump":0,"drop":204.44,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":4.53,"frameP95":17.81}, + "resize-tween-xpercent-r30-nested-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":204.44,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5,"frameP95":18.41}, + "resize-tween-xpercent-r30-nested-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":204.4,"reload":0.04,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":5.5,"frameP95":19}, + "resize-tween-xpercent-r30-nested-z50": {"pass":false,"tracking":0.38,"pressJump":0,"drop":204.44,"reload":0.07,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.71}, + "resize-tween-xpercent-r30-root-z100": {"pass":false,"tracking":0.26,"pressJump":0,"drop":204.44,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":4.97,"frameP95":18.5}, + "resize-tween-xpercent-r30-root-z200": {"pass":false,"tracking":0.24,"pressJump":0,"drop":204.4,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.6}, + "resize-tween-xpercent-r30-root-z50": {"pass":false,"tracking":0.38,"pressJump":0,"drop":204.44,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.73,"frameP95":17.31}, + "rotate-hold-center-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":5.11,"frameP95":19.6}, + "rotate-hold-center-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.8,"frameP95":19.2}, + "rotate-hold-center-r0-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.1,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.47,"frameP95":18}, + "rotate-hold-center-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.16,"frameP95":18}, + "rotate-hold-center-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.47,"frameP95":19.71}, + "rotate-hold-center-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.1,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":1.83,"frameP95":17.1}, + "rotate-hold-center-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":5.31,"frameP95":19.5}, + "rotate-hold-center-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.06,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.87,"frameP95":20.21}, + "rotate-hold-center-r30-nested-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.11,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.65,"frameP95":19.5}, + "rotate-hold-center-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.01,"frameP95":18.5}, + "rotate-hold-center-r30-root-z200": {"pass":false,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.06,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.11}, + "rotate-hold-center-r30-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.11,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.91,"frameP95":19.7}, + "rotate-hold-pct-r0-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":19.21}, + "rotate-hold-pct-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.05,"frameP95":19}, + "rotate-hold-pct-r0-nested-z50": {"pass":true,"tracking":0.09,"pressJump":0,"drop":0,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.1,"frameP95":19.31}, + "rotate-hold-pct-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":1.63,"frameP95":17.2}, + "rotate-hold-pct-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.05,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.16,"frameP95":17.31}, + "rotate-hold-pct-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.05,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.64,"frameP95":17.71}, + "rotate-hold-pct-r30-nested-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":4.78,"frameP95":19.11}, + "rotate-hold-pct-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.05,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.11}, + "rotate-hold-pct-r30-nested-z50": {"pass":true,"tracking":0.09,"pressJump":0,"drop":0,"reload":0.07,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.34,"frameP95":17.91}, + "rotate-hold-pct-r30-root-z100": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0,"render":0.09,"undo":true,"dropped":0,"controlDropped":0,"work":2.65,"frameP95":17.91}, + "rotate-hold-pct-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.62,"frameP95":17.7}, + "rotate-hold-pct-r30-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.1,"render":0.09,"undo":true,"dropped":0,"controlDropped":0,"work":3.12,"frameP95":17.71}, + "rotate-hold-px-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":5.29,"frameP95":18.6}, + "rotate-hold-px-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":1.83,"frameP95":17.81}, + "rotate-hold-px-r0-nested-z50": {"pass":true,"tracking":0.09,"pressJump":0,"drop":0,"reload":0.07,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.07,"frameP95":19.31}, + "rotate-hold-px-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.8,"frameP95":17.41}, + "rotate-hold-px-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.05,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.45,"frameP95":17.41}, + "rotate-hold-px-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.05,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":1.8,"frameP95":17.21}, + "rotate-hold-px-r30-nested-z100": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.82,"frameP95":18.11}, + "rotate-hold-px-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.05,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.11,"frameP95":17.3}, + "rotate-hold-px-r30-nested-z50": {"pass":true,"tracking":0.09,"pressJump":0,"drop":0,"reload":0.07,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.49,"frameP95":18.81}, + "rotate-hold-px-r30-root-z100": {"pass":false,"tracking":0.06,"pressJump":0,"drop":0,"reload":0,"render":0.09,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.6}, + "rotate-hold-px-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.13,"frameP95":18.1}, + "rotate-hold-px-r30-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.1,"render":0.09,"undo":true,"dropped":0,"controlDropped":0,"work":2.42,"frameP95":17.91}, + "rotate-hold-xpercent-r0-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.1,"frameP95":18.11}, + "rotate-hold-xpercent-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.03,"frameP95":17.8}, + "rotate-hold-xpercent-r0-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.1,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.04,"frameP95":18.41}, + "rotate-hold-xpercent-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.68,"frameP95":18.6}, + "rotate-hold-xpercent-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.39,"frameP95":18.5}, + "rotate-hold-xpercent-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.1,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.78,"frameP95":18.61}, + "rotate-hold-xpercent-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.02,"frameP95":19.2}, + "rotate-hold-xpercent-r30-nested-z200": {"pass":false,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.06,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18.11}, + "rotate-hold-xpercent-r30-nested-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.11,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":1.77,"frameP95":18.41}, + "rotate-hold-xpercent-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.16,"frameP95":19.3}, + "rotate-hold-xpercent-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.06,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":3.07,"frameP95":19.7}, + "rotate-hold-xpercent-r30-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.11,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.08,"frameP95":17.6}, + "rotate-none-center-r0-nested-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.46,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.1}, + "rotate-none-center-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.44,"reload":0.03,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.27,"frameP95":18.31}, + "rotate-none-center-r0-nested-z50": {"pass":false,"tracking":0.1,"pressJump":0,"drop":62.43,"reload":0.05,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.89,"frameP95":17.21}, + "rotate-none-center-r0-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.03,"frameP95":17.3}, + "rotate-none-center-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.22,"frameP95":17.21}, + "rotate-none-center-r0-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.57,"frameP95":17.21}, + "rotate-none-center-r30-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":62.46,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.46,"frameP95":18.91}, + "rotate-none-center-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.43,"reload":0.04,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.95,"frameP95":17.3}, + "rotate-none-center-r30-nested-z50": {"pass":false,"tracking":0.09,"pressJump":0,"drop":62.47,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.15,"frameP95":17.5}, + "rotate-none-center-r30-root-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":74.67,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.85,"frameP95":17.5}, + "rotate-none-center-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":74.66,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.08,"frameP95":19.8}, + "rotate-none-center-r30-root-z50": {"pass":false,"tracking":0.09,"pressJump":0,"drop":74.73,"reload":0.07,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.92,"frameP95":17.5}, + "rotate-none-pct-r0-nested-z100": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.43,"reload":0,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.44,"frameP95":17.2}, + "rotate-none-pct-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.47,"reload":0.02,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.11,"frameP95":17.11}, + "rotate-none-pct-r0-nested-z50": {"pass":false,"tracking":0.07,"pressJump":0,"drop":62.49,"reload":0.05,"render":0.02,"undo":true,"dropped":0,"controlDropped":0,"work":2.72,"frameP95":19.81}, + "rotate-none-pct-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.72,"frameP95":17.3}, + "rotate-none-pct-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.76,"frameP95":17.6}, + "rotate-none-pct-r0-root-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.04,"frameP95":17.1}, + "rotate-none-pct-r30-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":62.47,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.3,"frameP95":17.6}, + "rotate-none-pct-r30-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.44,"reload":0.06,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.51,"frameP95":17.5}, + "rotate-none-pct-r30-nested-z50": {"pass":false,"tracking":0.1,"pressJump":0,"drop":62.45,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.82,"frameP95":17.5}, + "rotate-none-pct-r30-root-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":74.71,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.92,"frameP95":18.6}, + "rotate-none-pct-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":74.68,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.7}, + "rotate-none-pct-r30-root-z50": {"pass":false,"tracking":0.11,"pressJump":0,"drop":74.73,"reload":0.11,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":1.89,"frameP95":18.7}, + "rotate-none-px-r0-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":62.43,"reload":0,"render":0.03,"undo":true,"dropped":1,"controlDropped":0,"work":null,"frameP95":17.71}, + "rotate-none-px-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":62.44,"reload":0.04,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.87,"frameP95":17.21}, + "rotate-none-px-r0-nested-z50": {"pass":false,"tracking":0.08,"pressJump":0,"drop":62.43,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.7,"frameP95":18.71}, + "rotate-none-px-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.07,"frameP95":17.5}, + "rotate-none-px-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.08,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.43,"frameP95":19.4}, + "rotate-none-px-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.51,"frameP95":19.4}, + "rotate-none-px-r30-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":62.45,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.22,"frameP95":17.2}, + "rotate-none-px-r30-nested-z200": {"pass":false,"tracking":0.03,"pressJump":0,"drop":62.43,"reload":0.05,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.06,"frameP95":17.6}, + "rotate-none-px-r30-nested-z50": {"pass":false,"tracking":0.1,"pressJump":0,"drop":62.47,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.11,"frameP95":17.71}, + "rotate-none-px-r30-root-z100": {"pass":false,"tracking":0.05,"pressJump":0,"drop":74.68,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.6,"frameP95":20}, + "rotate-none-px-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":74.71,"reload":0.08,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.38,"frameP95":17.31}, + "rotate-none-px-r30-root-z50": {"pass":false,"tracking":0.09,"pressJump":0,"drop":74.65,"reload":0.05,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.43,"frameP95":18.5}, + "rotate-tween-center-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.64,"frameP95":19.5}, + "rotate-tween-center-r0-nested-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":18}, + "rotate-tween-center-r0-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":1.89,"frameP95":17.5}, + "rotate-tween-center-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.74,"frameP95":17.6}, + "rotate-tween-center-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.68,"frameP95":21.2}, + "rotate-tween-center-r0-root-z50": {"pass":false,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.3}, + "rotate-tween-center-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":4.3,"frameP95":19.41}, + "rotate-tween-center-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.38,"frameP95":19.8}, + "rotate-tween-center-r30-nested-z50": {"pass":true,"tracking":0.11,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.61,"frameP95":17.8}, + "rotate-tween-center-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.59,"frameP95":17.6}, + "rotate-tween-center-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":1.81,"frameP95":18.31}, + "rotate-tween-center-r30-root-z50": {"pass":true,"tracking":0.11,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.21,"frameP95":20.5}, + "rotate-tween-pct-r0-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.31}, + "rotate-tween-pct-r0-nested-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":2.97,"frameP95":17.6}, + "rotate-tween-pct-r0-nested-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.26,"frameP95":18}, + "rotate-tween-pct-r0-root-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.37,"frameP95":17.3}, + "rotate-tween-pct-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.34,"frameP95":17.31}, + "rotate-tween-pct-r0-root-z50": {"pass":true,"tracking":0.07,"pressJump":0,"drop":0,"reload":0.07,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":2.75,"frameP95":17.6}, + "rotate-tween-pct-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.55,"frameP95":17.71}, + "rotate-tween-pct-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.06,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":3.29,"frameP95":18.71}, + "rotate-tween-pct-r30-nested-z50": {"pass":true,"tracking":0.09,"pressJump":0,"drop":0,"reload":0.07,"render":0.08,"undo":true,"dropped":0,"controlDropped":0,"work":2.05,"frameP95":17.91}, + "rotate-tween-pct-r30-root-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.21}, + "rotate-tween-pct-r30-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.07,"render":0.09,"undo":true,"dropped":0,"controlDropped":0,"work":2.92,"frameP95":17.8}, + "rotate-tween-pct-r30-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":3.58,"frameP95":18.1}, + "rotate-tween-px-r0-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":4.7,"frameP95":19}, + "rotate-tween-px-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.06,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":1.72,"frameP95":20.31}, + "rotate-tween-px-r0-nested-z50": {"pass":true,"tracking":0.05,"pressJump":0,"drop":0,"reload":0.1,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":1.96,"frameP95":17.71}, + "rotate-tween-px-r0-root-z100": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":2.93,"frameP95":17.41}, + "rotate-tween-px-r0-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.02,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":3.16,"frameP95":17.91}, + "rotate-tween-px-r0-root-z50": {"pass":true,"tracking":0.08,"pressJump":0,"drop":0,"reload":0.05,"render":0.05,"undo":true,"dropped":0,"controlDropped":0,"work":1.9,"frameP95":17.1}, + "rotate-tween-px-r30-nested-z100": {"pass":true,"tracking":0.04,"pressJump":0,"drop":0,"reload":0,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.27,"frameP95":19.41}, + "rotate-tween-px-r30-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.03,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.75,"frameP95":17.8}, + "rotate-tween-px-r30-nested-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.07,"render":0.07,"undo":true,"dropped":0,"controlDropped":0,"work":2.22,"frameP95":17.91}, + "rotate-tween-px-r30-root-z100": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":3.72,"frameP95":18.41}, + "rotate-tween-px-r30-root-z200": {"pass":false,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.04,"render":0.04,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.2}, + "rotate-tween-px-r30-root-z50": {"pass":true,"tracking":0.1,"pressJump":0,"drop":0,"reload":0.11,"render":0.03,"undo":true,"dropped":0,"controlDropped":0,"work":1.54,"frameP95":17.31}, + "rotate-tween-xpercent-r0-nested-z100": {"pass":false,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":null,"frameP95":17.5}, + "rotate-tween-xpercent-r0-nested-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.28,"frameP95":18}, + "rotate-tween-xpercent-r0-nested-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.97,"frameP95":18.41}, + "rotate-tween-xpercent-r0-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.65,"frameP95":19.4}, + "rotate-tween-xpercent-r0-root-z200": {"pass":true,"tracking":0.02,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.43,"frameP95":17.41}, + "rotate-tween-xpercent-r0-root-z50": {"pass":true,"tracking":0.06,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.45,"frameP95":17.81}, + "rotate-tween-xpercent-r30-nested-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.44,"frameP95":20}, + "rotate-tween-xpercent-r30-nested-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":3.13,"frameP95":17.41}, + "rotate-tween-xpercent-r30-nested-z50": {"pass":true,"tracking":0.11,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":1.57,"frameP95":17.21}, + "rotate-tween-xpercent-r30-root-z100": {"pass":true,"tracking":0.03,"pressJump":0,"drop":0,"reload":0,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.87,"frameP95":17.61}, + "rotate-tween-xpercent-r30-root-z200": {"pass":true,"tracking":0.01,"pressJump":0,"drop":0,"reload":0.03,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.9,"frameP95":18}, + "rotate-tween-xpercent-r30-root-z50": {"pass":true,"tracking":0.11,"pressJump":0,"drop":0,"reload":0.07,"render":0.06,"undo":true,"dropped":0,"controlDropped":0,"work":2.86,"frameP95":17.41} } }