From 2f022bef4a7b6af7fc8dce388fb3bedcfd997300 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 6 Apr 2022 12:48:31 +0300 Subject: [PATCH 1/9] fix(Group Layout): origin + angle --- src/shapes/group.class.js | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/src/shapes/group.class.js b/src/shapes/group.class.js index 2c9fa87af26..15eb5051a3a 100644 --- a/src/shapes/group.class.js +++ b/src/shapes/group.class.js @@ -96,7 +96,8 @@ this.__objectSelectionTracker = this.__objectSelectionMonitor.bind(this, true); this.__objectSelectionDisposer = this.__objectSelectionMonitor.bind(this, false); this._firstLayoutDone = false; - this.callSuper('initialize', options); + // setting angle must occur after initial layout + this.callSuper('initialize', Object.assign({}, options, { angle: 0 })); this.forEachObject(function (object) { this.enterGroup(object, false); }, this); @@ -516,9 +517,11 @@ // clip path as well !isFirstLayout && this.layout !== 'clip-path' && this.clipPath && !this.clipPath.absolutePositioned && this._adjustObjectPosition(this.clipPath, diff); - if (!newCenter.eq(center)) { + var initialAngle = isFirstLayout && context.options && context.options.angle; + if (!newCenter.eq(center) || initialAngle) { // set position this.setPositionByOrigin(newCenter, 'center', 'center'); + initialAngle && this.set('angle', initialAngle); this.setCoords(); } } @@ -714,24 +717,6 @@ }), rotationCorrection = new fabric.Point(0, 0); - if (this.angle) { - var rad = degreesToRadians(this.angle), - sin = Math.abs(fabric.util.sin(rad)), - cos = Math.abs(fabric.util.cos(rad)); - sizeAfter.setXY( - sizeAfter.x * cos + sizeAfter.y * sin, - sizeAfter.x * sin + sizeAfter.y * cos - ); - bboxSizeAfter.setXY( - bboxSizeAfter.x * cos + bboxSizeAfter.y * sin, - bboxSizeAfter.x * sin + bboxSizeAfter.y * cos - ); - strokeWidthVector = fabric.util.rotateVector(strokeWidthVector, rad); - // correct center after rotating - var strokeCorrection = strokeWidthVector.multiply(origin.scalarAdd(-0.5).scalarDivide(-2)); - rotationCorrection = sizeAfter.subtract(size).scalarDivide(2).add(strokeCorrection); - calculatedCenter.addEquals(rotationCorrection); - } // calculate center and correction var originT = origin.scalarAdd(0.5); var originCorrection = sizeAfter.multiply(originT); From 84aa986f3e901ae86b08ab31d465cb58dfd08190 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 6 Apr 2022 13:15:19 +0300 Subject: [PATCH 2/9] reactive visual tests --- test/lib/visualTestLoop.js | 1 + test/visual/group_layout.js | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/test/lib/visualTestLoop.js b/test/lib/visualTestLoop.js index 582e4ef0197..9258bf85172 100644 --- a/test/lib/visualTestLoop.js +++ b/test/lib/visualTestLoop.js @@ -156,6 +156,7 @@ var differentPixels = _pixelMatch(imageDataCanvas, imageDataGolden, output.data, width, height, pixelmatchOptions); var percDiff = differentPixels / totalPixels * 100; var okDiff = totalPixels * percentage; + console.log(okDiff, differentPixels) var isOK = differentPixels < okDiff; assert.ok( isOK, diff --git a/test/visual/group_layout.js b/test/visual/group_layout.js index 94db9052bc0..7f61c41f519 100644 --- a/test/visual/group_layout.js +++ b/test/visual/group_layout.js @@ -323,37 +323,38 @@ }); function createObjectsForOriginTests(originX, originY, options) { - var rect1 = new fabric.Rect({ top: 100, left: 150, width: 30, height: 10, strokeWidth: 0 }), - rect2 = new fabric.Rect({ top: 120, left: 200, width: 10, height: 40, strokeWidth: 0 }), - controlPoint = new fabric.Circle({ radius: 5, fill: 'blue', left: 150, top: 100, originX: 'center', originY: 'center' }); + var rect1 = new fabric.Rect({ left: 150, top: 100, width: 30, height: 10, strokeWidth: 0 }), + rect2 = new fabric.Rect({ left: 200, top: 120, width: 10, height: 40, strokeWidth: 0 }), + controlPoint = new fabric.Circle({ radius: 5, fill: 'blue', left: 150, top: 100, originX: 'center', originY: 'center' }), + tlControlPoint = new fabric.Circle({ radius: 5, fill: 'red', left: 150, top: 100, strokeWidth: 0 }); - var g = new fabric.Group([rect1, rect2], Object.assign({}, options, { - originX, originY, strokeWidth: 1, stroke: 'blue' + var g = new fabric.Group([rect1, rect2, tlControlPoint], Object.assign({}, options, { + originX, originY, backgroundColor: 'pink' })); - return [controlPoint, g]; + return [g, controlPoint]; } var originX = ['left', 'center', 'right']; var originY = ['top', 'center', 'bottom']; -/* + for (let angle = 0; angle < 360; angle += 30) { originX.forEach(ox => { originY.forEach(oy => { tests.push({ - test: `layout with originX=${ox}, originY=${oy} and angle=${angle} values - angle is WRONG`, + test: `layout with originX=${ox}, originY=${oy} and angle=${angle} values`, code: function (canvas, callback) { canvas.add(...createObjectsForOriginTests(ox, oy, { angle })); canvas.renderAll(); callback(canvas.lowerCanvasEl); }, golden: `group-layout/origin-${ox}-${oy}-${angle}deg.png`, - percentage: 0.06, + percentage: 0.001, width: 300, - height: 300 + height: 200 }); }); }); } -*/ + tests.forEach(visualTestLoop(QUnit)); })(); From c79ffcda68db88ffdefaf5179e159d85e7107869 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 6 Apr 2022 13:22:20 +0300 Subject: [PATCH 3/9] revert --- test/lib/visualTestLoop.js | 1 - 1 file changed, 1 deletion(-) diff --git a/test/lib/visualTestLoop.js b/test/lib/visualTestLoop.js index 9258bf85172..582e4ef0197 100644 --- a/test/lib/visualTestLoop.js +++ b/test/lib/visualTestLoop.js @@ -156,7 +156,6 @@ var differentPixels = _pixelMatch(imageDataCanvas, imageDataGolden, output.data, width, height, pixelmatchOptions); var percDiff = differentPixels / totalPixels * 100; var okDiff = totalPixels * percentage; - console.log(okDiff, differentPixels) var isOK = differentPixels < okDiff; assert.ok( isOK, From 027d3eebbd731e445da79ce1d7a1ae0243164135 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 6 Apr 2022 13:22:36 +0300 Subject: [PATCH 4/9] Update group_layout.js --- test/visual/group_layout.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/visual/group_layout.js b/test/visual/group_layout.js index 7f61c41f519..41293d14895 100644 --- a/test/visual/group_layout.js +++ b/test/visual/group_layout.js @@ -343,7 +343,7 @@ tests.push({ test: `layout with originX=${ox}, originY=${oy} and angle=${angle} values`, code: function (canvas, callback) { - canvas.add(...createObjectsForOriginTests(ox, oy, { angle })); + canvas.add.apply(canvas, createObjectsForOriginTests(ox, oy, { angle })); canvas.renderAll(); callback(canvas.lowerCanvasEl); }, From fbe039760e2792a15e5f1f14ddadb6cee071f14a Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 6 Apr 2022 13:23:22 +0300 Subject: [PATCH 5/9] goldens (binaries) --- .../group-layout/origin-center-bottom-0deg.png | Bin 0 -> 1015 bytes .../group-layout/origin-center-bottom-120deg.png | Bin 0 -> 3319 bytes .../group-layout/origin-center-bottom-150deg.png | Bin 0 -> 3202 bytes .../group-layout/origin-center-bottom-180deg.png | Bin 0 -> 1023 bytes .../group-layout/origin-center-bottom-210deg.png | Bin 0 -> 3028 bytes .../group-layout/origin-center-bottom-240deg.png | Bin 0 -> 3036 bytes .../group-layout/origin-center-bottom-270deg.png | Bin 0 -> 1040 bytes .../group-layout/origin-center-bottom-300deg.png | Bin 0 -> 3321 bytes .../group-layout/origin-center-bottom-30deg.png | Bin 0 -> 3065 bytes .../group-layout/origin-center-bottom-330deg.png | Bin 0 -> 3259 bytes .../group-layout/origin-center-bottom-60deg.png | Bin 0 -> 3061 bytes .../group-layout/origin-center-bottom-90deg.png | Bin 0 -> 1044 bytes .../group-layout/origin-center-center-0deg.png | Bin 0 -> 1062 bytes .../group-layout/origin-center-center-120deg.png | Bin 0 -> 3423 bytes .../group-layout/origin-center-center-150deg.png | Bin 0 -> 3337 bytes .../group-layout/origin-center-center-180deg.png | Bin 0 -> 1057 bytes .../group-layout/origin-center-center-210deg.png | Bin 0 -> 3207 bytes .../group-layout/origin-center-center-240deg.png | Bin 0 -> 3146 bytes .../group-layout/origin-center-center-270deg.png | Bin 0 -> 1072 bytes .../group-layout/origin-center-center-300deg.png | Bin 0 -> 3431 bytes .../group-layout/origin-center-center-30deg.png | Bin 0 -> 3191 bytes .../group-layout/origin-center-center-330deg.png | Bin 0 -> 3370 bytes .../group-layout/origin-center-center-60deg.png | Bin 0 -> 3199 bytes .../group-layout/origin-center-center-90deg.png | Bin 0 -> 1087 bytes .../group-layout/origin-center-top-0deg.png | Bin 0 -> 996 bytes .../group-layout/origin-center-top-120deg.png | Bin 0 -> 3256 bytes .../group-layout/origin-center-top-150deg.png | Bin 0 -> 3127 bytes .../group-layout/origin-center-top-180deg.png | Bin 0 -> 969 bytes .../group-layout/origin-center-top-210deg.png | Bin 0 -> 2950 bytes .../group-layout/origin-center-top-240deg.png | Bin 0 -> 2948 bytes .../group-layout/origin-center-top-270deg.png | Bin 0 -> 999 bytes .../group-layout/origin-center-top-300deg.png | Bin 0 -> 3204 bytes .../group-layout/origin-center-top-30deg.png | Bin 0 -> 2963 bytes .../group-layout/origin-center-top-330deg.png | Bin 0 -> 3120 bytes .../group-layout/origin-center-top-60deg.png | Bin 0 -> 2973 bytes .../group-layout/origin-center-top-90deg.png | Bin 0 -> 1035 bytes .../group-layout/origin-left-bottom-0deg.png | Bin 0 -> 986 bytes .../group-layout/origin-left-bottom-120deg.png | Bin 0 -> 3273 bytes .../group-layout/origin-left-bottom-150deg.png | Bin 0 -> 3185 bytes .../group-layout/origin-left-bottom-180deg.png | Bin 0 -> 998 bytes .../group-layout/origin-left-bottom-210deg.png | Bin 0 -> 3019 bytes .../group-layout/origin-left-bottom-240deg.png | Bin 0 -> 3005 bytes .../group-layout/origin-left-bottom-270deg.png | Bin 0 -> 995 bytes .../group-layout/origin-left-bottom-300deg.png | Bin 0 -> 3252 bytes .../group-layout/origin-left-bottom-30deg.png | Bin 0 -> 3004 bytes .../group-layout/origin-left-bottom-330deg.png | Bin 0 -> 3194 bytes .../group-layout/origin-left-bottom-60deg.png | Bin 0 -> 3054 bytes .../group-layout/origin-left-bottom-90deg.png | Bin 0 -> 1026 bytes .../group-layout/origin-left-center-0deg.png | Bin 0 -> 1023 bytes .../group-layout/origin-left-center-120deg.png | Bin 0 -> 3316 bytes .../group-layout/origin-left-center-150deg.png | Bin 0 -> 3248 bytes .../group-layout/origin-left-center-180deg.png | Bin 0 -> 1035 bytes .../group-layout/origin-left-center-210deg.png | Bin 0 -> 3069 bytes .../group-layout/origin-left-center-240deg.png | Bin 0 -> 3019 bytes .../group-layout/origin-left-center-270deg.png | Bin 0 -> 1015 bytes .../group-layout/origin-left-center-300deg.png | Bin 0 -> 3320 bytes .../group-layout/origin-left-center-30deg.png | Bin 0 -> 3079 bytes .../group-layout/origin-left-center-330deg.png | Bin 0 -> 3249 bytes .../group-layout/origin-left-center-60deg.png | Bin 0 -> 3048 bytes .../group-layout/origin-left-center-90deg.png | Bin 0 -> 1054 bytes .../golden/group-layout/origin-left-top-0deg.png | Bin 0 -> 926 bytes .../group-layout/origin-left-top-120deg.png | Bin 0 -> 3247 bytes .../group-layout/origin-left-top-150deg.png | Bin 0 -> 3129 bytes .../group-layout/origin-left-top-180deg.png | Bin 0 -> 931 bytes .../group-layout/origin-left-top-210deg.png | Bin 0 -> 2984 bytes .../group-layout/origin-left-top-240deg.png | Bin 0 -> 2974 bytes .../group-layout/origin-left-top-270deg.png | Bin 0 -> 941 bytes .../group-layout/origin-left-top-300deg.png | Bin 0 -> 3226 bytes .../group-layout/origin-left-top-30deg.png | Bin 0 -> 3017 bytes .../group-layout/origin-left-top-330deg.png | Bin 0 -> 3137 bytes .../group-layout/origin-left-top-60deg.png | Bin 0 -> 3028 bytes .../group-layout/origin-left-top-90deg.png | Bin 0 -> 956 bytes .../group-layout/origin-right-bottom-0deg.png | Bin 0 -> 937 bytes .../group-layout/origin-right-bottom-120deg.png | Bin 0 -> 3225 bytes .../group-layout/origin-right-bottom-150deg.png | Bin 0 -> 3189 bytes .../group-layout/origin-right-bottom-180deg.png | Bin 0 -> 925 bytes .../group-layout/origin-right-bottom-210deg.png | Bin 0 -> 2996 bytes .../group-layout/origin-right-bottom-240deg.png | Bin 0 -> 3001 bytes .../group-layout/origin-right-bottom-270deg.png | Bin 0 -> 945 bytes .../group-layout/origin-right-bottom-300deg.png | Bin 0 -> 3234 bytes .../group-layout/origin-right-bottom-30deg.png | Bin 0 -> 3003 bytes .../group-layout/origin-right-bottom-330deg.png | Bin 0 -> 3193 bytes .../group-layout/origin-right-bottom-60deg.png | Bin 0 -> 3034 bytes .../group-layout/origin-right-bottom-90deg.png | Bin 0 -> 955 bytes .../group-layout/origin-right-center-0deg.png | Bin 0 -> 937 bytes .../group-layout/origin-right-center-120deg.png | Bin 0 -> 3259 bytes .../group-layout/origin-right-center-150deg.png | Bin 0 -> 3155 bytes .../group-layout/origin-right-center-180deg.png | Bin 0 -> 921 bytes .../group-layout/origin-right-center-210deg.png | Bin 0 -> 2974 bytes .../group-layout/origin-right-center-240deg.png | Bin 0 -> 2982 bytes .../group-layout/origin-right-center-270deg.png | Bin 0 -> 943 bytes .../group-layout/origin-right-center-300deg.png | Bin 0 -> 3232 bytes .../group-layout/origin-right-center-30deg.png | Bin 0 -> 3006 bytes .../group-layout/origin-right-center-330deg.png | Bin 0 -> 3188 bytes .../group-layout/origin-right-center-60deg.png | Bin 0 -> 2996 bytes .../group-layout/origin-right-center-90deg.png | Bin 0 -> 945 bytes .../group-layout/origin-right-top-0deg.png | Bin 0 -> 1010 bytes .../group-layout/origin-right-top-120deg.png | Bin 0 -> 3291 bytes .../group-layout/origin-right-top-150deg.png | Bin 0 -> 3160 bytes .../group-layout/origin-right-top-180deg.png | Bin 0 -> 980 bytes .../group-layout/origin-right-top-210deg.png | Bin 0 -> 3037 bytes .../group-layout/origin-right-top-240deg.png | Bin 0 -> 3005 bytes .../group-layout/origin-right-top-270deg.png | Bin 0 -> 998 bytes .../group-layout/origin-right-top-300deg.png | Bin 0 -> 3231 bytes .../group-layout/origin-right-top-30deg.png | Bin 0 -> 3007 bytes .../group-layout/origin-right-top-330deg.png | Bin 0 -> 3189 bytes .../group-layout/origin-right-top-60deg.png | Bin 0 -> 3035 bytes .../group-layout/origin-right-top-90deg.png | Bin 0 -> 1014 bytes 108 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/visual/golden/group-layout/origin-center-bottom-0deg.png create mode 100644 test/visual/golden/group-layout/origin-center-bottom-120deg.png create mode 100644 test/visual/golden/group-layout/origin-center-bottom-150deg.png create mode 100644 test/visual/golden/group-layout/origin-center-bottom-180deg.png create mode 100644 test/visual/golden/group-layout/origin-center-bottom-210deg.png create mode 100644 test/visual/golden/group-layout/origin-center-bottom-240deg.png create mode 100644 test/visual/golden/group-layout/origin-center-bottom-270deg.png create mode 100644 test/visual/golden/group-layout/origin-center-bottom-300deg.png create mode 100644 test/visual/golden/group-layout/origin-center-bottom-30deg.png create mode 100644 test/visual/golden/group-layout/origin-center-bottom-330deg.png create mode 100644 test/visual/golden/group-layout/origin-center-bottom-60deg.png create mode 100644 test/visual/golden/group-layout/origin-center-bottom-90deg.png create mode 100644 test/visual/golden/group-layout/origin-center-center-0deg.png create mode 100644 test/visual/golden/group-layout/origin-center-center-120deg.png create mode 100644 test/visual/golden/group-layout/origin-center-center-150deg.png create mode 100644 test/visual/golden/group-layout/origin-center-center-180deg.png create mode 100644 test/visual/golden/group-layout/origin-center-center-210deg.png create mode 100644 test/visual/golden/group-layout/origin-center-center-240deg.png create mode 100644 test/visual/golden/group-layout/origin-center-center-270deg.png create mode 100644 test/visual/golden/group-layout/origin-center-center-300deg.png create mode 100644 test/visual/golden/group-layout/origin-center-center-30deg.png create mode 100644 test/visual/golden/group-layout/origin-center-center-330deg.png create mode 100644 test/visual/golden/group-layout/origin-center-center-60deg.png create mode 100644 test/visual/golden/group-layout/origin-center-center-90deg.png create mode 100644 test/visual/golden/group-layout/origin-center-top-0deg.png create mode 100644 test/visual/golden/group-layout/origin-center-top-120deg.png create mode 100644 test/visual/golden/group-layout/origin-center-top-150deg.png create mode 100644 test/visual/golden/group-layout/origin-center-top-180deg.png create mode 100644 test/visual/golden/group-layout/origin-center-top-210deg.png create mode 100644 test/visual/golden/group-layout/origin-center-top-240deg.png create mode 100644 test/visual/golden/group-layout/origin-center-top-270deg.png create mode 100644 test/visual/golden/group-layout/origin-center-top-300deg.png create mode 100644 test/visual/golden/group-layout/origin-center-top-30deg.png create mode 100644 test/visual/golden/group-layout/origin-center-top-330deg.png create mode 100644 test/visual/golden/group-layout/origin-center-top-60deg.png create mode 100644 test/visual/golden/group-layout/origin-center-top-90deg.png create mode 100644 test/visual/golden/group-layout/origin-left-bottom-0deg.png create mode 100644 test/visual/golden/group-layout/origin-left-bottom-120deg.png create mode 100644 test/visual/golden/group-layout/origin-left-bottom-150deg.png create mode 100644 test/visual/golden/group-layout/origin-left-bottom-180deg.png create mode 100644 test/visual/golden/group-layout/origin-left-bottom-210deg.png create mode 100644 test/visual/golden/group-layout/origin-left-bottom-240deg.png create mode 100644 test/visual/golden/group-layout/origin-left-bottom-270deg.png create mode 100644 test/visual/golden/group-layout/origin-left-bottom-300deg.png create mode 100644 test/visual/golden/group-layout/origin-left-bottom-30deg.png create mode 100644 test/visual/golden/group-layout/origin-left-bottom-330deg.png create mode 100644 test/visual/golden/group-layout/origin-left-bottom-60deg.png create mode 100644 test/visual/golden/group-layout/origin-left-bottom-90deg.png create mode 100644 test/visual/golden/group-layout/origin-left-center-0deg.png create mode 100644 test/visual/golden/group-layout/origin-left-center-120deg.png create mode 100644 test/visual/golden/group-layout/origin-left-center-150deg.png create mode 100644 test/visual/golden/group-layout/origin-left-center-180deg.png create mode 100644 test/visual/golden/group-layout/origin-left-center-210deg.png create mode 100644 test/visual/golden/group-layout/origin-left-center-240deg.png create mode 100644 test/visual/golden/group-layout/origin-left-center-270deg.png create mode 100644 test/visual/golden/group-layout/origin-left-center-300deg.png create mode 100644 test/visual/golden/group-layout/origin-left-center-30deg.png create mode 100644 test/visual/golden/group-layout/origin-left-center-330deg.png create mode 100644 test/visual/golden/group-layout/origin-left-center-60deg.png create mode 100644 test/visual/golden/group-layout/origin-left-center-90deg.png create mode 100644 test/visual/golden/group-layout/origin-left-top-0deg.png create mode 100644 test/visual/golden/group-layout/origin-left-top-120deg.png create mode 100644 test/visual/golden/group-layout/origin-left-top-150deg.png create mode 100644 test/visual/golden/group-layout/origin-left-top-180deg.png create mode 100644 test/visual/golden/group-layout/origin-left-top-210deg.png create mode 100644 test/visual/golden/group-layout/origin-left-top-240deg.png create mode 100644 test/visual/golden/group-layout/origin-left-top-270deg.png create mode 100644 test/visual/golden/group-layout/origin-left-top-300deg.png create mode 100644 test/visual/golden/group-layout/origin-left-top-30deg.png create mode 100644 test/visual/golden/group-layout/origin-left-top-330deg.png create mode 100644 test/visual/golden/group-layout/origin-left-top-60deg.png create mode 100644 test/visual/golden/group-layout/origin-left-top-90deg.png create mode 100644 test/visual/golden/group-layout/origin-right-bottom-0deg.png create mode 100644 test/visual/golden/group-layout/origin-right-bottom-120deg.png create mode 100644 test/visual/golden/group-layout/origin-right-bottom-150deg.png create mode 100644 test/visual/golden/group-layout/origin-right-bottom-180deg.png create mode 100644 test/visual/golden/group-layout/origin-right-bottom-210deg.png create mode 100644 test/visual/golden/group-layout/origin-right-bottom-240deg.png create mode 100644 test/visual/golden/group-layout/origin-right-bottom-270deg.png create mode 100644 test/visual/golden/group-layout/origin-right-bottom-300deg.png create mode 100644 test/visual/golden/group-layout/origin-right-bottom-30deg.png create mode 100644 test/visual/golden/group-layout/origin-right-bottom-330deg.png create mode 100644 test/visual/golden/group-layout/origin-right-bottom-60deg.png create mode 100644 test/visual/golden/group-layout/origin-right-bottom-90deg.png create mode 100644 test/visual/golden/group-layout/origin-right-center-0deg.png create mode 100644 test/visual/golden/group-layout/origin-right-center-120deg.png create mode 100644 test/visual/golden/group-layout/origin-right-center-150deg.png create mode 100644 test/visual/golden/group-layout/origin-right-center-180deg.png create mode 100644 test/visual/golden/group-layout/origin-right-center-210deg.png create mode 100644 test/visual/golden/group-layout/origin-right-center-240deg.png create mode 100644 test/visual/golden/group-layout/origin-right-center-270deg.png create mode 100644 test/visual/golden/group-layout/origin-right-center-300deg.png create mode 100644 test/visual/golden/group-layout/origin-right-center-30deg.png create mode 100644 test/visual/golden/group-layout/origin-right-center-330deg.png create mode 100644 test/visual/golden/group-layout/origin-right-center-60deg.png create mode 100644 test/visual/golden/group-layout/origin-right-center-90deg.png create mode 100644 test/visual/golden/group-layout/origin-right-top-0deg.png create mode 100644 test/visual/golden/group-layout/origin-right-top-120deg.png create mode 100644 test/visual/golden/group-layout/origin-right-top-150deg.png create mode 100644 test/visual/golden/group-layout/origin-right-top-180deg.png create mode 100644 test/visual/golden/group-layout/origin-right-top-210deg.png create mode 100644 test/visual/golden/group-layout/origin-right-top-240deg.png create mode 100644 test/visual/golden/group-layout/origin-right-top-270deg.png create mode 100644 test/visual/golden/group-layout/origin-right-top-300deg.png create mode 100644 test/visual/golden/group-layout/origin-right-top-30deg.png create mode 100644 test/visual/golden/group-layout/origin-right-top-330deg.png create mode 100644 test/visual/golden/group-layout/origin-right-top-60deg.png create mode 100644 test/visual/golden/group-layout/origin-right-top-90deg.png diff --git a/test/visual/golden/group-layout/origin-center-bottom-0deg.png b/test/visual/golden/group-layout/origin-center-bottom-0deg.png new file mode 100644 index 0000000000000000000000000000000000000000..265f51a69b176378443bc11391ffb88e10bae508 GIT binary patch literal 1015 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-bottom-180deg.png b/test/visual/golden/group-layout/origin-center-bottom-180deg.png new file mode 100644 index 0000000000000000000000000000000000000000..20de9145b0b2682312f28491f0733862f1b8bb5e GIT binary patch literal 1023 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 E0L>DTlmGw# literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-bottom-300deg.png b/test/visual/golden/group-layout/origin-center-bottom-300deg.png new file mode 100644 index 0000000000000000000000000000000000000000..0a427d326574afa0cf3df65f59b306a38057ead6 GIT binary patch literal 3321 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 KsctpgDem7~B0?ts literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-bottom-30deg.png b/test/visual/golden/group-layout/origin-center-bottom-30deg.png new file mode 100644 index 0000000000000000000000000000000000000000..24e3fc897d816e0162771e373aeae0c36f5496ba GIT binary patch literal 3065 zcmcImi#HSOAKzYSV`#{wmuQ$_iz4NcOD<_>%QeeguS+49&7~;RNEEr>6K&aeY1u30 zTBzJgmJH41B{a7wceVCg|H6CD?>x_WF5h!L&-s47=lOh|=iUX3jkxHaq5uFu9DUBp z5dZ+91nVB~e!=KC#dZ-)`~B=}tN{Gq?QvUG4gdhDLtCA3jxAl8hDd}edrC8mbS|ay)rH&ofn6JFoB1tdMZ8A)8q=%eTw+cp@4?Iq- zC)ZuvC&LskHs21%p`^_Z;r;@vq{0Ij120<=#Om+7C&xXF!yMr8oHvyRS{GUeogJ{e zJ;L^thid5T|JI$iw1t!aXVnf{WseU_d&xs8q&io^-H&eA8s(_94WgQ^sS`J$TjsGM zo!YUXX7+YQC2EK1(tFnuSuvL2cS;YSlSwquTX=NH4an0q&e(GT?a?+*e&X4Nk7WPF=8NvFOsoTXmnv zdJa4Th|TQ*V9 zP0%Q>PhDboz<+xEidN#}yODszABipBKl_mP3YFxr(lb<2q zNw2_cxXr@MM{f}SW@dVg(7t`OiM5dwNa*dl6qV%)S6p$l={ zqa6mBaC!iqf4@jf`DcX%QQp{>y#t5kG0aFTah+}vmm4TllBgS%OXP7`%!d@;ofdEQ0M@JhF&OT@RgL+-VBX zUN1OZwEg^4e1sI8zxsoFzA2Alqv-OW*gG}e_E9of0zzGWmKZF0b8;@2-mQBS zOIQvovpG3a_c33y_HS^1g-S-Xjt8zO*Y>smA%fI(QM~8)ntgfFDN~9yK>qc>GqkQ{ zz2)QXWI^O^E1}SaI~hS3@*a^>uV^m*ji4@vB`*4L@sx_BrT~c;w)e*wu8zFv?FPKu zmnd6sgtN(B#vk2Ia&%g5jh0Jai;v#-AjICt zMzSqxx-0_@*g9GZwud|C&mua{)6sW_ei-^{B4ByEV4n!4Ve_cv zhFHXjTN`$0kb^YD&QQSpstp|a1qHD$f=V9|@}<7HAIYdjmWRfWMc<3qg$A?bF5~oLB*SkqVSRbY zWY^@pV6*-9SR=k8@KY z={5qovfn#|Y@=?K3f+~MZ$2&KlKCs@__{`dtZNZO=Wi1b<|pUsD>_y$bi_Ud^Qfm3 z@vDX>bc5LRwIcUan2yuDh1Pm->Qe#Z(G<^J;TOYUW?S6!!H&e(#Zx=OZ;|eoZeg80 z4Qu;5H3Knj{wUH_Gn|C~=9As^3?wo!Phlj2v$0gPH|svujJKgr5znd!7|jt~-dJem zq);rUEXF-U1RATzK}cByMV&ur-R;!T+Y!&Zlv*h1;xajsESU#_)YvBzqW?^~E@1nD zYSx~&Yxij2$_hhSvGsa?#)@j1BD&1SH?Lytdq2XVV_PP5Kcb9WnE&iuBxj@bnuL*X z?BjD0&H%42EgR#lH;5ZJpg^PRxb}Vh)n9OK{^}&weKjk7DIvqJWPA9@-)x$8x#f(C zwF406Hm6>?(`aHk{NW*&5G6-z7Mx=)>&oCr9wpLDIr6U$vIZ&y%4KLLC{)#4>q=ks z*CN%QvPgw3mJ{+V#+yQss?YW!P4C)+R#A?MGKJEvMQPPYE(t4d+wF-C)Fd?pU`+d2 zmvK=@S=U49Z|;vt3s?huPtXiFr^`0Ka9!(zu6ud+D9UN3rFB;kjnqkcIT@1y^Q!1T zPO8IHbDDn1uZK(DZ4!}b@;27fMDpdz>Y?N7*>yY#ejnmpQihDesRc6s8RUX838Qgs%h5@-L> ztSidF;#N92)t@6f9WfSK_{|{&-c1b->Rs(bYZjzqw;^7Fp|q2!^4cK_=hlYbZNe>(?^CA&K8;lI!)R zAfb@;Rz(MtFMBe%Is3O8BS+#>RPW9fG;SX<-tPT)-DeE27_&V;5jSToDP}qg&C$7; z6O336*qIg*p5Q;Zh@Bx{T#EE;2lOm4p4egsNkWt#Y1)i%P2vX2l)fyTl0jHR)k){x z=d@w;5ODgC4~+I;7EucbF^(h(oACzebtVj~Jj54m6Vr!pE(U%1nc*09p#6ZIFjQsQ zV_Nrd_S5t=z%wD-G|mTN1w2C1yQswT*`#^Iqz2E22d{2lG2165yofh3pSY7u{zDW2 z42+2PT_I9l7i(pG);W$33c3#~9v?5R zxyFZWo8+vEJDmDM6#_jE@9A_zgQ?@#&Mf&#yJG%NhW;V#7LM_5=_2xFrA0svNmgJK zm(KZnL8u{MYRFFab!Es2&(^`YZ&nu1;dwO|+&?2p^^LsmPfOM{YXBaF_I_x8?sAfl z4Rd2dyP$sWy2Wug$3QyhMx0f!e}kOC(dUHh;oAy{CaoQ`U#7hmvWJVEg7#j_$Mj!4 vUmu}Hy(tIC1eTvSO8sv?(*G}tD#HgUi4N?{(|U{re|Z4f8e>&w;dA?cdJn)p literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-bottom-330deg.png b/test/visual/golden/group-layout/origin-center-bottom-330deg.png new file mode 100644 index 0000000000000000000000000000000000000000..9863700c917ac120bb60e40a6eab5cd0b28373aa GIT binary patch literal 3259 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 BC{q9c literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-bottom-60deg.png b/test/visual/golden/group-layout/origin-center-bottom-60deg.png new file mode 100644 index 0000000000000000000000000000000000000000..deaaa3586817e23cbc1ff9bf2b2c2ba7864c209b GIT binary patch literal 3061 zcmb_e`8yO`8=jFw%!|ZC29qrr*%AiH7|R&zG(yrCVvHoRWM9fo5g|LnSf=;Qt}HRB z5E-8sYe@EGNXTx!>H8DD>%Go%opXM;pXWUHx$f(nJKoaV2y|NHGynhqp^T9j000PM z?YlTRSTknon>B0Ua6%g)0n9(6@LgFN0KiQ_A@#5Uxr~X>D(oD-b7Q@+g&wEq_M&h^ zh7D?WtxYaunB5c-@JgAgR34Z?Bxh4yytpNYqZxhXg9oV;Z!aR+-rrEcrT)R1=Nht8S zY@8~E`q!ewxxWCA47~C6uL~%nEz#WF^`G=a=xrW6-=PM>G}ZT|!%ua4$CX>0T2Sp% z_{&k1?I0o{O$y-oq(c6?Y_o)~KIf^UmeY8U$6sEEF-_@hXIWlhl~OLD2EBld6cT)w zAReXTWiu8iy{!+80zxwjf_Kc`#MDY?2fnB|&6mJ;^?CpY4XxE&5+*g<)XG=02ZGvj zvce`w_07FLj&yk@yOn&HHi6G|s9cK3z%~g44<}|hT zr||ayHLmjP>MGwaoIT+|{$2B0g(F=31(5yYSXpyY%+x=SuNQXL(hB*0sdT~p<2 z$~k(dTf?LV#koT6HxCeK^MLu@v zPjgJV-(v3{3=(}Xf|5Ova^CA)6tsf=;ui!?pYnQ{>LyBXb51z_DbIBWO|59&h>jAdgYSLvddm$@eU^{(PMIfN+ zDsd3Z0w@>NDk-adSu{P2UIjdcw=i2wzC63(Cq!J7>&d6X^tqe)jh zMyvCz?hgd`;5030Y~OK_;ji&h)>NhrHa%r!KN#W7j}%91p*3Uje~NK{M7wxx#P+pg z#mq>)J+x3q#t`)dQgf6Gsgmix6EY@^F0tE&cIr7)WI7z1qsUumf&){4jCGYeld zR=0C1v(2@Au9oG6bVJvX>W2UH?$BlPo_%b`BqIpJb7vEkk-bDhMY{d*y=%DOt#QEZ zuzu-}s)PaUhBDQOs;78;LxY(P#%mk`;^8<39Hb`TX&bk1S~g|WJ2Cq9z7ocFzjc;v z)%f|!R6^n+$5;5wjK1@rbxyNbvUi7l(QD&35PvG8&V(_}9X+2qLow=~&7dP;##%-n zxISqxIFHh!$;DdA3DCE0zZ^)f5QOROx*JnR$8gh=SGJLnYDNogL9G#7h$h%hKRBBSreTZ(a*}f$X{!MGrx$URbk(C{b3uYZ!=t2 z=Pb(NZ>^B6jfX}_|L*|f$*QijdAXu9{26|s9#ePnLtPFW8{XaAw+0gO$9nD7C;C$K zpmV-*B3-d0^sPI_S{)nhI7AV9)WxP3kT+qT=!I96yxDbrMoZ3WhjpH}I@adX6e?Bs zSKlFzHrhHpov7pfXPoeIT*Z;2++v|qi+mC-IzlKxfXISZpf8L_KjFJ-&k7%W zP`lxO#Ub48C{qpgSy7heTjj*aPT1)UWvrNrJer19#z^zHB^0A`Y^2gG(`%|;MDPI@ z*lt7!nSiH(4Yb2V#(LxCW=>f_@K9@$g6PqwQXD^F%x)JuwJx;3d$LzMbSJb;{1@wy znJjao$Z?~&PU}bPcw6Fu_K1d*=tYZrp<7PX#<@hontE!War+78PsLAJ1^Yc3?s-b; z&w-E5%}0QbjE5UGNpJ5m&<%kWBl}*Bli8mS$b(u56!_U~wYGO2ORyIz2X; z+{F4wF@^PS82&A-X{<(drjE=pv6Ffg?q#bWy@#4~_Ls?W=dJRVzgu%nFep;p z%i3I05Z~@~6Jcqthygi;<<*Mv3}ATvEjSAPF;kSUhCWv@RGWge->^6>zafjROu!twEc0o-B8&Hw-a literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-bottom-90deg.png b/test/visual/golden/group-layout/origin-center-bottom-90deg.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc59acb4ac5fb30fd98b580f730b052774181b7 GIT binary patch literal 1044 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tJn zo-U3d6?5L+y`2>kDs%kfeZAZujYYjCmz}jbCThiXOxPI5c9G*N=PFj#t^3;Y6}?t^ zEZx`C;i2EF+od4lI3Y~c=t}UGNhx02#3wu0mdr6aZdzw&U~c^SQN7{k)Q#yI%b9@o zQWYHdvg(*E!{wFxN_NV9=V=bmHQ%g$^0enUwMw12@@J=eo>R4)pHiLvGJ@^T{F~PA z7!xLidfxLbdY1ow{+&wOxlfL&1P4B6dL#Lr!QkY%C-XP%y8BW^zc)jSg?pFP?ZdOK zx7)Gq2C^#_wVU?y*K(C{iUsf-Y|^uPpLkZ>d45xD6Km|AyN73OZ-c7SKiR4`fB*b* z8`<5QH!SG3n(MrHy~+PW6^AC#n*SJ{)XRkm)}1N`I}_L0{9Lx zbty(T7_x9{v?VYe70_8A(Znj^yrCh917snZB-@I4zOUFP|9bN3D)Y~@T(jA^{jZY? z?!>h*u2`+o?HM-7WU|Sa>qP-@d6nty(A8NH*s1qIma7I!iZi{uO@z{*04T*Yl;kJzl$bcGpUkh%ec8p2{a> z*9TlJz4WUxKWhJt3zy~ZE4)|)jHl(LSBr{IOrCHf@#6llN%EJTJ~RxSYQne8xc>gy zi@rxggmivwo%Y0Q())K?5*}U%o96dtqVo6c?&hMwo*P~SZ=Lw$u!{KPnDe>TYgc*6 zW#l|9D8N>ioFa+%sE?E7r}uS$p|^&XcU2FSna8l|}FbY@K;d@Aa+8{olU5 zm%77y9Y;Liilp791|pN|`aj3Lzj`iZ<6*SeL(@go>;N(>f$0w?r((_0z*(G)Aik%o KpUXO@geCy%ijvd- literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-center-0deg.png b/test/visual/golden/group-layout/origin-center-center-0deg.png new file mode 100644 index 0000000000000000000000000000000000000000..d53d262e01017bdd27589c08f1707ddd64047d15 GIT binary patch literal 1062 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tKa zo-U3d6?5L+IiD?(E_3|jd5=wOPOjl+f8BQ06^nYI$}MMmL*`Zdf+<|CFYaHd%FJB( z-$8$BlubpqNR>v&hbv}Nk4WS?c$PKab{1Qid%0`#>?e}(`ZG>HQ~W8{WF zFIB;UovY@`HEfg)@m#0!Q{`m!Vg7obPnnbSC-EHn=$?PJ|Kaw3`(M>ux4fGmY;DW% zc&qx!a8JFzZ$B3wPS!iw?l~{_bIb>=Z*RUZ^jtswGkwj!SC~ss7BUxa0RJrQ(iUU76~_!e%p+_A2uIU_*uGg>iYfJ&!70{tEX4Z%&Oe4x&GWT z>#cX{EoNGmFWZ`?n2GDGR$qG>CyZ9Y>PUi|ZrmtSd>eoSU)Xwj<6r=N0b&wRaZm$OH1 znd8d0XFhI?+51Cbx%KOr|0}J!`_107mGOPKT>IPe-u&3JvyWdZukf1Xuwlj8Rg-{0 zR9uv1DL?18a<}&3gss0VFTMMn#iy(c4EK8{9sSCyEbrc|vgdxap&bz^NYREjP63;k*4iH$T3RIbSSuxsr9@HDL?HQUtX|m6!e#Z|2O*@0_`F@15T{GiN5z#>$lElE@`CHZ~rx*0wZ42{|HR4sXNGeA3UQwS>f&N+Ib(FwW-vqXQz+xI=$U~ znSHeh_*3RE+FigT%3=xo&sWnJfX-6HL8nmU5J0N?_i0ztA@fLaHk`UOxc+k6U~B6z zf^i68S^IyKSGs=2C)%Qkzdz2+{zrd9sml$p!Dhy*JtCZJ!HkP6w~3&52&#k|j@fkS z=^{8jfAN;tsfaAQ4<5lomb9mQHs0mM89BPQ8ddn+GJyJb1G-c80=opk#FFyKE1oKz z@&KhhMivH#bR^Zc@ah?TL>t1y=aQSPxMWu`9a;2qu)ew2! zjsv#`s*)zpi6+i%;w3%x0ZQmz?KT4nIR{eJXR_R-_FTbjUzWf6IuF-eb<(7&T>nn- ztirNzr;>u?!sB&=!<|lig97->fEphDjOeSStLDt@I67)M4+*?}{{ERmq$<^r&-6LGL&qG;+ zGShF<@42vMOiApM9j_GLJt-pHKwFCd)x9Bzt=1dDKA zw{X5cVDb?T%pBzpCgx1h)H~E11Pm|hUu^A+P2Kb(@&(7vrzch)V?~iKrp->UG^?0E zHH4Si%+OI7B!htXzA6EuG(PB@4X3qKCQF7`I8P}dvnplwa!YKzostQfD!lp^qgh;q zeq>a-r(;~U%)MV;Wgevp61@7H(RXM)M!~&ly(wKYs>txk`?sK~a^iMP4w%cSuh0h@ajuIHDou~IO7T0^NQ() zJo*U>E)oy&;-2Ur%gIJy4_N{_5;H1=oYGut!T|-{?~?z%sK_-5Z?sj)WR8wAokZ=$ zriv9KzF}mL#pIol)!04SE#xP%HOKWUzygF+sTt$9^ zGvYBQ%;a$FJrp591Sza(j9dagVTy4XyhV836ir-^OJCq+`Oj(?_kHqswAoyYE{Ci| zhXY3)rdg?~CG!RUi`st3nBdJ}rn|_26p@+aU69y}N{LMn0KCN^cqM1?x?_BGQU^7) zuS}A@v8t&zO{!QKW#l>_heHVx*+WCO)@L%T=6>)-&dVYj$WuWJ0)1zbs4%%~(uY}D z&>~Fuh!~$5wUI`bzcIY_?+-bt2NFOVykD$)7#Ajg{CABAEXYkjV{k25z#B6j8+`4h zVSU3&Di02|ZVE4Wld@My#(@`JY1%PNXoqs+;Eb-qhtsSq=HG2ivN)A{x!ZLrbKa#X zpf+dLK3_(eSuJ!y!Gru7dzr4^&pht&SI#h~nj6I!8o0Wqmhe>76?<&0gjTN%rzL}| zoIruH`}1?J1bv*ZwV8Z_r}fE4Kd51%%dKixB0{cBia#z~v8$Jue_@?!_YoqVco)w5 zgtYg!JeLewvy2<@UaLBtO2|Xdt=_wR{9s7=kHNh=oIcL!(hanvK7l)`Fc-AjH;7&s zo?}QD>4%~~p5vya#<9N}`DbseQGlw??!?5Wo`aYYvktbWwGI=if~ShDQU}AW`8xN) z6SYwmM#~xtc2mUzDHElzvuL+a<@sE@tQ5hvx3t|#_0RQ0VnRgo=J?}vj~UGpbXk$* z8{x_6dgHQZ3D~vp*TZ=$;o11D0z;q&x!Z&9_!|s{aoPtGl&^=-Ab{kCr%b%w=)?rw z&arzgEsneOwGEkS4R$%(5lT~Wlcp3oI$6HqH)DHT$Zne8YaAZyeg-S%qs(I2I|Z?& zi$9*aJcw`{?ZA?2QG2In&Lz~yjZQp>bQN-h&Mi!f|pB(HIl)|W13D(-{@z*r8 z^0$K|3PQg#w&p8n@|nMIN4uo7U&0(x1&BgQy~vl-eEPxWIB%|Nft0Q>y0?xVCe{m6 z%#CzmwIV}Gxa|lkck$tsw=A>-xZ%-TdHG~;Q=>+aR)yc#n|$g1=ATe&Bi_z`5OI2_ zQio3q0Y7@b^7i1LajOgSD1x$+HH}A(?4Q+U>At7rXYwz6GSvWBP8uWxuka`)c+Ko>r zvtT4gakwcZ4Ve>Q`zP;s6hyULG~}&!qzk++{Y>x$FB{EO1tt-jX7b_UIErJ#lF*8z zaV1J~H{6Pm5b-?(TK0o4$k$iP+h+dF$Hx|!WuaE9s4qj6>hzCG+U1BG{$B;3mdD0? zom(Uus9r&j(o30Pt;DD=f#5gwAIxy}BZ1&uJC%bKQQTgn+t4;5F2nHYXMKf6kBvhM zhxW)garPGX)}G5cz1bfE_Q{j8p)4`X`Uym}ho{Zf@*|9f56@v=hC<5%>WU(Ec=smFRdKeAt3g?8 zf-REmv8hc~<}QlJn%NaC-9mSN>cn*aU#Y1t9P6LxEc<7dl!pva7R}f#oF`@11i_Kz z{JH3xMa9nMLaIBm_By1VUd)LCaql**mE(GnKJvY=&pFDYbQNk}vOj#Tl334-k1-H1 z&3Fi7Z_t1-wEr1A+>bq9v*I&DdwHDdO)V*Z!*D{8d09`g@5*2-xWRa2pgHTyn9{B) zp^6yUo@C|YyxPwdgzb*BV^|&sD7!Y^HCGTiPR*OQcQE*~R7gbdcoDulzknG!hbs{^jcG>kY!bSH90XoB2thGlGj_JPU|EG1W*bY_;bfw>XGW* z*(eoS;{sTm2C0|;Lj*t61<@)IoreQRxE)xH>(8SKQN^;DGZAesU1CHq=_m zx_`cSfpwbGX02G}f|Id%y+EbpwJMKXUQc*hnISTte(TOu@$vCwpX9Ot{-=DV^5L768)wbe zIxic(yjGWdryj_8v3G;|{ctto^*!RoJ695c8bQUq6^?JGsdbaMR2;f~&eGHj&axu< zf2^QSlNhsx!I=SHxt-Pu{B1>MI*4t4pbk1=rXrVKbNtRlyi%7;yOWL-%1mS-eSk3= z?})%+O3m&~cW-lAlFZeB_#_t41B9N~x>AG&i^vf0>u}zCkNMIm{BFQS0f5YTVppd6 z48S5VXZWP^wVMRkpei_z&lZI^Lzq4Nv7rZ-+WAW z(PwY?gy0ttafT@Sdut9D@Hk;r+CBm8)h9b2AV|FXr|lH9Irc0jmP9lXS%seBjO_;?CQs}Yx+i|b~20Wu9k0Pp*msbZcc z7_HRKFP5o=f}R(c7v*Il<6!0y9ndr}&wz2;-DyXuAp^1!(He+&z* z2j^ydR4gF+Yb1gGDAgmxiVp(3akC)@imEFz>z}LM+f*w1ep!9Wt`+oc@^au`PuFdU zHw?&e75Jb#B_`Ek%m0J&>z#;`GB+g)Ux=F~fsCi}ADOyNYoH;oJnCyj<9$q50Moj~ z0d=RvbD6Vw4^#8t93{aMB`vVYjOqcN^O(O~Q5X+>pw&ODq0);2@qiet7&?+VB+3#7bq?Vy~P+*5GsYi4DPL9uMr&$)Q9WW7;oNwQkmnYr?V(BK2pkhPmK!y(j7hTqm}9J}gM3Yfgw z_E$yc@NumSJnCelG4y1(**l=mw(CN@^-O)`6B35U#w$w0*Eh(|MWvy|iayX)9Y~~o zeJEDoqJ8L#H#HJB8vgWg7+#zBVzhpX@En{MCaD_jQh5?VyA=gHit!Wh8tE0=+1&1% z86P#6Y{T6Y%i%(NEpvbDH50~t!-~AP+E!d4mqWKfw%(2%kc3CS=n$w2YlMWTAHDSB zRBRMy2CckMJBs{3jXXSdlW5JFy15g@91ZLX2L-njK(&v93lV~45Y9lY^BM6ux9s0A zopF7T;2f$~C?yZ6=qLRooE5*<(imd6JYL-h$G{F#E=Ago;bka7TmK3}31z=+-qPGU z-ORbUqZ01z?aVj_sOH66SJ9|;J1W{ShGUqhW~BbR_i#FIHL&Q$h;56eu{DkhXiA#X z6=pkO2_)}O;+Ww5;g-c@=BrvzmD1Rp%FBL39d=iF7f0{rDV6hOO@LsFtDJ-w`I@7J zP}#`nFe6^o<2;0{!dhY~G5tFl)g!w;nazcGI{hI+el5|Yc@ku~ce4BxTT$=fBA!C9 z=`7`8qxoiA-tkP$o43Ms)Og=@2>+b2v*G&KL$eS{Nu^dW&>_1Wr_!#e%%l?8gB6TE z%)Aw*!;YlXPfh_RteUA6VVr^{!>Fft!34#+DBb><4x8vT|}7`uA!A3b746BIYU=N(2Jt~ z9L?d(JpF@n$|w9LLc#15%@4+?H(if43xoqy_v7MoXuvnjim7>b#z`X}O<2%T=v2Z6 zm}dbin~=6y5&+wTJfQ$Q3meMxq>ft}6fudLe=@H8X#R~72$vlxi*WOuZPTN*EDV4a z+Wacr=$9G|4=nF$j2WAwgT@JK!$ezF`hK#~2j7vhI{ux+hTdPuZSA&Mwz*G^iaFdq znNk<^6B~N~=ES^3rSsksIjc(`#thNbVFP^FHlv6F?au00_l%>3>%xkzAETLvw5r2p%-gg@P+oc!Nvv7l*O%pb4*o>fG z%H%8E_&cgT-idjf;%fB9{Xsj%Bob@N^@TGepF1ZF()vq z=ojL?PC6RiM~ZCCWBu)|3goN-rcQH#_U$M1KOZeK)YBnOhF_?nMQ9P*$12~GU-bwUOFCr_C@ zbhWGlO72_f-Q`;31<1_a_arX=t!_IqE*<jdY?L&X zbsxB1Kh{3xE0dQF?TJI4`{v@+G<$RQk9EoG$}AcU(Hf+x7NPgdS}F5^>-vS(=B!Ij z$i_p+=@0h6$i+uD1k`&07PPz|EXlwZ1y(9AUE_(#NMZHzx%WPDjZiX&x^SHl$3lLR zYhe^f#A(IRjCo;}bJJFBau}_OjT3tG;ph(sInmwx`cYt^iJIhI4?oQ6?%=~5dSFy~ zT)uO!_F<~fG*CfiueiJLoDs`&OJK%Tig+r9b_kV;(FE8T;k7fBBy=DIN)74H5A!?omqR?+f2TS_ z)PnsmC6`s62PG&b#i478tEiI?`TA>t3AO0 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-center-180deg.png b/test/visual/golden/group-layout/origin-center-center-180deg.png new file mode 100644 index 0000000000000000000000000000000000000000..164537631bd60a61d81e4c5c1eb0053742fb95ca GIT binary patch literal 1057 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tJ9 zo-U3d6?5L+J)bR;Ds%kf`6(&V9Mj5fr~TG`d(ey3-$~r2;>E&e3ICh7EpmD*zf?)? z$RFl75p7$spf8IO7OI<0Tap>Yy!K??iK-JpYi3EzRXJ_ECvL;^o9!QLdGgcd-+ZG2 zw3oWTB;52B0W>+pibD>3$V--STb%yPGY;0Y6T$0G@+PU5XJ7hAi9~Z3&D= z1#}ijG_i^}Z)iy3AYC$fv0THmh}YpiOIJ=ksy=)9)hiFb&at|7`rt=dTPeYRQxgJj zCrr3AfBuQ^;&!9*d?W7DvzLc1-#hPJ>++c|*FE|3@@j}&p_gxyYwq{w>Ypx(A2+IA zJ@@C*Ft)?ot5$jK`}u9@pDi~|^=f-pK0Wg)gMDd5ldJCPz05z0-UX!PZ~c7w@HOuD zylf}WcdxDaS89DZc(0HDSEGx!BrYy7Y4k16s{D{)Q~usJt#0Mkr?Y^@zPmU3Otbsr z-xiX-DiK#U{YcT_KAn8tp6%b{g9?!~Hs5ND<^Jh|!{>@oX@#x&t-rbN8Nxy@SzbC1 z^w?kN9ycMKEX&F*^Sj08Jw5aB-n8sHcebE4*eoY*?{&)uhkMuN&EJowEJ@4_)rlhZDB`w!HZ6_jQ@F-h_?We0}^y z>n@+(dG6Zp$bfcRL`>c|oVDZN+ns^^47-ns5{lLPCF%Yl(|7IuZ$3H3zsUIH>%+>|jg_8+wSrKD@0FW}305`q9zD3mnRlK~R{E++zLLnrTfxb!H-f-wCkb$}7= z4z##32&oVo{4^r3B?54#5Ig*-e|f8iN|iU;@$^v^xRFF55TK;uT2KF+zhmAG6jpQq zU|$-=++7-n$ZxeWm*YUJmXGBH7~GZbsaq2F<5xVOu1N~=A67DWPr=p!LE4#d-6sa0 z`how1$>4BVq7;daK-vlIl%b^s@VZl#Z<-1|D0m{Y2X#&sCWXVTPo7zNKuk=$XDNAR zvhG$;XagiHGN8d>SzW8J64v>}i`gTikqq)N9!$owi1P&7H?fCn@aE zeUF`#Qx4B?J53Kx@iXu^Zk0-*=vsV9Xwljg86+O*>PC_`PW77Wh{9bv%hV_m zcBWl+`p#4;vd}Cr6WHpuM#YFr3ZTur2>G3g3pagF9V1P}rq^Z7*8)z>QeW9UEU z6#2mHCuInvu!NGyHEsKlYxBgf#_8Eo_Ubc&hUA4aEQ=>{t3()8?|>ZU(eq1vFud#t z60Dus)`LDiC(PGxwD@dDIaa9aUmf4LKn|BzLrpnA5(<2HkNEr)qugH3iybHrC@rjv z={O`mdktB353(KHR1hA2CsEU+2N&b0z71N@p$|)5%$_xho?|~uYJE!|*%?Oz*$RAs zyHEK(zqZ+4Q*W!uakoxW$zR`85W-j^2}zmD-MUG!x83TGs!GkGO50$c6q_OE{jcZe zY}+MHy&%FYPX$796A-9J8eL3;O#KxF>0d>Hoz_SxavpyD7})5c;bK#2s{F?#HDQlw zuwYCEMI)Xc2jLYyl}VcQL&)s-+2q^a?5iy0e`60}L@wERsV)5=CZ_E>IpA0AHOxb90 z=Omhc?j26{Z(8^oRpAvYvc#0sXo~fD!^nU{cvvM1bBkG|5FMA;_Ko9?}f!UJPXWea?kWT70E;=~JioO?w0wX7jsGKMc0f5w)g0 z=3Jo3ak`Z&(Hy-K8Lp5(?#|Q(y3mYe*?KeFntJE{?Z+{z;F{(c(tt!9mJQ9zpE_B} z)9<_hQNlRo&^#~;z}7bR4W7IFI0Py6zo6hY_pql)C&3Y$fo*GjLFc{0 zHxd#U!zP=W;2NDbwv2Xc30HA5EVaCwPB)wOMfxe>5TJp9Ppzv0qwE|H#T#L332nlPS)8Q6b!pQpH?Cbm) z!wh#f!kX;$@p=pYihH8EGKKA9bUKj6LVwf+x(GBvhFd_qstx(ww9fgPw7@RsQ--a{ zh>}&#Sh9`0@1h1j=I>8FCyLP%xR=6E+vzmw#cwzD<>Hbrtvk30^~x5M_pi2hg|orw zzQ?-LDH@Q%zc>1p{^#mC@l$E+7Gmm zod>7+tlP=d{6@3RK8ZarU~J0F%i2sFgy}&`o7aBoE^X#>GH(TG-MKwAW)|7NXxG2- zmIY%hg6*fQj6OQRz96Me!u5QZ(Pk^5ai~wGJVKfkc?m4^gYQQK z8DkcGaL1gb`^4Pyg!EZg8H}5hRMtG(?e#(&dQ6G^C7kLP)HYzm6YxjGd_fWb@YP)A z?;JvR-at5p=plEaKtGldA@p5XyPm^+wj!w?4{0tqKTmuG*i58oDD$DJexAP@7Fx`s za9tz2mtS=qj~*^n5t|XuzqnVcrE;ua)>ErZm6}$nR6>M3QNjO$>NuRcEjlv!`tsmL z1Xd`Dm3kfcK@ONQH!G1Ca<}1cFGcCg<{wOJPt4t0J4w|yjNfwaK;rTAgK`Omb@lDmGGD~@Iq@A<#_Rzu#=;9L7xPTvGB zN`Fogpx<7%!uF2-qka)6-Q~B@X=tOgF6p=K4c#7W4-E=<|HF)GSlQue(c%3|Ck=Im z`O8ad`-ZgYWq}vOe{uQ-#cE(#&)-zE&;HJ9*9*@!_|GHo!%F1t11n6?&5AU--6x|X zVv0DNvwJmLO>NB2pEUlHzX5T9vomE%8#ixjTRca~6u^b>%k1LVR94d!r8Y1in?_coovFh0Rd@evqPXQP0dSbb5Vp4W+@W& z$Z2jh#jALlottLW$n~}Xnnk%S)~sYt-Nkh&N4A&E&wVY_$n=bjP{z5WFdIHGnrWKQ3&-b9}|)IRdg%-{1|F{vlQ8tiDw2>jO<_j<2%A z>$$%z0qWZQD!blAxX2v80!!d%0iLO{%LtDGs4T}r4O~dyV%2NXhj?z_vZI(}VTU$V zs0X^vFSNLnDDg71&wLfE1z6Mxq(ud;pzsRD&ucwYVlB6~e3v3v#sbsuVtC6M!7K(& zI)vY~BVh@vU)j-4fJL7uXd?EMX+(oxxQb?0)Yi~pfN7p;U}72hr^4a?;3ItiL0a4w XNOUPqk^fo=K9HeSc98nZHy->SbS>)| literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-center-240deg.png b/test/visual/golden/group-layout/origin-center-center-240deg.png new file mode 100644 index 0000000000000000000000000000000000000000..02b9c3bfd11ad4d0e746655f197beb8069baf3b1 GIT binary patch literal 3146 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 UeKk&>5cw-ZAvWgKS8hD`KSrF%B>(^b literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-center-270deg.png b/test/visual/golden/group-layout/origin-center-center-270deg.png new file mode 100644 index 0000000000000000000000000000000000000000..1c13d35bfee0110d182d558dfd7fb590d5dc4723 GIT binary patch literal 1072 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tJ* zo-U3d6?5L+b<7tjl{xCw`(ZzYuiuInhGX*M{ z<6I2yT$z%w=Vr^~C{J(Ah}JE;d0#K&6%@T>aC_bVhn16j&36CKscS!}zS(%UF(=Sk z>VmVOywwb4;s1}-)K8cnK6ke4ljCpMZkIH_mHx)SV67VAV93I)(U!n?R6u8eL=&rs z^M-~b4zU29gG^n9MsFB3y#F8jv%$S$8B<-SKkqk$q#{0@Fv-=X1_si5wf3*wvZ-G1^(cQ^A&FU3Cb3cxZx_fJl)!VaY&e@!}^CoJU z`t{(QM>S13#kSs!k~ytDU;gCP*Kc*!ZMk&+-ojO@p1gh^f9m|{wK4lPObYi~$6p@M zr5Lu zKI>Vtf!4-k+LoSu)_afr{Qo!V?SvbL7cJ{-o^5&Uo$Y6ygizJF&U<}i?%dgZFhk|wqG^xYt1XQ` z8>sh}&ENIx$;G^LXKc=VJiOO-PLG<9PL^c0?J1xq_2$K&UFr9|({}ADFTc`VJ1go; zi#KPV69}4}9C5|WcIUj);_sf6q$_{6?@fPs@7m1+=N87L#n(rZrvR3qRjsE zrst{=yycqz`>x*KJNe0J+gYryKJ_kmXm{t}EdH`uE(xB4Sv#(mZFu%Ic0LmuIH83d z{=1{u)c(yc5d(>)s|E6J6V4vrZO6*fmSB2kx#v2&$A7hN^J_FFn8w(jyzP0<|5NNF ucF%uz>i)%TtNZp~T_bh#3edCzAO5nczMu6tvFA=3$Z$_rKbLh*2~7Z~8?9mh literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-center-300deg.png b/test/visual/golden/group-layout/origin-center-center-300deg.png new file mode 100644 index 0000000000000000000000000000000000000000..8014d3d2158af1e680428068e5e9c8d3f5ad24ed GIT binary patch literal 3431 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 USKo=$PXBQU(|n>qRC^KrKeB=Op#T5? literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-center-330deg.png b/test/visual/golden/group-layout/origin-center-center-330deg.png new file mode 100644 index 0000000000000000000000000000000000000000..6d89a899a88b42e4d7b99e40695fdc6bc769b7ac GIT binary patch literal 3370 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-center-60deg.png b/test/visual/golden/group-layout/origin-center-center-60deg.png new file mode 100644 index 0000000000000000000000000000000000000000..c565b5754ec38a2ab7d9da2790b18e605fa073ec GIT binary patch literal 3199 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 pewxi>5Rc-2He>(4<2ryTBR2tdO`=1%*f89o32 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-top-150deg.png b/test/visual/golden/group-layout/origin-center-top-150deg.png new file mode 100644 index 0000000000000000000000000000000000000000..438d55946919195b6c3f2671d02b25a71e27c22f GIT binary patch literal 3127 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-top-180deg.png b/test/visual/golden/group-layout/origin-center-top-180deg.png new file mode 100644 index 0000000000000000000000000000000000000000..328be916317c1f7e9a716f1f8b4ebaf729810027 GIT binary patch literal 969 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-top-240deg.png b/test/visual/golden/group-layout/origin-center-top-240deg.png new file mode 100644 index 0000000000000000000000000000000000000000..4f1caac5fa2c63633b967201484c0767c01dcc9c GIT binary patch literal 2948 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-top-270deg.png b/test/visual/golden/group-layout/origin-center-top-270deg.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8a890db37a386980ea3ca44ac8ffcbbca8a5b0 GIT binary patch literal 999 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 afIp-@+h(MWL~*|r0Ml#c#wCXLUi=RSEE=2u literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-top-30deg.png b/test/visual/golden/group-layout/origin-center-top-30deg.png new file mode 100644 index 0000000000000000000000000000000000000000..ca7d2a34a52cc1a6f767698cdc2c43c9af9930f4 GIT binary patch literal 2963 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 H?Gv9ifx5lZg+%CT8;pShCABG$b^$Q5#Y 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 IXxY5_55~OfA^-pY literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-center-top-60deg.png b/test/visual/golden/group-layout/origin-center-top-60deg.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee250eb49b7ffe1653992bd36940590b88812d GIT binary patch literal 2973 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 Hl+XkKI%brM literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-bottom-0deg.png b/test/visual/golden/group-layout/origin-left-bottom-0deg.png new file mode 100644 index 0000000000000000000000000000000000000000..6b6bbf6cce05fc7be8ed28adff7f6c9149c29aca GIT binary patch literal 986 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tJS zPZ!6KiaBrZ9L$PIl{o(Jzowz4h~O@dE8DmYkG3{Rx9@s$Y{v&KrX)wLdu^xhHSG!r z+`}R&@^X>1uV75a4uL@J%=RuNky~0nW6ne_$-1<}SpBfI9siuOGp9ef`{ek{!|p;r zdr1Hmd-CpaZ`cqu{fX10>yvG6-~VHEa<=C^?@MhzmQLT!_G9Ju>vQFQMq4p?e~xQ7 zTB383-P7!U;s2liZh3qvnlxAWUiYoOv(=1ZmskHRUsHDbP5J`^mTt$GITv}}s73HR zn#p{|#`cGpj?}><0rtv;c1OI+#bzfMcI2m-Fz@CRYp!_BV4TmtkG0!vgT#^DGi9=G zoc{fnN2U#^WUk8kFW0B4Z2$GztNy*yoP&=(%sH1T@b=TS|F7omn*7fFu&`J_TLNP$ z2QI39BG2y^=lY-RW!hbFi0PDo&H|o;bfwZ(tW|m2xn%C|N4JH4CRVGK|9kUnuLyTa zCNRV~qNbO1Exd24)m(w!IS4;wkf zF5mJiGCjGqHf`NkpLXa8 Tl)Pyw2{O#n)z4*}Q$iB}^D%~a literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-bottom-120deg.png b/test/visual/golden/group-layout/origin-left-bottom-120deg.png new file mode 100644 index 0000000000000000000000000000000000000000..996f10d3dcb8a12d438689dbc45244154a98d476 GIT binary patch literal 3273 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 F{ukvGN>2a) literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-bottom-150deg.png b/test/visual/golden/group-layout/origin-left-bottom-150deg.png new file mode 100644 index 0000000000000000000000000000000000000000..04d8c7dcb1363fe4b0e3b91bd3979247242fb214 GIT binary patch literal 3185 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 YVe~TWv50tP*a_0<>FVdQ&MBb@02*G0H~;_u literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-bottom-210deg.png b/test/visual/golden/group-layout/origin-left-bottom-210deg.png new file mode 100644 index 0000000000000000000000000000000000000000..f755ca7a1c954a0111de6ef1e4e5c35f7fc005de GIT binary patch literal 3019 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 C*0(4C literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-bottom-270deg.png b/test/visual/golden/group-layout/origin-left-bottom-270deg.png new file mode 100644 index 0000000000000000000000000000000000000000..21b45cccec4ff67fab80e197e5a35dc6b73b1dff GIT binary patch literal 995 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tIC zo-U3d6?5L+_3e&Ml{o&ezRiM9WS7Px?nTmtx=l;i*(wLk58UF@nHhm zO9J?RZ^3)UfBLtc21Y-7&FeQm=Gp1BP5X7HawoH7oRwZ8T zr{PI{&wU=B-2Nyf$o=DVb!YQDr*2vNZ|IthL_HTlBcV`0?$-DsMw36;6^q`M~e| z;*Dx7-K|@vy?K-S^w5h6x9j~+A6zr=yysmsA!W)IZqKqwj<1XTUJ0-1i#h$|$uFIF z)yjpz^nrA+FdRCD+Klr_xHH&}i8CzEX# z@l)jV_tWd8f7X=P+@9{2@_n~`^4E69N$QjK%zE;4N$yue<=4(YwS|-3N}iuTU+(Ig z`u`5=;_RpGJ$yFuw4DE^m`TTX&Fm^wjgSS};Qgs=lD21^->1u8o|_x*e6#Qo=e&<^ z6Z!IZ``@kUlTxXysABlCbgtK}^vS{Rjr;wV&zCt=yZLZZ;A0hY=hj(8#7Ed&6)bQ6~cs@QH|KBR=tb7gtaNUC${$&@Lzy2*I3%L~4zr88JXUz1VXh4y@ zl$qt$gM8&A_Wldwksl3Jow>^%I6J6@``o(fs*HA+H4dE3_M4s3OS5xvQihkR<>6-P zFI}n1R~BH9=Je9*R*;hyPzw8g7LshtK@`)-jZ-3zI`8)9?~XJlB@*#~>WBS6g)B#H5br<4>&(#o+L7&LyTc-}4*S;J;E2 z&Vy17%zfd0gLj-x^lZ-Pzow3p;Ywe(ni)T78#9Hd%D#OsS6p`LLBvZJ``lwK`P)cd zJvUh{y}}~4+;p!DP5Y-2fy;SEeKJ!EsK5Fukhd;SUAU>D#Zs*n$~QZEgq09bd{gxg z9~z_++iT`wyiGNi^d;iiTnxCz6K%52UL9{Nf83+?G4cX<8Gf3Fh;z&n@lnOMR9<%n znOVnt^KT$wXc#CIx*tnz*W(Jf_7RKxkl%RU^|BIjHS%n}^Oiy)C@GwBWaH|xH<*kh z>YLATQ6AV#qMi0t4^B=#9K7`g1cRS3j3^qhPDz67;R+v(V-VU2=q__G<87vRW-$l6 zHlA0lRy11+&6lQVv@WT8bffOmevHd+0g5JNPH(d$#l|&wqLcNJQJ}$q@0`?qNcg&| zc)MR)0QCBYGiNCuwamG!LWe9XJP6_VRu1&TMpYp(CV}QxJj@vy@%Y7s7RE|pF*9tb z35mh(4$9j1W>SJY@^rhj|3>H*Urt?olHz8kgI{ZD;>&JRk4q8{t<>oV;qNg0!0=bt zeOe3o{IYt&0=^_$CW7n7vZt_JU}z6ss(_F{Gt;aWHsY^LD;yA>&?PQM5E?t;u>X-A zjMMI5oZ*68Zz;N;@oM9iOpEsy033EF2DJ?PK?{rW^cg?;tRD*6wG^r;!WRnKr?J<) zbV+=Y*>*NgOb(lB6}cJNtv73bnqD{ePWX<%drlx%3xmrA#j3TtL_9`0mL00+t|Eq|7I>GthXzwFE| z!&!2fl~@pruh}?t`6|{tiTL<~I%mRu>FvnF50Q7N_PUxI%+UvH*_aAm&G25+`c6ui zSoDBNq~}s-`0shAU>L=jVio#oM~jn=f$q)dX+T2LaW1&fWu(JIV)0p@ab5-}*Q2)c zc=5g9%dqd5@8mPKo1>fL=Y4JR9G@A!gCiW+r!+wJdr;uvwXv0l*U@ub1%LM7!HAVn)*=cM3V%nfc5RQ)?d00o zx;?D^{=CV3>!ghw<~iZVx=(fJ^ZN!0@4b8$Fnd>nj>5j9B^mC*d1gOyqe!x`XbXe4 zqqD2>9A?B`tdFfOC{5vB5%jW@3n^m?JEKt=P;q-@Gc@AfqMCs9n zIOkf#Hq_7^E_iereJv!v2TnU=_AQ8$aCz6&|7PmCnCahINs<>ebL5|L*Bs^Z#ww6M z-aZ_1SMlw&mVIigeR}j~p~n&~8%G*EIh#tWjk~ppS`7?cX+E=R!{C|eN;Lz3nWH_I zR#j-m+Z$C@YSL`HK3~4BsCbTfyp9SH-V9jZchPibayBcpfHk9#x!0N8KSyk5{0s^+ zJSUm~D_i<9B#3*3owxw@lcTS9+no17l+jN>bB;GCWCn3S+-rb}C{cISeg0|W*G^$7 zvb4B3X#!mK{^V)%%%72qbW8b;%1#5=T2{-~ey;oA`wtR9J5Czjl!cb-k zXYyGw9blD3lK?g-3o&c~#br*YtOAZ~r-{{6k9~_!^_U^Xn#A^*n4kFP84vh;ewIng zIUyW{{Wwl6Z)==BBzVm*1hAnQ&sb*S1as~QTA~&ry4*KXmqhqYY;6fw#SI4O$>zqK z$Fh<}=cq)(!4<-S#`F2Cy-y?4RPVO?1SgJpOoJRlbjOA5|G0LL1vOY+@Nfa@TPe*J z(6in*OXgPj7yyzLWY5wn{$m>D9YM|&Wm5gK0oV3NXnM-7H^~*WU0>zHbI~oKd<5P~ zliqbaln5TJtx?#}#L13RFy*&Hd22#@bp~|yecS{6*n;P)uBNyCzOV$#u5BI9n*2ex zey9ctnSQJ?wlBB!MfV~WAWiiuJ&hAB(V$C)&?Rr1vXw>ma8psc;b)N;6am{^0jng1 ztzF{iRcP19yEzV~{4&r^K_;mge0X^IJF_~PDIMU(xWR&c9V2NH3)yTCv9A%fh9X~% z%G#FXH_DFzW=JAuJKQgB@JhVqxx@XZ^Kf@>tajedA(x)hh$}qQId!!A*4Xyx@gF$U zyjn-B+*ahOxPJB^M-B93u`YtFQ=CxP<<9cm5^4c6LO87Dao0RHT%9CO@QE{hrnA5d zW7YHW)^?)YG9@``>>RURTI2vVR8}D$`PC*Wi?8KrgqV|HcC7)9NTn9)_6l67 zkX)OTnPrE^Zo_Xm#0+bj^-Nudn>$laqCZU$2Jtzr~vy802G^ zk!;{vQK5^9Iu8Scm z&^hNdnWh|~U-H)#U%HD$fb;%B_9r7N^{J%mf+fITh22vkbY-iTKGfq2VjQvZd9x=v z(SOhng74BAHk4V#fnW%K{OO-T45pW_z#+M2ID<6o4mrizJqd6;N+>Q5WcBt+?F(-| z?Dp2IGO<;S>X{Xoa!6}Nty1$&afluF%I-!gU+E_nb*OFH2`ub#=Jfc$=VRi1xr4!56$-DMKsN6ED zB;N`7D!_3z2o*9n{+mlVm_?7hG1@@-f=WuJ(;mOuT)w}f3D3;OZi5J=qkcBlQC53{ zmX*?rvenx9=Dzf95)!{a&Q1AnbfSPd#&S@twoWwzaPj~x51l=s1Sqy~W@iOJ>qoje_!zp1wq86xY#>M-2_j`EWVdZ5O5N&hbq^-<-Jzh$cZ zQL4DP%eCLUc6H`xvw;%+R?3mVc1CRr1MS0WlR%#Go>tEbl r%S3J}GW8ue_um`n{}XEVmve@SL!ie!&1hBn7y_V&tzo^s$AkX@z0e*o literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-bottom-30deg.png b/test/visual/golden/group-layout/origin-left-bottom-30deg.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9d839bb93efc7e502a636c95851677c6d08a0c GIT binary patch literal 3004 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-center-150deg.png b/test/visual/golden/group-layout/origin-left-center-150deg.png new file mode 100644 index 0000000000000000000000000000000000000000..b61b9a3ea4ce3444da204935aa53ea891034b4f9 GIT binary patch literal 3248 zcmc&%i8mBnA2yVIP@|M>lI)B~$h^oJ$r#2mc7w^9tr#U+jg&nMm96;DAj#S&&1A`z zU9ua4#yW(t58u51!*|Yi?mhS3bAI;VPOH9niyKKumBX9 z;|@-CW@|MwX~XQ;-OX+pvYh-|-ZqtHu(0r=O%3&|!*kcBqH}FR^Vq!6^rQ%+$a@M$#5kIchrUQ7WP2_`}S4N#z(l_U@ zHhTIc^vjo|;lEe-F_`ukFCb1{rh;4Gjic_JtP7e{vTXt+NqBi((NKEn=4jPHRsUod z@0bAF5Kk>-^F3;^GtS;@SzFm}v51LN?%CqYJyO9^n4w>?u-yDXhMoel1%uu=o`mhv zX5M4f2TV`iGUu3hYwP*0tOErkK6CyrL|NJf*4yq?eG~Y8Ym_2Ij+Mx z_KJi}KXF;&Rtd5kR~g>L?YZhNa1mXP0vf~G1kBB$W*@C>@`TJUY{8k~h8rkcTAB~x zStWBTn_nicOo$nDu(Y$bgb^D7;ar6&weI-9;AVLMlj{3eS$5bRXm>0p!1f~)`?^6K zdQu+35xqc^JxBep7)wTyT2owXaawZAITD(AB>iE zMsm^iFY}VFkWZ2Ck_nlY%TlXQ#h28SqlCtsRiS zk8xfA+yRW}BY6gTDW%q~mQn4unPm79()}?|!|am0VgZ+Fq`^d&UPZ)*XbW^ZfKF0r zGcEqs^~~mLZO@MfjuZeV}~K2yWAsC=tXF zBxDFfYRN7{!kV^!a%?uzyB9&Xs<;14fKm{m5~M9NyKQfN4=l1YhTa7Y9)y`>;aB5D_?v`DvLXIzz=!0n~Tca$FL)b-| zFAj{+c@Qb3I;3Yd;WO;VN(If|SbuxVC*N9RG@T~RzWk3M&lm4{vQcXhhvE~0eM~Z3d-{>rK2S_o(@IlOt(y{Gi?&5 zqPxpnKB3OFug#0Mre$-#u7GS3FTlu~H;f`42+VeKcsCI%P&&{_Qld_Z(;I>*Wq6y}_x-9DbP_+*PD)WaS z+b~jB6=o>7hN-rWGwZOcu+8c*MP-d%RL6$~cuN6hg&JetAHtrSZ}kuEOe*T!j6WIw zII)`%)|Jc;A*ag;Z4eu#^`m#hl}=bSxqjU1nX+|QehISGl4iqD9gj$uO6u3(IZzTJ zyr=s-NTV0Ml&=1b&uPTqo<`LfmkHibaLfmzg!iiRSX@d(OvIKFq*QLD__quCpdwK9 z@22v`V!FCkhqB%JGnX!zZMPv+6LAyIq+6$YHZwF{Cq9L0#{m(>wc|s z==gYrs=HA4yJ5A47D`?p-K`UKjDf~Xyj9BaqeN0oYvg4`Y#X&YftSGDrF)$V7Wco~ zgKjj2c~|3iJcdL*-v5;vO`;Mb#QK`{nxj@GVv9P~cADtHB7jBK5mE_twk)2!HCi#u zCSrTw(0RRLZc{D_J!GtNZE4aIL?<6&dOS9-yB0qjOLvJ3xJWSd;|$^?9MV=<_~O?2 zv7OXyO4eYRlgkKPxR-<0*RW?dvuB}m9cA?-cqeRTJ?Di8wQ8P#B=2)D1amhEQ6<$Wh9uU&dCEdQ zn<2IG0mnBAnt?eQ!J{ODi@M9ht<9^et8PD(G*r-kc(XqGD0ifjc-^?0!nNwRZDGh_ zv@}6?nIWtebZHGU*n6=}d}iBvd)gyq;h?+H^FT%i zhfK?uMzm9G6p(dcC)rA0pN5e`$gVMUr-3C2e;_EIM}pqrr5craTFK$d+l5%?YkmK*dR$|l3+c~?z}52kU}kcXMm)s{3s{>% zUq8R>$LnUZM?ChG>KhGh$gH28VyrNfQI2`lC4;??IL5)M@2p+ap6ec#(+m|66 zyE51dfS<%A+ShLKM;z~qF%fg{r>%@OcT}Ym-)QdS2-p_qv0cj70+JzafBmPgN*XEFc#J`kc~#G?_*V6cRFenV;5^#KZIRl9JUYa z4UL?;t1V~G8035FQkLLe&2bpfv;lpeQuItE^_+C3wI~dUmi2UqIz0fGbd;`;C`%}M zLDyAyEHC$v>2w6&jKd_brH|-J_1&KQ7gWDSrT_o{ literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-center-180deg.png b/test/visual/golden/group-layout/origin-left-center-180deg.png new file mode 100644 index 0000000000000000000000000000000000000000..d09180fd14138439e30a1d1febde8eed8c197ab3 GIT binary patch literal 1035 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tH> zo-U3d6?5L+J)aemDs%kddrnU&4wueb5m(AIA9-b*IOZy-8Rr}wC@!{#d%bh_4uN9k zAcLhBQeUv#(TMOd-{v`6BDrv(uac#n(bP$o3?~14Uj50Yz$`tk?Y>ftMe(z_b69}( zQWZ2jTjgeZfHSCk%Zsq=3&lLHrHS|Mi`AN&y<%jrQjKshWZ~9mOJF=IptC@tiB-gT zLqigWSOCvKrY=R&C42g-7-l7>uRrzcT8f!`ulh>yNjYkf{;TE+_PaTAh}o`wol=^s z<-K<1mUlks$<;QVcK(|tE}448+cRwPs>SUm4}AtIijJLqYWn@XbB@m59C>?|Pwj-I z{6!zOy#79Ej&G6fN&UsMC#ebORDG%_*SWtvZBs?D+4uU{Hh+qyKIv7NKIxA4t7^}$ z6)&7GN#yOiJehsJf6CKyCD*pi>%4k7&b!F&G06g*>jwKn<3kFU6hP|1&(UKK1*G)bEqm zs8kxvS(%{))Dk@T_fCud>3Vzj&)rP7KSUxM9dtG$k1 z>v;ZRdFk9cvG!A?wT(0X+RW{>S1YRh+4}lt{^N{1m7Up-HTDXvd6=2AVcw0Kt3MS~ zD@orLj{NavZL18+>xJ{5UC=k{yJWsx?bV#wx6kg}c~|A?+rabApLet);_dr}wk1zy zzx+`Dkc&{f&V9!l9y{ax|7x|Jlb&QvD!=u-&f}Bor2I<{|6goO7SP#cH0{Z26?r+U z|9QW6%y_a`<@aIPZs9}jPP;x8&g;E;dEJ)l2NXEOVt;OFHVtRDV^yD;aB=GP-&@%F zoHxAiQs-yf7O8xf!r{8v--pI~P)m#8F%%ZQJF+XFXN$+VjMG)W9)z4*}Q$iB}w~&qg literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-center-210deg.png b/test/visual/golden/group-layout/origin-left-center-210deg.png new file mode 100644 index 0000000000000000000000000000000000000000..4214c5cea37b31485f84b8c17ae2592de19eb7e8 GIT binary patch literal 3069 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-center-270deg.png b/test/visual/golden/group-layout/origin-left-center-270deg.png new file mode 100644 index 0000000000000000000000000000000000000000..ee9e2578d23236801a36e1c7607d2e5eeede675b GIT binary patch literal 1015 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tIe zo-U3d6?5L+J(v{}Ds%kfecqE>1bBqHL`#<+UAlu~SHZ>Jyc#A)&5WzzFSS=_FPtGR zurzC_^;FKT(+;sKIx~-LnUaVJ(bTdq%%%VY&U&8@AmN-&(%xTM%SDDOkF9FLyru@6s>V#W&aH?pWiecmLd}&E}s^o$9su z{3LHy+9~0sHbC3%r&ko$&Urs+&y|N#)6M&zH~0Iee0@}8R$i6qF1>1*=e|GRCjK#b z@$}7VYs;@!^4eE7R7V)U-wSln{=+}ZzdtKlxPQvk?$bAae4QVmdU)>j^UZN~zmhD) ze|g`$yZO$GV_dTe<<%l(KmYrAu`nPyTzu2EeKXF^y~lh!=iL_&d+lm&*>x;Urk`)A ztXHqJK56cmr}i`X%lBwWyKfhsPW$oTSIxHdXYX&`yepqC*XT#?zxT60G6Y}RH(|?s zzRf1zexz84@tx!AUdQISF6EEgTHj5!Qrzrn5hYuvrs$qLHp5VQv0=2kk#Yljw!iAz zolE{2X1>4k)$qf)7h8)D8(!#j|2d;!o9CyJNz*5z`MT-G@yGywpA@R>RQ literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-center-300deg.png b/test/visual/golden/group-layout/origin-left-center-300deg.png new file mode 100644 index 0000000000000000000000000000000000000000..618a2df8d7ac44bdce6265fa2ea7e5f6759971dd GIT binary patch literal 3320 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-center-330deg.png b/test/visual/golden/group-layout/origin-left-center-330deg.png new file mode 100644 index 0000000000000000000000000000000000000000..d26c3b49249289574aea8451f9a8ec8ba9e24223 GIT binary patch literal 3249 zcmb_fi9Zz1`(M_%tYfjREy@)sQXv~F_pVKBMC{Vx2p>mcrC3MhNK(#Z*&G{kEy_l2 zRx39L1Qz0 zB-*b@%Sw{s3K=)fo)mGoapQbDObJjv0sVAu^rc+D%?HaD(d)0q)W6-eK-=C-xsuxc zY~$_A7hl+4c&*z@Zr#4@7$;%Mci~?z)>dk4R?&)H9Xx!6vBKFL%+K4Irtj_6EPkMK za_LhdX{yNoT`ikTQp}3h8qha^A!_F8e0?0gZXn??85wsMKJ)zJo0RzDkFu%TAB`Am z+5mZ=ulSHD%8ZC3@H1EZKFgFhcWBJ zenOHl!EO&4Q?_$tyN0G<7beM;J06oz>lprW#nm+XX)|I#Q|!+yb)jr%(0K3-B5rGJ zuD_%>0$ExMH8|sL13NnV>)`+;^YeQxbWW{i&W;n>9r8x|(?pk_kmM=Sr7iSzUAQ?P zHjfeED2jK{I=-4-9zWc8I____n(=K*Lp7pFgfDWiEUqD*Tr0^%H2+ieI!*R?%oXan zP(i#43P%h$FKEU`%m~RiS5U>?&p2HQUlmYZ# zwp&ohuH+9x{69_(50=9?o#Meem2|H@&g7cBiST=1qLgq^TtnrBPr*VIz+I4GQF;3G zPLDZGY&8EW%}4iDtseb*g2Sv@Wtvw4xr*%{k{x~dvEBqxr|vI1XsG094s$`gw4#{F zBlx#`AtE|}0=*0P8z|=0W*HtfzBAvLdNWz?>a@JYX0{q$bNjl~L8QKpe&s;;Hn5Gs z_v6?l?o;SFty>0xdS2VtmD@2H8hNy%o*VzH6y&*XEoC@##;?x?Mdva9 z{)n|wW`asQ|GloMlY8AJI&r+y84pm2JrGzCJj^>TYe;_<3rt#CT+Lh`@yB`(v_2(; z?;^jqC}@s&RT~Y8*>b{8V~rJ{N_@0g&CWTN$_l07zdw!Uya!F*_DteaFFt)V2b(@a%rA}v2} z-b9^98{l-q2z(BEURd4bFNK1PH)tgDJW&bw%B!I&ZOysfjAawAf_eXTl)JyWGo>D@muK3XA`-!@O$&tIX(_(+L$ZuBZv z9hMai{ya;*UdX-0CJAc^rXAdB1cZ&L?iQq|cg2zIL@xW!9DR6f8HUU~8zn%>4e>jY zU?FVzdy{LBru&Y~JVG$$3XfCz-tdE5cQFKQ7p=H_y4M)&4$L|KK7p%k+Uhy7;ZDf5 zx0LizJdobqz&(#5K`KYL$&5iPZ;z5!iSl;!QenK^{TUENmdFfpAMU(?9My2)MKKoHFbu*`taA)PzdQm*{ z^}PijlMTJUB+#cDo8!*@;ppA75RvMRG9^8Jzag2-_|@4}yOc7vyV8H)8`NVJ60Xt= zOLlVLCaEf;hf~G{CYXvX*AF#1eIAN!jTZ$oPC9iMx%4%HOL+;7jc1w@_-%1vy1I|W z#?61o={HR#fZf>t>8L+d9NersIm04b$4K=Wdxp7b72M+y$r?pE?47p)E4F~PAr0Mx zO7uBQs!uz{IRG%j^9@G?@mPWVzt0vJ-yDugWr2?2 zxL^Fx#Fu$txS^+o?Qe{lR!chC(&>fk9sh60d%5{_rLQs`=1Cx|R$6}6v393EW%z_o~-M z>JAM3r!??nXqC_vskvk5$_AZfa5e{(q76jP=%^LBlx?s>EyDKL`M6X=hPob}jDz09E85UH||9 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-center-60deg.png b/test/visual/golden/group-layout/origin-left-center-60deg.png new file mode 100644 index 0000000000000000000000000000000000000000..127ff4fa0242297c73827ca77981d45f1c0c7dac GIT binary patch literal 3048 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-top-0deg.png b/test/visual/golden/group-layout/origin-left-top-0deg.png new file mode 100644 index 0000000000000000000000000000000000000000..7b6b253d09c44b921ae1745fd107ac51ed41af67 GIT binary patch literal 926 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tI} zPZ!6KiaBrZY|Il0muP#KzewW;7mt~WLTgCo#wnM4dmivjQu64SB;Bz>W3shEr$~TM zJk!Jlg%8hdDOt9mmtnVi(=qjgtOhYlMMT(hvNr z-xbM!z$SC~Bpvn0H~BIumD5Vrr<)6ZcG+OTxYoPK@MP4asVd8Vi+`J(qgpv3#rox~ zoM+4xi)*KDnLl~k^eu;%Z2f2Db1Uysozz;!87sF<*fP6z%`NtId+W{~TC;rVHvcqR zhNrr!JEuH(Gs86fx2bpV%#NL^5k6Uli)~jI{$3cnKdVFSjJiW8N)be-a$*_HA57*38 zf4}GDYfXO7+NPtNFQO*By;!;Wj(^dw<9GH|DgL&cEN(gV`+uY38_WB=H&{5{ecdx} zQ<>PLIrd3kA3tPII(Or6lED5y?WX(r>{vg$ZIC!}SEatM@^60~uS|P_VaH(=`!Cni zCQbjl_2&KE*VZ>aF0h*JxTSY(f0qAU&+jikw6IQ5jBt=_!a+UUZ+bxD?yFO4+#l%9 o+t6Ud!mZ&vz!Zt;cSiPqhC>3S<~J_rD}%Ipy85}Sb4q9e08W%yfB*mh literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-top-120deg.png b/test/visual/golden/group-layout/origin-left-top-120deg.png new file mode 100644 index 0000000000000000000000000000000000000000..a90cb56f4cfacc27f9617e7faf60f5783b6ac045 GIT binary patch literal 3247 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-top-150deg.png b/test/visual/golden/group-layout/origin-left-top-150deg.png new file mode 100644 index 0000000000000000000000000000000000000000..0779934636b09eeaeac4375edfbd5a641c1bf309 GIT binary patch literal 3129 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 d(!V=$Npi_=iJ^tTd!*~*{{d?e{#O71 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-top-180deg.png b/test/visual/golden/group-layout/origin-left-top-180deg.png new file mode 100644 index 0000000000000000000000000000000000000000..b9d6b1502e1286a300a85387d86eaf537cf0972b GIT binary patch literal 931 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tH` zPZ!6KiaBp@pU;X(m1%fb-gP0)F}suN=&mAFla$AcIJVt$+PX;Z*6V_s*%y@bTJAI^ z-7V2v^5E1|QNhdh-`KXymJy%q)hlJJHuHn(dFFJ(_epA#zUqCu_5CXURr;%5 z9=I>~jHSDE&MLe0_wH}}_v~BY(q9X1MZJrdBcR6_d7}NVZP@wU`}VT)H79JGAYFZ< z`16J350(h&h<*B{XJ38mW!)>M{aeF)vrS`Hy!^5$?eULd{_fT@{}OYvuKm?3TdtkE z<<{YIp|vr8qjIm5EZ-Gx{QdDw@q2C)>0(^zs+^=2t(>H)l;&$F04$E-d@slZ<*h zi(BSb`{iU(_p@{}o6KDo_h$XUs+i5o-OYtbNQjgxE!gpoLE>@66GIDzQy|kkUHx3v IIVCg!04AzxR{#J2 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-top-210deg.png b/test/visual/golden/group-layout/origin-left-top-210deg.png new file mode 100644 index 0000000000000000000000000000000000000000..430790394d29992291d0fe4de7e43d8736c0545d GIT binary patch literal 2984 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-top-240deg.png b/test/visual/golden/group-layout/origin-left-top-240deg.png new file mode 100644 index 0000000000000000000000000000000000000000..224acd1d7f1d703e6baf2e98d9fe6b8e69fafaa0 GIT binary patch literal 2974 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-top-270deg.png b/test/visual/golden/group-layout/origin-left-top-270deg.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec7584b08b665974f0a18dabf8d09d78c9441d6 GIT binary patch literal 941 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tIN zPZ!6KiaBrZp3e$NmpT6MJ*U&2rWIRtTaIxH@DyHb70IgN7V8T5|HUk3#|hIZdd~U_ zFL526JB?#6gRbf|q06avujtk6wrEzlxMcDf`})J559FNNWBf<#Wc&9yb7ral?IZyd z)ZAUeo?y3?Jvw*J`|Gihvd?e(Hr-#U88PE41H)k{TclWKz{WlURGY#w*;ms4Cq)l@7j8pq* zee$qM{BeFc^~duA3z~WkeEX$!@~`IELw`0H zrz`D~Ogj6v)BoTeL7ihObk%Y#GqeAv>F!UrT)(N}#jEb%IXyogOqpPq5j$zBO8De8 zYL><3<)0kOHqTlcbJjodmO0iLO=h7>u^%oo8 zf9f>vP4&g~o_2Hptr2-PWrE<=%bwRRAAfcDOTEII`JU75KLzePKmDiS>!0e&zwiBY zd*!*4HUc_srFtiqez9I%{>%9JXN&2ZCKu=TTVElk?_Yb<~Y5+cf2^ z&eQ2C=9lh&d(b6jkeaKT`F+y0f6qTU?-%ns$JZVBcj^<@zIz5+RdzRTEl2`tE}LZI z_vufE>3R0-vSmhs2Oi#PU6QMkYn{3N`y94?ax%AHTtAS(w>N<6aCYn@|4B9T4)!i? zRxg{Jv-JOs2l<}Qt*n(HA!RxH@4>2xCF|47g-J+{lq)re{Li@UMtS%~`ExBG(>z`M KT-G@yGywp98eIVZ literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-top-300deg.png b/test/visual/golden/group-layout/origin-left-top-300deg.png new file mode 100644 index 0000000000000000000000000000000000000000..bb97fc28e434e3c43494a0b63fcf9c3c8b3bf431 GIT binary patch literal 3226 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 Cq9=y{ literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-top-30deg.png b/test/visual/golden/group-layout/origin-left-top-30deg.png new file mode 100644 index 0000000000000000000000000000000000000000..5a6a1a60af340a2606ad761894c9063ec860c8b1 GIT binary patch literal 3017 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 U^^0Z<&TbBXTH0IGn%#K#KV!AbmH+?% literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-top-330deg.png b/test/visual/golden/group-layout/origin-left-top-330deg.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef3cc1caa53a8c46296caa3561ec96d84c626dc GIT binary patch literal 3137 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 NjP${J)jH6){{R8P1?2z$ literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-top-60deg.png b/test/visual/golden/group-layout/origin-left-top-60deg.png new file mode 100644 index 0000000000000000000000000000000000000000..2f3084bd6558f52fd6144ae0571b03677aee240a GIT binary patch literal 3028 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 Y&)OdiH;>e~V>$qG)&5GArTf$W0xGxWKmY&$ literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-left-top-90deg.png b/test/visual/golden/group-layout/origin-left-top-90deg.png new file mode 100644 index 0000000000000000000000000000000000000000..c871b0f0ceda1aa7e4c586ade46a1b30717183b0 GIT binary patch literal 956 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tIr zPZ!6KiaBrZ9L$nUl{o(Jzldt%JK^Lbd9PSGY+rb7(t4!oA>MRrs`x{%3)TTH0!!~T zChU57$&59Bfs&{9?6lQMn@>J}#3Oc8#(2h@lh&1TGmct*X1#Z{f9881HAbM7bOR6m zygVk?pqZ)d8Rxg@T7BV!Cxw?}`^<%dl_KUeT~pmT>q*t5$Vp%S9l5Mx?YV8TjmIvt zb2SY0nd?>GZeC*Rb1U#tRK1L9u72kHbJrPqR;^WgyVx%5?Tp8X`_oF_WUhRB=>~Ja zJ-12Oo@U}}Zoavmqm!zn=Dp#^{%c0}H%D!ezxDO?HL*2~|Gyl%!5ky<_S`uYvpKuh zM(U|n>YqHTQvc*^&7}Tf>->Ie3Gt=`LyzfCUaOe@I=}yk!t9&=)2EgFaSc2DNBnTJ zYR`$5ovJAlq$}lCtK2*>Ip*}=J(JwK|Gf#E^xJdZoToWH^AikDoUN~kJG(jNeA&IT zYxm6BTk`Yv+lBlri%YA{gWYPckA!Zdiu%mIp5|t;yXN`YJGIK66W;#5F5}l7 z?Zoyo^We^@GS9rqJ}13XefduH?z)J=SuEX-`z#L5I)A=~OHb=y(uDlUHJcy&DW7To zjUnA}gT#{5e-~c-_N?>yls)PGq&vQ!5})&_oO-B%jeAh68qLbEgY`{ dNle~8x8|o#YK-<-wD}uIr>Co*%Q~loCID3NaV!7; literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-bottom-0deg.png b/test/visual/golden/group-layout/origin-right-bottom-0deg.png new file mode 100644 index 0000000000000000000000000000000000000000..2e71b0e0f5eac5404c7617aced0e870855fe0e12 GIT binary patch literal 937 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tIh zPZ!6KiaBrZ?C*+6l{oP5zK24bqlrsv!Wxkro{c6Bqw+`V6724+CP z!nhUrkC$4%5eBmTVG3RvrrF(wDiGK0H(m4jY8G3B|Aw@pkiFY?<%QL+SvPxi_4Oh) zZn@)`PiFd<=gD5NE>*vKlg&TkfB_4)L|X#mVF8^4i6&Ma=M4>s9AXAM2btOwfs!>Y zM*b;EjlfJd$%7rA;inP97hHEqQu71h&y_~!*f7<2`|0@qA1%F>%tsB2#z46vR{SW^} znkD6Pip|~?{Wsul<&iUUub#OZX~qK$_goWg>m) zQ6c(a`QHwly!g-3;@0=8>-qXNX&!vU;=6ox`tR}$@2);tfA=j5@hOrDDs!&iuU}cn T6TFqP24tG2tDnm{r-UW|#tvfF literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-bottom-120deg.png b/test/visual/golden/group-layout/origin-right-bottom-120deg.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ff89c0d00393dc3c813836ef3dd69c66be1d9b GIT binary patch literal 3225 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 Fe*>Im9QXhL literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-bottom-150deg.png b/test/visual/golden/group-layout/origin-right-bottom-150deg.png new file mode 100644 index 0000000000000000000000000000000000000000..a801cc2a33f4b0d3a30a3f63092bd1b884d37106 GIT binary patch literal 3189 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 M+6G!x8n)5@0of)ViU0rr literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-bottom-180deg.png b/test/visual/golden/group-layout/origin-right-bottom-180deg.png new file mode 100644 index 0000000000000000000000000000000000000000..ec534fb3fe021120e36be94b7cd39df97bf42249 GIT binary patch literal 925 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tIJ zPZ!6KiaBp@@9z>#mpK0Meuu#NgrhgIQbh}Pi-a}pWEI`o5t?@>NZ(NynKk zW(kY$M*V1CQO%sSdHvB!(~BDxZ+I*@|KsPz%x5-l?5<9~Y586aXc_%LO?BH&@dVFX z{GN3_n=a-km;4JKb*Y?RU9nH=cRY z7Cd|3fhcDGh&R{$CQbKr+sBv_S(~_H^Ss^&or6jH<5YfHpZvVnectzp;;(OZ92L^} zmRT|Rs^#iv&w0-ltFOJ5fA^Jg{ zQKac8OWU-R>e72!<&$Lm)_qCX>+{IIct%@-;lhWxVg8Z+&+fIPe&XZSaNf{h#6m~v z@q;_u8+_j0yLLx=gTp)mmd`0k4+MtR<^N|?o==ML`xLzYyTZw@D)lOvlmEMYQ;INn z literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-bottom-210deg.png b/test/visual/golden/group-layout/origin-right-bottom-210deg.png new file mode 100644 index 0000000000000000000000000000000000000000..45190a5afa5fa2896f48a8fa546615e099c9a01f GIT binary patch literal 2996 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-bottom-240deg.png b/test/visual/golden/group-layout/origin-right-bottom-240deg.png new file mode 100644 index 0000000000000000000000000000000000000000..4e6f66ac00d5c870f819bec2ea73e23338380860 GIT binary patch literal 3001 zcmd6p=T{R*7sf+V2n3=8lp=^5K&6Qwpg~F~Av7rlf;2%Q1_VJg^rkc;h9Xt^QWgS2 zh!LVxBZL+KQ9zLrK+J;FrPplsFL=McXXebzhv%93-Fs%{+-Ek{2oO*b2mk;;NHb$Q z0Dw!Gv+m|U#u@FV#!;NgZ8!J^A*K8zqESEWyK- z!~|d0k@Ae6G)WoCRRBTdTpb4WXoGcf_wt5{ehKn zR)2v+DioRi|K2e-%wRD-NNGW7e#?bu&p%er#aYc`>{RMWH@VdTUt+hpLz%9JZ97*6 zK@lP$$KaNVMbH)%8R4}zU~PlNr>FO2Bf)H`nNOYS=^4atfHnLP8UIvQYa<0~2766( zR$T%R!|Y>BnZ96{C%}q{L-E~4sRv{tVH3?%Ppu<@OkhExPAWD# zro@da8RD)!j!rWsI*DhQE;t5k7p~H5;x}~%?WL8F^C7Y%N#PWd4lU@!UPI_(k{W#F zSkm+BBgJ;B%t~C>v;lX%{ee0lk!xKd#D62&q5VoWfIa`g7MZCD+>yeE+rdJTUtGEZ zw`bq+VFxjgYUHx8M<-ULpJolGrmR$?I@+D_;ga###{2x}dY37zS`{TNG~U_${37=n z6S)%hp0+DL{OotEN=9W(tv-8(I+s{|XYud%B{X(onPdY$8u1M8^ZCO1?E5D61v+85 zQKn@Lp`UwenvJ~T^=OPMLm(921(|eD?;+^EDtlY7U9^+9a)2VJIE&(?c7{~fr5z%F z6nWaZ+NSqxeNW^ll*EsEtW6W_;U#Nnb}sgtonj7$dqH^2l@jR7f=FScuaxMPq<-?} zNP$jAnR3?|VD(W%lBew_<%~nPMI*Y}@FDVT{lLs2+>J!X| z9)|b)BPyFu*{ZCHB76;!)jJ4iSa|1R{$UwP(S(EHF#^_P`0fujIG&_TRj>uO_ zBDyRtzDxay6im&95tiOKP(a?h?; zp@Vq_-&V!rZq=Yo3cBX9KEV*0OycnCo)`XNtcytT{QA0CwXa4CU*C? zT_{O!2Wq4DS>F-TCY;!xTwOO8tJi&)FZODE$`Y19?h1S{Cyi-{4Rv)l<0F{Mfh&j+Z`fF1}jkp(`@w=@D%toE+fQ$QtsV2x5 z)X>|K)HeAgaId(a(jT6PQCUN?7$>ZEPm*>|{Cvr~&vlKXKbqwkgp}J(e!e&Mbbl2u zIia0SY?%!aQVo{^O}1l15*!c7q|4_h(rnGRHftE-7nQ5dkD8b%r%pHU-rj4RJXP7~ z3I^^*Tf*XoSU@EsIDcBI#ZZ5mA(Hc~K;jPcxGee{Se9d@TRtzCC^F~hyge{OmCz;L zTv4PaD@DW#mN10zz}TE;xCyNFVOibze=j|3c|#)mFmiZL@6C!Y4Dbb-j80&h~7GV>nJCYh$UmAWUz-#R4W%<>=O61!#mrfIP9nnswTreQ;os+VW zk6gyoZ-#PU;U@aNP9HSC{=TM9)$;ves!9c4C@B@zM z*Zs#lt&?cX(1j%&?NG+|X#$IY!=^lr}TC1LbhNo4)-aZ-;K3!Jvw%t2XW2;a$B9Xqe9=h3Bmw6R+Y-3A-6LqK)df11N z#XDp1^l-1fNWW)()UESfQETj#wgZuLj63l*RkNe3`^8=&#lEsRVm(NVll$xwyE6>~ zeg~hbp?$3#XGDa?e=WGZ&!_)Es71H-CP~R<$H8aMU=?lu169R6V)N$+uD%OzGbb-v zPwq^t;B>Zlf~;pgUT&7JiRw92lDSLol%0DStSmvP z0m$5H!SBoLM)8$qS~M4d?{cofjav@?{gr-bVV6t!u?VZ{8AWPsb&SAXc|Ai_XvtN! z!5A__*b)6!PGY(J@xb-IneePkHDqYBb<$`Y{L5MvDpD#F2gvMjet=gM@?Iq>Mw|bh z7tA4z?))QvF?WaWVd<%aEV^u2f$@A$JPPK|J0jxEtoW2y&CD@65H6)XD;eDIE(sm! z!~SKfMNLFG_a9%DS!VXjTVVD49VBKK2|E`2$n!tj3UMbfDe07U4EMZCH zPn>9P0Vy1cuRZqY=z+%WIlJ%ui)T;09320eOYcNQjz6li5?I}z7K&IdcTZDpdee+O zmNXzr)r9<`=`B$=M7m_^RD-$K$_m16>6g~c|b)dX#IL7HOJ?< zQq9<7jn%IK#~p8HZh}mMyw3lu6M6B%xi?aMSb;T_ z$6hHfL~nM{h>;=yS?T`vt6kE4rA2J>s@i>EER^z7-<>ER&oNJ_#q=de1_+S^LYC%U zSmscpFX(CfUXf_orVU1n6Vt4retlvNkyNpr4p@;c4;69`KM5D0NZIr7*CU%IE%`Qu|?@PyGa>0_`KD-WXm^}z*<4fc|ZZ>4M_ z&-E{{Ddbu5lNr3P&}whL-Y2`<3 zVyLJ6!@~A8%F;6~DDrG`Bg)Sh|BpKM=7S?yw%7&NuE=Y5Ikh+dX<}_$3%~v3U!lgg Aod5s; literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-bottom-270deg.png b/test/visual/golden/group-layout/origin-right-bottom-270deg.png new file mode 100644 index 0000000000000000000000000000000000000000..baa259b329b306de9fbd420aca2a2a14cf739249 GIT binary patch literal 945 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tId zPZ!6KiaBrZ9?TLgmpJyY++{_$K;ZVWST4~`XI6QNgX4qaDMrs#7=bp@4Ltbq za#>u1Wv0BU+1N zRxVljnfHc>i=V&rN4{05oUwh~mRkiy%jI9q>)$80`H`Ghc7guM^PX}~z7{WzzjNv} zyLv8F?-AAJ{6RIN| zB%4^LC<3W>iK17(eOn%vxbX336}#d`T-+MY8ybvQ$fpjc@9IyvdEUbQ-TbS3!9}eQ zd!W{lM=4uPeDYdl`{X~fpUhX;uewvno+F~I-pO#1-pR5_`uDB&TgpUx>h?o(_0b~ b^|ROZ$L5y3dfXa+5~S19)z4*}Q$iB}CDvX< literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-bottom-300deg.png b/test/visual/golden/group-layout/origin-right-bottom-300deg.png new file mode 100644 index 0000000000000000000000000000000000000000..4dfb3308890cd0f2f4f06427df6616a74a9ed4e8 GIT binary patch literal 3234 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 JDszv2{Tnf=InDq8 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-bottom-30deg.png b/test/visual/golden/group-layout/origin-right-bottom-30deg.png new file mode 100644 index 0000000000000000000000000000000000000000..332e5afd4f7432dc12baa19e683ee3f42dd29a8d GIT binary patch literal 3003 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-bottom-90deg.png b/test/visual/golden/group-layout/origin-right-bottom-90deg.png new file mode 100644 index 0000000000000000000000000000000000000000..db727e0eece9b706fdfd3b353a171da864dcd776 GIT binary patch literal 955 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tH= zPZ!6KiaBrZ?C*+6l{oP5euuz%1w*&oo~f-IZ4qq^^?8a?0TYhg-f%`&Ls5b2USpG) z=2Q-)8!KBSe0)~7npNwhg$bKZzIb!)&HNg<8EMaS@1@nxvHbj26KEX?;K%p0+i?wd zO=9;O=2o{i8(5bwYhPu)>hx9Pv;Q;pty>p%ebwHhFT%wB%&)At&3z!yZ1ug>djFpO z-Q0cs=c}z*>aT1X+PCdxkVzH)UA^XA*}|$?=iLes8?HPRO}l6HMfZk!#D*iq+GlL4 zUqo;4-_VfAA*S>3DVK4)>@Tr5!a5O;?gG_WLe;Tf{q1e{f5Xp>>}Jjz5;|A@TzJuZ z_4!rvSI4h9zuNn3zl}xnR!hFVL(FeX?Jw5l-tKNRr;%Dd#B~; zrRC+OC^!6`J#XDhFW>vux0GMMeqis>>hNdA8|JB+dnJZmUQ@NIYNI`0Us(M-nZH|p ztxNOk+az`n>}&Vk<`LVopVb$WkVGk0nvnjNk4vsNSybrWCXi{Ku6{1-oD!M<^+0QK literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-center-0deg.png b/test/visual/golden/group-layout/origin-right-center-0deg.png new file mode 100644 index 0000000000000000000000000000000000000000..9decfbb82f90b6df64f9136550dc5102f0a2e76e GIT binary patch literal 937 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tIh zPZ!6KiaBrZZtN0GmpK0Lf5(FGgorB*3F!xpxq5FjP%KXnXkAbtT_qXFt@=ncA|p9* z>Q>LhrJ5zIy?Ym&?K{dN6?QGwvN-M2xk@>Uvu}>Si`KDkdtY-#1!x_0!I^O5uMFBt zawo<373rQl`R~zv&wn08=AOHI?0;1xbM7xKKYO$Ee>6|t|0~REx@tY&sqWnH_SejR z#dar;szfWFXPx?Hc2z^@$Lf83SL&~*A?Xr zhwdaYrgDe{v?YKjW~&KLA|_q-ymi^LS|^j=$410B>GE7g6VJZo)w>^6O_HDVq-s+A ztS8%5W_#|QX(E4YZolQm_M=VLCe86GPv5%u@ZUvS4b_tNv2?S_ zdTmetdRAS@{O=*>WS=87oFE5oTu|Y)`o*{MUL*4pz-Jkyn@LlN8ip`(k)E_S$Kcv+=_Ghk0%u qW;!LHvw-Iyl_=^aR-kDQ>K_Ql^+dV&?|yd*WVolRpUXO@geCw;#$65o literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-center-120deg.png b/test/visual/golden/group-layout/origin-right-center-120deg.png new file mode 100644 index 0000000000000000000000000000000000000000..d1da39841a1a993c36039ff5bdcad69cfc1fcf04 GIT binary patch literal 3259 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-center-180deg.png b/test/visual/golden/group-layout/origin-right-center-180deg.png new file mode 100644 index 0000000000000000000000000000000000000000..6f6174c63f185f4f84d3092cdd78a4d72b4ea8cd GIT binary patch literal 921 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_ow7 zPZ!6KiaBrZZtM$5m1uZa-q9Jy$P%b+r7di}af5~+)29$eWc&S0T;kf}{E;(!4Qw?tb4<6!}v1c@eA9_I}Wi5y}E zJfurLZUx#kM<;$w+&aJO(N`D0y8h~9-1a0pmTpcR@vA>yC6xxuU3q@h{Z-ai&95dN z|C1MLF)6{Y_4C!KubN-QY+dm^iuKjpS6g32eZ727EJco`TUR%J)xBKN)#3B%a|8EA z)kfTnj_)tuEw}lRZ~3;;ZB?7EPQEI5Zms*dcWKIL-WzUQd-=*|_3@R;I@gkymv0u_ ztP1j6cdqR!xosbn52UX4=aGL4RoVP%_p5&wmA_wC<}U-Q%*p(?_}}fyiJLOD7+q zk8FP+2~z88a@d50+w8}tT^k>Mm3}Q*=DZ=HdHL0)uP(nT`}+IWuD$!pHPbgxHF1Ir bOOUE(SoAS`ndQ{`?I6CVtDnm{r-UW|+_qWO literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-center-210deg.png b/test/visual/golden/group-layout/origin-right-center-210deg.png new file mode 100644 index 0000000000000000000000000000000000000000..5445c9c6c820bff866a44d4d8abd2aff76b9f223 GIT binary patch literal 2974 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-center-270deg.png b/test/visual/golden/group-layout/origin-right-center-270deg.png new file mode 100644 index 0000000000000000000000000000000000000000..e8344c872d6125b9531b262157cd1e8113e63e3a GIT binary patch literal 943 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tI7 zPZ!6KiaBrZ?(YgImpK0Ly@x{F!LD0sTRFNk*Q#t+P~qsDb*#H%>Al8DY6{Qzcrucw zpI~#U3VzX*z3mFetsk3bG#{~-R6jSh2y~$w$T1Yo=;CQ;( zSEesZYG*wOn6&ock+@0iC*S-mvA!sLFo`91+LO&H%O}bB7bR3YT(5H5Gf!>j>@&Aa zelza5WaoeD>5{i9Z(T3lD%j(3>+h1-S?3viR=xGV)v6fwHok9eV%q;Jw}Wo)TPeO^ zPqSyAs^y-9XCDlT3zVfV>K;rAjh=abb5x0aiP@Q4-5HJFi!Sdie*5j)3iDm*>izo* zpSetWKe^`Ty!U@BPaah%KNj;mcF%I_XI$N)Z&fR&qy&mbKih9`=k^J=FWws>F6K?T zKglM-;B&%^n|Gl?o6pE^-Zk$@UEKalS%-JNK73|#Z@zoH-OMV+ssi(q{GRWg-aX%Y z&+F53lhqeRfnL@9obgs==fvyHUo|@SpGlNyI@&QWy>4o0{wvoPQ>r5zB%4^LC<3W> zi67^0xqUl${e}y-{U2Qx4o65qRgg^C0lj{@?%2=c|03T`*l~!7OHgM4&q1bB0_0L_ z{x{Zoo>Tj2dUCQ#|KvZDp3JUb4(P6Ty0|lPQnshx{=$FV4=rXsIn!3&#IG7L*Lw2y zN~eCj7 fHfGWib;SPZXQRskShF|%1Znhi^>bP0l+XkK)GKs2 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-center-300deg.png b/test/visual/golden/group-layout/origin-right-center-300deg.png new file mode 100644 index 0000000000000000000000000000000000000000..f68f7edbf0b4b5a9c0f25a644e591bd6d87601fc GIT binary patch literal 3232 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 N0L;|dq|yj^?|;w*Bdh=b literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-center-30deg.png b/test/visual/golden/group-layout/origin-right-center-30deg.png new file mode 100644 index 0000000000000000000000000000000000000000..771d9a8118f6167d5ea53eab2ec347b20ed20463 GIT binary patch literal 3006 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 B#&G}u literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-center-330deg.png b/test/visual/golden/group-layout/origin-right-center-330deg.png new file mode 100644 index 0000000000000000000000000000000000000000..897191af621aa9feda5bf03864a864b917b61642 GIT binary patch literal 3188 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 Xb<5=R#q7W5gLHbj`njxgN@xNARf>j` literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-top-120deg.png b/test/visual/golden/group-layout/origin-right-top-120deg.png new file mode 100644 index 0000000000000000000000000000000000000000..e11efc2bb08b7554002f80046884629c468c414c GIT binary patch literal 3291 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 Clno{T literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-top-180deg.png b/test/visual/golden/group-layout/origin-right-top-180deg.png new file mode 100644 index 0000000000000000000000000000000000000000..59361abcfd19a63656ee2d06e089dc32fb6b4a40 GIT binary patch literal 980 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tI% zPZ!6KiaBrZoX?6Wl{o(Jy{4&P7gwxA?ry>0m>ohgn+h-XmR{7>Si54uUcTvj*#t`! zzw!NPR*DS^E=ksm?bs4_iBHs3Ab9GZm@|Tp=Jy#E8$Fhu&z@HNOtq4EGXHZKzezxQ zNdO1-U)QZ-{I+)6;)UI>tM?v{DN%Q;oBr&KJ|vUz!K-=(<{y#Gxn&+#qNI~n|U11{GS&0(w5)B)!sYafCGVPqk$y2NI$tCaWe+BH)`}t!tdr|V9 zDbxM$p8S|RyZdgD_&Sxy-|aK?pKavuj1e;0Tvk8nxl!lUjXBm2GjxAe?U_<;XElfa zn*5n(=fB$Jt>-s6Z1AeK>Bss?larTc&WZfHHvgT@(@$HSZ~pkU?`N**1oKHTGd}%m zt!w)!pp*8sVA52dol`GI8U1^gaP0o|-OL-OKJl3}eNv3qr{Mp)uE<*ppHFa9%+<|& z@4Lz5>(_TFVrAzg#WqW+@0|Lwe&MA_ciyEZUT5i!%vISr=gG4vGiU!jb1cS;X~*_5 zo6P5v%WN~FZ|gB{|CRh)-Pl0-{2oxqRN9=}{8C=#?fo5dQ*2MRd+zhG`hTNgCWjbv u)@e_)1)Qp}7oM z#7173%lY384+V9bx)Mn(WJ)7S(34 zz|lt!!0oU5`Ai@9-7oL2kTmNNka}V2^J_oN?&|yvD#qpD>z9ZwN^6wLUVfPF$=(7a z=*HnQ87THY@BTCj8;-TlRl*3%=d8^SX{lx6{X))oS7X-;!8C`30Y0b>T40-M7rGTY z+Uo+nb=kzgFd#JSNOmq~vS_yOnsJJTW>q>?HP#;^6mw)g9q#VxDUZ(i!x~Dbvc3aV zT_{vlBO_YMe;gn3eH2cv@16JDGdi=@YqbIm2c@mXTv$V&A+D9Sp0v1&dtK22~bst*^?(o;I(%CBD+ebCVPRw|8#K zHQdZrVjA5hPtj`95P;jg0d1#ITlZS$v&KC{u2=iq>6&f5gPW-t)`X&$Yz&saxJF~# zg=@R$PfDfK@y~tvjKjIvW!`A)5eb<;+2F{5D#Nvp{sEIf-R!>_SU7)ki-onl3CR0uPa z^Y=^{KHSHg7s}^z#DKE5ldERo1Df}>eMpF}o=gZjuzN2#YN+$m^keZdo4KLah0s@! zps*?Z-2pCG$Wt}>LGJa)w)FwwqdDn(r;6$kdT(Vf1A59kj+~p}JEY!%;2&`__)ioK z&Xztzh?S=oL}^1M17C&-0C!6*@LL9Sra5^;E8#(z@Z(pq%1#2Z=3g@clC&D?vT{Eoh)>3~bzkk; z6t^8kdl+)kF>QZJBsFgJYZ}?3kOM}Z?vOl@%)|4dq+y%zRA5)`cgm&#o)HAVg<64{?YI|e2!7v&N-aS5DVj#w zG{rZeW-0Z|2H1d9Dp!%4`5+0g?XCpuK5j_O0AENTqYj-V-r6IP>q7OIznq;u=xm7p zT6%F%R980vS)?$G-YSR$BsESuOOzBb;<=R(p3HGPjg$%O~a*U);99MT2^Y`+J)HP6CcR`puqpDl z!IN3QYp)1xKS@*igjtO&^w~=KS6H^q$F)iU08T+IDb>$KN2a~+)iVNVs#iD-udOTHclZsP~?^#oSTLauFy z>{Cbxd?YV{wP^c^K4*tYI5KSTa|R?#*^1Z{PbTTQNW4{MB)2y-08ND!F@NWvsOc(= zT4NW!J#}oXe&LQPCFaNiAP>elOT4b7A#|+t&vzTm`yaIWT#{owW7cAoX6ZqMTk8#l5F&e%Tt}zM={s-g98FXojTg&`GclppRW|I-eC-Tx#J1mTtT{XtZrqZQ+-S<4qr{3z_8KgXZl`6 zU<6@ZA>fDTu;wJ_(yUHH)%$`vOPj@YG~d#uy1=|xbin1}x3t_|j?ON}ZP9y-N2m#h zx9$4GY#2UTsLI|povW|2%vr1i>M$Tbr8L_ppN!^B3Tc7&fhIfkg+Di8a56}7*W(|ya~vWl>X z%p$DE6BD$9YQ%{^)OM_bsfL6n8HQUHR?9y*@5j#3wh+(rQJ8xltd7p2Q65 z)Wndx6uswESUv8J1ULMxq z4<{Ob8NYPtJ}PNDGCHwlxY8c#hG!H?;*W9v`?i^5k@F*(x3X(FGmYo8zZYqK`%&aFgsyQe76C}*z} zC9mS`gG8)l%%f=U#$wWMjzmbCeAV1To*qGINpL8^yeq@fuZ&6Q#{=ukE2rO>FhbHq zPG9RjSIXe7vUEk1JG=es#=6va4b5?#Pt2d63gKTh6ld{hpvXWucJ=2Ix}OnZP5*mJ g`hRlVi59vp_lUI#T*FR+!Pl9fci~1g1`f~u2VxM&pa1{> literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-top-240deg.png b/test/visual/golden/group-layout/origin-right-top-240deg.png new file mode 100644 index 0000000000000000000000000000000000000000..5b4fccdb1e1b66cbed0cf4064b1581a30a01d1ef GIT binary patch literal 3005 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

AKCRhD^vy;wl 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-top-330deg.png b/test/visual/golden/group-layout/origin-right-top-330deg.png new file mode 100644 index 0000000000000000000000000000000000000000..af6f200c4d63717b5b7a9c0974872d181ee992c1 GIT binary patch literal 3189 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-top-60deg.png b/test/visual/golden/group-layout/origin-right-top-60deg.png new file mode 100644 index 0000000000000000000000000000000000000000..7426610c31816e37e7b73f6d894829a607aaafda GIT binary patch literal 3035 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

-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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/origin-right-top-90deg.png b/test/visual/golden/group-layout/origin-right-top-90deg.png new file mode 100644 index 0000000000000000000000000000000000000000..cdda0cfa348931a917357f319876f21e01197042 GIT binary patch literal 1014 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLV*-plDE4H!+#K5uy^@n1_tKU zo-U3d6?5L+@z0hil{x~Kcx%{2s^rF3X8NcT}R55veZS$ljdsW0I@0s+@`%Cbo)1K>8EG2Z`raFk-%DT@S z;63@tW)*R{Up2`kbNoN~O=?|X+&_2fKK2FExGPP<+V@UyrI`QR>LrkXxbQbU&B%k`= zSFUy`PQGXBI?L^Lk3A#Y)@^7oV&T?srhwXWxzZPU>!+sgc&Ue=#~>e<%KH*dy!-%fpbRwZ}RXU{mFBFmHK|N5R(63|&z z^nd--8e@yeXS35c|Gjt7}YuJr($8 z9v!YrF7`L>nV0`2SsI{a zZx1fyJ~;Sdv-e%88GgXTr_;2}^Hb0y^GR#eE7MAnwiKG&SNjQ!;AN^2a~6C%sdE0= n{)4+7ueT&2QB$sT!-;>4JNM4y<$EO{05Z+f)z4*}Q$iB}zaod$ literal 0 HcmV?d00001 From a1615be384623824a8d786866abf9a69d4efeb51 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 9 Apr 2022 11:20:26 +0300 Subject: [PATCH 6/9] Update group.class.js --- src/shapes/group.class.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/shapes/group.class.js b/src/shapes/group.class.js index 15eb5051a3a..28c75cc9960 100644 --- a/src/shapes/group.class.js +++ b/src/shapes/group.class.js @@ -96,8 +96,8 @@ this.__objectSelectionTracker = this.__objectSelectionMonitor.bind(this, true); this.__objectSelectionDisposer = this.__objectSelectionMonitor.bind(this, false); this._firstLayoutDone = false; - // setting angle must occur after initial layout - this.callSuper('initialize', Object.assign({}, options, { angle: 0 })); + // setting angle, skewX, skewY must occur after initial layout + this.callSuper('initialize', Object.assign({}, options, { angle: 0, skewX: 0, skewY: 0 })); this.forEachObject(function (object) { this.enterGroup(object, false); }, this); @@ -517,11 +517,15 @@ // clip path as well !isFirstLayout && this.layout !== 'clip-path' && this.clipPath && !this.clipPath.absolutePositioned && this._adjustObjectPosition(this.clipPath, diff); - var initialAngle = isFirstLayout && context.options && context.options.angle; - if (!newCenter.eq(center) || initialAngle) { + var initialTransform = isFirstLayout && context.options && { + angle: context.options.angle || 0, + skewX: context.options.skewX || 0, + skewY: context.options.skewY || 0, + }; + if (!newCenter.eq(center) || initialTransform) { // set position this.setPositionByOrigin(newCenter, 'center', 'center'); - initialAngle && this.set('angle', initialAngle); + initialTransform && this.set(initialTransform); this.setCoords(); } } From 5b36c1c34876138b0332c33368bed458777c9534 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 9 Apr 2022 11:32:27 +0300 Subject: [PATCH 7/9] add layout + skewing tests --- .../golden/group-layout/fit-content-skewX.png | Bin 0 -> 7060 bytes .../golden/group-layout/fit-content-skewY.png | Bin 0 -> 4791 bytes test/visual/group_layout.js | 40 +++++++++++++++++- 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 test/visual/golden/group-layout/fit-content-skewX.png create mode 100644 test/visual/golden/group-layout/fit-content-skewY.png diff --git a/test/visual/golden/group-layout/fit-content-skewX.png b/test/visual/golden/group-layout/fit-content-skewX.png new file mode 100644 index 0000000000000000000000000000000000000000..30dfa60b8d3b59c8afd227739b484ff14952201a GIT binary patch literal 7060 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 Xn4TF%CHn)f*+2%mrszs-=eYj^o)`cm literal 0 HcmV?d00001 diff --git a/test/visual/golden/group-layout/fit-content-skewY.png b/test/visual/golden/group-layout/fit-content-skewY.png new file mode 100644 index 0000000000000000000000000000000000000000..758db0255b44a934b88d4e24cd8d18b0edc1a0fe GIT binary patch literal 4791 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 f Date: Sat, 9 Apr 2022 11:36:57 +0300 Subject: [PATCH 8/9] fix tests size --- .../golden/group-layout/fit-content-skewX.png | Bin 7060 -> 9264 bytes .../golden/group-layout/fit-content-skewY.png | Bin 4791 -> 14008 bytes test/visual/group_layout.js | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/visual/golden/group-layout/fit-content-skewX.png b/test/visual/golden/group-layout/fit-content-skewX.png index 30dfa60b8d3b59c8afd227739b484ff14952201a..ddd314091d190ef669a97713d1d1f8bc0d1d75ff 100644 GIT binary patch literal 9264 zcmdT~i93{C*tbk$&%P%6zBP<}tt{DPEkqL;*-04tR@P9~8EdkIQL+n}sgW0h6k{37 z#9JiGcomBHo>AX*egDFDnd|agbD#6OfA@0Exu5$?`c>;IEQ|t-R8&+fW~N4VR8%xx zR8-Uo^kCqdBnVCj_y_i|xMDacB|>Fpbjblxy15Y9>*g4{zcc=Tjl)D4 zZ=ZzEOCW)0>UU?ZTy1Q3jEVVm=M2$T*7tKggVRfw_Ap<^wzH0vPDVy3x-*Y2JrRSd z+>bN|(THBYOxPU^65bvf)!Hu)-PVfO{Ina_wT@kx|+_LBHmndPD`~T}x z{pnm{8{73qJ#3CsRTwc6HA$Hi0+Vg-MZ~H%vo}*Wi#AI_cxMo=mV0bYU-JY@m^_RZra_`2iHJ3i@?GuAWduX(X-rH` zd?EH4`&7Ktt2DeESpUzD^!?7m=tyj&8VnXgF#M%ZZ_5m~8_Gf-SAe1Iu8cPrV^}rw zx{Oh8YcVmTrh$r*+YN>dy2&U94{^WaJgg-{7xjTUId&QKGQahSy10?WTuEXld#Aom z>AT!l%1ATGsn5P}h~IM~UFkhXlEiZ4OBJFZLXTX8(Z{$%jy!I_!lVk`Yg#dbTfdlL zrZBt-_6e!Gg&#Y$FrP5diG456SP2wiE#*)l#oQ)5G=o;xMCFntF+VZm&)h|lpPhi7 z4*1iN>@msC^10^z@i6M@>CZ|=c1V(Y4i>HDM0JhY;LO%PH%3I}sbe1Tg|A#BIgp0X z+-8!uA$jK2sdT~2@KLfz@L6_z`4}*&iAG7ZT!+Ybz!n@t$f(YxSTM0-KLKuyvcQyK ze&C)Rh5dk#&0sntZp;N4n-_Mn@_;jFV(&RZkyF##>7tOp8uzB#3uu}#DRAuq=K)U$ zbF~Q+X@>ft6_smf?%*4rn1m0m3kYgr7YW%PnU8e5z(9hll~rus*8iB*ZQiJT#9E@}x_ zOMw>Z6cq^4af%*N#Mfx?yPE+aPZl8khi^AE^oHc6+`&{bGs7L#iuk}DoAVDGCi!u= z)$MoX#SK~jJqbg43iwm2^s61Wwl2$U_>dYgt%)|AdKxt@Do8U!NcB}PxV6E#2%+!0 zKmTA7^A@9w$xIA|PK&W*0ot2IPqmN6;kIW*D|oU(l*x=9aH_fhJ4GM@)Ws={FR*BB zb=vY|)+5#ravt!6RoW$tdvSv(pk3tSq=W~gF@;?$f3u|Lk-#fjgfv--R19#Z1-OG@ z0^9cd_=a0SFnux}A2vBPgxmQoIFTVWl>#{CsZSi@ADB~|A9XxPuo#$rc%H0J8pX7u z{2qgcVNzC?Qlww8z(03tkU3zx0QY&;G@;^~Z@fnx#KBOXT$Qj^D6)V^&(8D3`*{_E zkXV%W>jLEYiw$Q0Y7G2?`Vc_6g=tKPM18xHk(Y3dc4^ElO;rY1_BJTGY860wYd|Hp z=TS-*3xbXufvJkLcnp3ElloB!s=6 z<^)e=Yw{}jqEvlrOfvhhA6Q`mpk&l!a_)T~ngz3;j4rx+R&WmVm#MA<8hJ{Z(&xOG`z{l@Y^ymW-<2L~Vu zO6GhNjZX0*CwaZ3Q2=Sk16lB;a034xHfqeQk z^{o^kn9&5 zB$81AFD{=-p_lKsh==lum4oz|1!;8)0m2`c;l6Dd4=7F=eTO+rOK&S!@=n`c8JmA# zn&$Ko zbNm1mR)tv0Ec;KCY;Tz@xle`E!K1y{akbG^0zL9ZNN^Ww)l=%}5ggt?>}vzoBKs$_KW;nB$% z(#~H4nkIEmsi=#6@jl{%KtmNXuI@dUH#W7u1+foM{bQX;S_odB&L7oXSR2i8AQpTX za7{e~SvErG3v0kI<>woX13uW#Z4+IWE#ULPpxGNMG8Op%(u z{Uc>tcAD$C%lqN#DqGdD0Z=aZGytlZ4fz3AH8v%_VC#cwjNGu`EPMF&_A@C!1Tvfz z2CVreBPN2-360XDFQqvGvipMwU`E1bfZj5kApqMhLV`TmQqkyi55?G?mkaldbU>!SS%suf~A5(0smf7M%L#u zd%5xBhXXW7MjpOTMxoOmK&!l&4(EV**_Hk`z^!-BQD;k(M@JccaarGr6U%oi0+c=i zlyV!+-e*4D17k^{m{NTEJi2G6JQOP!7?6?4053MLv9k z&wZr9uAIly-O>LF?PVY5iIu}s-%oMKGN1h{V%-kge1}vj`9RbJPg&=)on7s@=A&of! z3GtFqf^mE^n!xmCrJaq14Pc>m^Wjy4Q(7ujkW(XY%wS?q+AMX)Kd#nJ-`EsW7v~(S z`0=V&0Xa}Oji=x?s4^3RKHx*f)TINrpO^Ho$!a8{zyJY7X7~?PCLne~T{H;2QRHhM za5HT)G)090U~rMy>*G6^Q_vx89aRLC@RLQ(iXhMii+@EATfHSSyjaC>whhp~M8HTV z(j~Me7F~ToXl+kiNb_mHR@ASEu z#`@FZJiyaOyqoFH^V1TY(W(w~gEof!KvX&Yc7Z=*FS{n=jC`n~-B&jTK|1j|;BcI} zB{MP%Bivx(PTzwG_xMBKZ^2z*xx)FEiS`aHYMx@kPdOoG_roi zRVHb~=Rx2_@J4Z`V0{!bd>vJZ<^oQTPOdIyO?FMrt_$|(OK4MRg3f&56hE*i29Dq; z4;guuWYnu};e#_1KBQGl6DC767O4NFNo-H6-ds|R{zBseWJvL&O0)xjIPejNxYI8I zZt8p7^*d6Se7l0^QpESplh*^DM4LdHuKW){=+E0i*2q;SZ6F5+?8KV&sC1naa%lQ5 zxK|ikK6`!Zr9T5+@mR@60C@W-s6^*8!*d-x!O*bVGV+SaD2XXxZ})@b7ZhVHbA9o! z+9|$a^KqDznHsPfg!zW$fRdl`%n6feWcxcjrNvhn={Rmq5+cD#vLxq$mO!HRKFaP9aq@;L~2g>I@Q;(ZYEnH=w03?aajrqQjHx0 z=pdE+ zIL<9@@H(BTxJdmxrv=Qv_ z{r6~Mr2sQ@esdQ;pKTZqxs?9WKG`H&$3OZjP7xsMY_R-(jGoDJu@az$s&~t zMN$Z_qy>)B$xlBxGp9|-DWLwZp@;k2+mX$nLzmArX9q*xAHI(Z9J2|&#IW}=d!%cL z$c>P1we^>6RCUD<2f30WFkf-FPedx6&c4^YWF^uAoY4xAiZ~H1T*{Il%-LyJk>13g z=a{;pxfVOqIP-24BRS)tuCNjp)PYocScwKo!OxxI&G!+_@$Aj9J3)$moR>D=FSp0( z7#n1EvHXhdy<=^BK6~ZK{;eX9bDcE(7})7-a4T3je<}%!o+pUEAsAwuaiQ9w={Ir7 zkaI|e8&o&act?jC-i8Ri({C$R>p6d*1#Z2CBu7J$YWFMA>VQ&0RPc#ANf&s@6H?}x z6wyuQGhd;@4TK80t4db^hVvaZ8@^O{18C!n3j(wSn?7_2>3VoKT8K;y)7pv02}=e# zjtOHrrm4SBodXIcdt1OrbS%>5VRvURhUmEVH9EBGVKFp+DjSO~6#_k%4!k9FnK^Z* zb-8~Dv@y}K1;>=5wTh#}T;zB-Pw4ubiTz6~^Cl0oOo{@69Q-4Q)EhP9w7q*)b@{w)dZHoWNGtx$sCo)`B{>)p4SL}J;q{@*`G&Lw=4i96vA zm)wi&wOF`4*0)!&8eSF`9_`%uVmlyyh5(at%zW#WAJnameFF+ISH@xB3^K>1H;>W6(oM2QBlS~bMi}}j^D?ie!=(03TEUf&;`rpn@QIsX7sRl5K;PI z5EQZBT;|1KZ9^Vp2v=O!Q^giCz$Fovl7hGgpAglB%z}NB-f9b0+>}OKBPv(UY<*%- z5^gQ47aEM_h>^pFa_aUY#t8%J9cJW8P-lLOaFnx>%a@cv$U@c!~{g1f?2K`6N z%et*Ig!Wj$3Mfa6-T=atSW6E|t?s(sNzhTiPSI*-^GYFncC=ROCf>iF8~l+WaI=ua zE4h$*siOZ{Exq11X-%oD?7{YynNHfwfQ>Q|o#$eY9G08GeLDOGyjHWnoUg7!hqD)o z9pSv8I~HZHx9>7y&+xhw)+3ZXm;t(J-aG~Rws$Xv1#Z_46l{Ipzh`O;oLSb9b$Nd* zgLTpCt(y+83IA!8QCM8YapavkJ#ND;WZE2<#43G#?p9wkN3ZmN@u8vY<%O9rA+wN) z8~ro;8g)~y9NSjpzO#d?37{8NCSR<}) zNt<=GnkZQU9N2*--H0B2fTBZeKWP)gWmtFI%lUMja~g%Of5dG z&%AQfr)k{CE$i|tZt+&xiFJtlBhZOF_T=7mZ|9^lKHqsr?6QG5;f2uk-@OVNSH!_5{9cPp81$3@`S+9NKnyW%^B{swNx2)pL*6%%XUL zStmRLrj@^;&*;)=Canc@WFXBOV)v2)5^6Bq7-Jl0HuZgEcrv@k-F;q;zMo3e$0ciD z5h7K3n{zqi0|T#i*Ls(t+4`u1sK=zEmN&0Y&VGp67JFxqt;0F^uLG%gdD|jQ2(dZx z5jW$&%F(CzLL%zg*5&Ur_-@wU>s~#s?0O8WVo{!fF1?G3hj)dPr{0g^ju)LaKF%vw z>?@F1FyE^mdB z$7AQyyU2_B*yvxgd&!s=8D9R6?%Wg-d$qQ0azCRrE$}z-V`N9tEYO7<$rwK$JwZI% zRnevCZq2+Oe6{nuw9@2m;+4e4w8!s*==P*iZX{^x_hp;(LqimJ*(+F1^c`XVMY zi6yp^9ryWiwo*L$jM0(IytJ-tx5CDk`z$i!iK;95mL?a7ZkaO`MO^V6bS;O8_6aX| zx7{+47s73eei6>NTMKr6OJj>+_p|ow&{Dn=>bEtkh4$fFb#MG)%!ilAdh3e%?Eb6! z$HaEDRO=$b!tY#B9fGZF^5?BB_aY}79S;9|56$HC#oa?LR-aDaD90p=x?oG-G$;y- zn+msdSAF1_8!BA8a^zM(`USdDhp_&yfWg`MIA=6nI^LPnT(9bfk6p^j-`8}bC# zcuv-NldA01@=le;;ldV^mI3tqmx*`_lNZ}4d{o54-R`DoR?u0c<2ca}Vxas}?j~VZ zPTJzdOKtu~rF>tHj8}TS!Q>AfeVGX*8Lz@6T&zTF8V3kQO!%?^ZH@m@Qy!WPy<~m+ zob##Lb|Yp8m+(VaDo$;4aWGt+<`}6Np(O4ydYn4piiM^Z&H*obu@URdS=wdM9Y{x@ z%zO#d1L`?GS{nc4`MU*_j{(pqMf~!*r~R}l;(=4OV~O?q{RpInOnz< z1oO5zRxu?B*OY(VxZeLmFSSeWScDyKEjpII%8~f36Q|V<-PxGA9$G)%4fOrw{`tQ# z+H^16tE4sIII_x^IFXK8Dzamio>(u4uu9V4A%3m#zTx+CRaN^~IE-d<9TphpX}w!=<(Q{6F5r^xKfggc@4tKDbmNE| zO>7JPX1b+udJ}I0lqP)tlL(fb(An`_uH4`3@uyvO@)dKb4U}^E>5jQGm=tLl-#Fle z%b8ih?P%uQY4?eT^ybZCG!i(|Tq~R0QCfSqRHA0LQj8iWYcQU;xGnwk%{JG}JMFQy zFSqJ3{5Y*H-iczhH^qJ0uIk>1)x|NRk*`1RZR4o?wssZKv+3{+Z6K;;m6pJP7AW+V z6&}Hc^|56oZVg1?j5qm>AU)i`i&IY5z~ooL#5&-6N)_O zSc}8l^{6OR9?EnU{?>6E-Mi974IE_Sga^m}dI;}V?Y>xH_b^S}O(XrMyFBw{E_DdG z);cX6RlI1(ym^<`Z|})QTN!a}@nff#Qiz2r`|9Wru3Mw^pfvV+EPYluu;F(|UtaCQ zXyJm-FO;j54zB6n#NA>2P^N>1ZtcS%c@2Y<;Lp{0eO1pIuMP~VMyBr63`C9FD4Xp* zS%0mXb#`oaeKy?ECG^RpqimGIYxOXppYgUC6YH*_BFD}du67Ih`^BIj)2hw^ZL6Jo zaXEu^)1I^6LXM0D%7oHEyLOgplRozkuGoJUoR=RE=>?A7xT19Z9yMd``ol>#S*(qn zrRm}?EzQ=!aRaq1>yK?#JBuf4JAH38_vgHOW|Xm=J^tSwb9MH(hL&yRJ&jneeytJY zWqw*6eb7HydhHgcmE$&d#mqnkJL^X9i{J7gf^PanZ$9S=bqi-?=~Do5?w~*5Wvrd0 z)9av&ufDHyJ-U+Ka{4`FEU+|mt#hH?`kcd+3~Pa`)^h3 zZpNmS>b-$kpL;Z$v^|0&?m3=*9_vlS>>+JgrB~Y*vWKo^u7qC9sE=JliHQJZ@Gm{q zcjcL$-+Gm>B^lFKKCHFEnx>0t>1%u1&$s@zKe|!PHC`1KCDqhEU*Yk5gb>{`8uLDY z|9f|*?m%fX)b2=E&~b9+^%#rn7up2_V?@yJoY9vIftJdnlPj??L99TF8F+PNt6z&{kmO;1csz`HKhx8+h%erV~+k}Xs{D0^0 z5NFUcah)}4m%cA65hJy+`}S=@?JfeZ3!N&=y&W^YBF>sEth)LuZid=!<$8FK1HZ*x z$Qm=7-MqdRDkyA5ehDhE4z@I1vC+#975?QsH$LE9qvo1cZmv9gkTRg{S4W>yA)~+h zo-1+dw@=&WfMig7vB&Z*YaPA($`pANq*G0AI4Fg9n)8b;cB`f>>Y01pO#h1gJyV2t zMtya*nR382zY5ophg^yg)B8Jpia;lx66>Y^E@rqEZd)}kAaCMbB@YZ3UO!&$c%K}w zt)*v-nGMB9?^#YThDN!Bs_e9WTxBK=L4Jm|0(t`bdH#9YJE6dHPn*LeOy@RcNQ+BwpMdK29Q4CA8 z$EUyY$L~oUEi%I;RaJK6eE)WB+IzB*tJ|*_2*f-DCNf88>Er9To+XY@rbSELCr6CS zpVltzvAbC6l48wv_N~%{{OF+CWA+!E*z5&UOFohbq{F7s`*JI zJDYeOI$G%QIrF&ZY4n#Psp%5s`5xK&Ufp5W6UIB01%wZL2ooPf^@7u1^|(x02X8Y6M$#!zt2ENvX}=9HEU2yo~7a&Rt=yu$Na#p zvMTvLE`YP^3CwVN0KN@anRZS5c&VYQwF-a7m_hPo&;7wc+oY&?c|r23U7*Mx*sHZ0 ze}@S14?6&N`4o6(R%S0bp!s)7fhI+zAcNwAQJDH!LzMX-;2WU({0#`P9dI#5(WDK@ zuW$PcqYO+{`>QFd(y|69WGI@rnY|i-t|A4I*$^d%qks?&U_kV1fO52+AaEWJj1Z)Z zaPdq=RazDR*XY$Qezzge{Q8zt>?|gDii+cD>#xZci@#bsd}^qg6cS+0L}A`;0)iT% ze1W@1vv#LL3V72gxbG=A(2)he11R9_r{IlV6!4By@OBC~Kn}38$%z6!cM3j50iUEl z1$Uu<3;Y59Ndd1q1(&0M`~G3>MFG$H1AfXJs4RgP6;Qy{{(#$2z~7yMJ5sIA0g*4`kJ6bWsnNnOvTH;seNkc|hO%|J83->P3$YTwhg*2~63p06zhu NGBdU|dVU#}^gsEudNcq4 literal 7060 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 Xn4TF%CHn)f*+2%mrszs-=eYj^o)`cm diff --git a/test/visual/golden/group-layout/fit-content-skewY.png b/test/visual/golden/group-layout/fit-content-skewY.png index 758db0255b44a934b88d4e24cd8d18b0edc1a0fe..b5ef5ada5e0467581cd040a891de455568c97608 100644 GIT binary patch literal 14008 zcmch8i96I^^#3gOb&!3Xv1Q91vX+Sv@gd5Rvdfx1vJKUkQI@erv8{BDKOZ}SSpX%n^YIf;A;=0d_R)W4Z?us^ybu%2&V ziC2G5|G?lpHD_|0uglZy8#_s}XH0WHS_OMfG>*+Q>a2}>HGAfj*dLVYd=74D-pv!<26Ttc$`gVr!ek+I!u|bVA8@9%Y#Z$(Y(Y;fx797Q#e^1SaDIPYV8V7y5Uwr zC*6;hC!p;tTMB68%oSz|Xv%rhw>ug2wxNh#@V(~*t9oU7T>&jtoK;O5 z2gK=5(^dh}c@{0lID+|IKPc&6DCA%0&7=R?!~fd-|JvRE+U@_^-~YA0{%hC&Yghkkm;Y-Q|7(Bz*M9%6 z{Yq*7DVgT%_MQO}Z1mm5Vu85Mih8l25mnOT0_&{;gS$upad9qK?|wjqFs3Z1KFM_DD$&|bS z2HmouO1%2$;XWlj33ogu+lU6E0o0`21(8ZZqCARtM7}AZ#rm1x1ra!WL6!s7vK>Jj zxl4ly22^EkSWCcb#FhrLMd`X=O~5J@2QwxA1V&RE4^^@UpfLr#qCr5#K!Xti-S^6R zzrd(!HZ&y@5LYoJ9|CNG3w8u7Q?Wl&@;+EK)p)3dJcU?6ZxQ^I5jq--HjvhH5K=6! zkG3e|71?sbV@l-U1xEl}>w;CGfJ2y)zXR}SJakwVfTtAnvH{qVkp`m-z}3on*+AN~ zbm*`*81)9kKxwXy*w+B-vB;FX4X~HN=ov6ttf)5yuqvE17)^kccE`S^NNYiZX{2U<_73#>Ony`fuudb=#ReHgQYJyQ;Vd6&_>r=n=fYj`+;qBi8#U=J zd3k6zwj?T*IxU(gYuvj>|Hj_Y#nQefo2tUpZ}o!J@j3C)Ou6K#hIs4jX8KjC z8Jg>Ata-4fEy;B{DMcUTe7qKL)0{l*aWNkkzWfHxpQxfugISq=+z4~tr(3TI3thXg znvKb3fft1M_SnbJM+m3~3LQlu?_3tMx;>gWozlo+JNJE>^YK6K*yG1>YG=Nd6AC=b zYPx?=^UXSjY%KUce@|m$oy43h5<@Sd_?~^>wZCD)v`4`+ zyh|31-l~tr5g%4`04?!j4C_F~eJ>}Sip-)T_5-wnsQiL2-lYAAls%pPIG+`I8=`Md%lJ zeuC@_+7qP0;p=AL{76vT##!JnqlvxtF;a~j)?oJm4s;wVm|J+upZ*Op$!&#b{B?R9 z-ZGrywucwq(sj&MMDQl++$dBZT~ceYjaEaKRH{{8TfOA+ONX4BE6>DMTy%*Zp@1&& zcUom|c`c;=V)FqKHTsta6o$j>-AHbP@&3vF!P-#1c^^DBDW*JbNPHgKnopyVS$+hN z1-8Xs>r#;x8TMJtdm_Efg1de@96$t)^glae2&vu=KrS1UEmC(eY8XNE{CoI76o=ux z0qjckpDf{&w|Oe)fw=f%JO;X|c9hCfYjWLK>c zQjgwC#o^OFjNo>8P^r7^)0{5}UIaTEyNp(#A6}E-M=y~|<)YZy1{rgXJgS+YC2DZOtHC9LrF-8KZV=yb2Fs=kXrMYnwn-y|l<+y=N)74gX;4Sv+~ zbL^6wAqRJyB-@`dv3W35m!~@7A1!_ZmZQ8B3yz! zSG#8l^ugfD3e@&tpxv1(Po1(eslek6N`+S85EUuJ3hyd*FSYEKRk z2Rze)KWP<6tvoAsbw#inLA-SJ6$Gm9;`#{|oeX~aZv%2qx~USnfPM6g9tmMH`3ma; zROMFg{D5VPMIS9~BnPKrBDQVQJbg?dk0LiYngY$TkDLYMyvxxG<$BD)=SIQ@{<=AU zAWB#+0qzB@anQK$Kt;!cYR)w= zIWuCR3!72x;Rjk_N}yQIn>X6)z;<62x5CSXzcB;qd;@AgZ5OWLmjs?a^NOiU+y_Sz z-}!kMU|twPeIpBqxOJAiXg=$L$LM>yfas%oHV>?oT21>qgR$@B zUFflDqV_~uBVX1Eyh-JbxaZtoZIy z^F1C^c37k&J0I%uj$u8JWE}D$Ggwg{t?UEbkbc33H?-daujLmVB_i+03E+_VS+ysQ zC{>$3)Dy_}Pg2b7^sw`Q-s5F$B@!=R5YQ{BjT zgTru^|2)@%*p>AYuR?!t#*cNhLbwzBS6X2#Ij>{osvk`Fl~~~Lw#8}ML(If#ACXu% z*`hwYt`kmhY#5Xb5s467uVJfb=5l{2zaw-hCu=4Nh$tlv_JY*-4H7RJ@4b9CDye*a zf%|3!t*`LLzC7fqsu8u__XQH`i;V;z@1+wL7{&r;k-YG=x_qI|E@b8==fb0NukI$^ zda%3m`iJ1heFGrF^AXBc(pthJ8vb5t_$K;tm09Z^k5SMVemq)are|?`4ISNW$%FEI zFibJ%U!|hH?!mwLVh`LqDrfwCU7KN{tD#n2xtC>`mwI?no=ul1+vJzPSn%PJP=zqP z7S`H+`;X|2a29J3w-Ux9$En$W5a!Q8+T(yvs|XLeTGuKoG>h)L+WMGhTl3MqjjLC? zy0YHgD*eX9rh2vT#A9!}_yan3co*y%L>F@O@Rkh|KT4kZ=@nB>{uNuYp+-v;GT)#? zi=rR1ogbyEh{+7PM_nAP5LOXi_cGyMZ*%QzXwxhQB@Py@&rTrB=S@y@Y33d@_6rdv z>o2nyLt2A$u^|IKB#&zsgdSh_Q1vNF`hEyf4n9{;iV$IM^$Wr$Q=RdUN!%@StrTlb zFY8v;Ln93<@6tTz_(CZbng9Or{%|RGVE6vLJw?*HDe;<8)$Cxjmm}ObZa>5pA;~WI zPBS6&^Ei9EjjoypHNP|)qpXgUyZHC#LV=7LGRQKQ61ij+JCv&iq3}!9v@jxaBCWdts*M|C;*v*RD+ zx}o^Z8mV&Xa^RPMkF8BtrRZlcy#q0#q={W14B6NGXqx8y;f8;iQB6znc}qezs>|E8 z;qV3aK;407IlQAg68rjY{_v8i>Gz8YXiLpnIxs=T6eNPRp0VD)duRFb^5#Y)3O)0F zxRBfxEX#)Sx>SEPHRnkqteFQ@l3vU@FW7->5e#P&jX8Qqm+F|S$26}^q)QP-7&o)> z6{|ktMrev2ZQURDNXcU_YqgC;laMVX#HrVM=e!Aek4n!m>{6|NE?-#VnQQLiU=%x| z*+uwkzG8}|Z>lfwQfWG2sr>mM>&55x@aU{Y*z;c@8AV0rC;FikXmimI8fW8Rm8@lC zLk-G&u?@C-a*@-}5r0dXkDH>H^lccg!H&iHxT#<6!1_$8M9F3C&micUS3+Ah7|;Nd zdZr0^-<&&I6;l{qnzSf_LO(s{sJ-YmQQPhL0byRqN71irZA>TOc3slOkv1VJ-RQzs zzqydHdC7W%&noAD#hO3h6BMcBLDf|{ua>yH;bw!lBN&Af7Zp$t31;GRk8vH88i;6l znb@rI7288;8y@SAt+DN_b1PjFf8LJ2IU@{jQT(p@HjaLcVfuF8l7Rl9RVnPqxzFpR z3(JPpPg^z-$die{NX0xyWT2JOB9-19#<>B-az(@Y|I|ZaRY~1iigthc=*v?-4S)a& zgaU=0hjOKb-^Y|cLSc6DB=v!muaeM%w7)W)9WBi`}BqM>~6k0h@t66n%BJQbljf5t$pi3iB28n^CnKzY`$9 zCbC1TW8xiPMcaC@&pAs2L|fL`acQzrZK52>WE=RvUL6&;<@Ka~dQ;=|`h1;+USZDQ zov&4`TQq)c0v*ZQ5*W?9Q) zjWoVqKzm3fwi}c;K5NsYQ-)}eZfj)ENp>jTo%tvo*f}^~!gts_k}qpApL$v~4GH6x zR6o~tk0YY7Yl&MzU8_w6aNiAx)iw3g+h~4a9wpP}4%l0~s#eGy%+GcUUS;@NcQl=E z_UC@nR=0TIKGBze^PV-{}@hi7kpYIzH4&baZi*F(~B5#+kAAIKD zjU;Py$OdtmVjpN&N1Lw3V^m#@sdQ4wS@fnR8@k7rdv6@y>iNiSL?4w#{!IUrNPc=z zutzprEYx))GT>NygmL@aU~`*HQLvtEEk+2eBBusrkl;@+R7qt3{HZn-iYlw#TcMI1t$n&o5o{ACvZB#U>p?|3z5Cnw)8}PBR>$+$)cS1vIQ=Sx z2c_)&e(W7zx|e%dY52i3bLWN`HX3q91ojo-z~M)~4lAnZ!XXvKH#c|{(QZU&H40=c zxql4GrCM}^ccDW&m1^s8q!_f!Hx)8(--N|aA5ikUr*Y2fTY%%n?if|>kg1ue-{p-% zK`Abi!(OV)k-u9qQhG0ZXDu%BHaMFmeea1yS*dcIQ{Z?YFnYn5AIG6OL;Inke(k?Y ziaZ{xq1_%rmDu%N)IVzquKqK>#m)Y_maE8u|8hD~Nq-s6n-z(Y(R{hI`(9_^kXkWk zn~p4=K90GfniPprZsY2<_9ifexQzR^3ew!6PLwpbZEqfypc4EB?S_Raodr2kEorrL zV-G$MPNVp9Ef_#;cu;cgSd$LKPal@u&vUz;PAnMtF3u!jNR(x8VOkt=*omgQ1Ef(m z%(W!QHIV}vSZn&7GftKnwmk?UP2kh+;cAUeoh7l*4(z6>+`#0SHfGhAb%pP$llSyX zQYK+i3BWsCg;z)=wsy|Fi|=j5TQl!$&uP_8G$Du2&|r!|7ImblNC1)ah|a>YsVwy| z&wkQ`#X}y{u*1xNt!#82ma0*rK7bTpT` z4>0tgZ+YxsyfG!uet0?7u5sYlDwbPvLc1-S3hdIW@rip0s=J%km(DOY=oa$zFM>LX z;L@NRA5!vbnW5u+s{X;Q`))M$m^)OZ(#-#;fn-O>_`v0Ka|`4Q-48l^ zwKp?}g;;kq41e2ax>0SzmhuTfgJG%oo;<-6MkZKyGpiMd^EC&u?lKcw*YBH zMm<`4uUTEDlq5%-3Osf7YT^Kc8srXa$H9XxBKOB8b^^BJdG`RGAN{SOq~z~k{y`Zd zd381Wnfw+edSY!X@PS6Hwi$XI^Lyv)q)$`SwAkPFd$IxI9NmZr$3Z})cW9yM046W` zrmH!MVQV<8pC7daYL2nU;n{}|yE@3tA8#5xn%e)=<5eKbMC4P_^K3`_T%nc?8I24i zg*CE;m$oK67R~2ULVLc46m#mkcpX4l8mqL*)SukHRp0G1g2a52j3Q z`U+YdG}Gwk@5b ze+Tj}9hNV&=8%WzO)-9+@jd~8$6>PKnGgDeEs6)2*d~%eg}CLPg{=dzA5`7Ca^WjE zr`jXdh)#REue{b5s?x4=DMe%4agibk&UthKmrVE$#r%${$9+Y{`WNd%CYQS4aR|}Z zI#fAVjF{6$n~+L^tF*(IRY_P9)R#)<;__b;S!Gesp|znZ=cFB>i_7O>mCs5Tq$|Rv z%?bi&FwVTFs^%4e^*j=53_PX=&k}^+s@h)LXjx4t@kQCne!6zm*wq1D1mpmcV#5_(2A_xfwMA%7+$@4#nlmS*$wf~(ig*hU1iNNnyx;V ze9KiUsjRN;L1BCJ9jYjn2*zFYs#855NKZ$tu6=aFTXsM^sP)Ap5G?|sT8azK?qrd> zgIhnMR;^LD&OisKXUu*-Y>NNkea)B$#i^iY+m0YOsJ}ejZcDB8_vu_V+ZV8LHb$k@ zPse4ReEJ10Eb~5`al58&*T{t(N$U?gom+i^M*m{jkR!?^k5!2)HMql{;O(3a;L*9Y zXQgxHh$#~=4{EBg&tB>HZ1LZt7|(86?XVprlg8TD$&4Q+;~ux zETJsM{d3(A6Om2h(VZgo4z&wZ`Ob$I zoW}M=K0lOw$|~@ez#v;$R)5EFJGf+td3A91seXi^1GY~<-^Bx;Q}?dnbMMpZGr2&zbM(uyjKUcaGy2tg_ zQ~kC(vjd~c_epjFLL)oi97zq4yXnbhhl=D8d53_i6FSGb!~!+8#cY*vm|h-~Hjjuj z59(oE{#nSZOk(&}cxg~VyCT~51H$IL4kEb9Ol+Athvs@u&nEir&(&*_ob@-2wk((@ zB!@d8LrOTzYgD4s?vPD$sp$9Q2speTn28t*%@<-Kc3$mZefyMuD`d=wG~QdBxcDB? zri0jW&Fh}iA`ZmHXD0Y37^Yq2A06o1AxyxAARzuf6aK3FC8t;;$7UzO7Yn?U=&NnXZ7$;K*;F|;I9gu`P00vkO|`Boe?6$6in1NN;QkB( z;c}$B3m_m&w`_l7)RI=28%2XR0MRdm2-<&-!CmuT?sUGTC~aP>FpM;>{BQJr%E>j%&z z+CjRSAg zs-t*laBPyqV>7?=;~JUb6N+sIp6l*amVZ$kU*S1rG`WweHI-aUuaia2?A*L20sLgm z!-cyKx6Ro%d(drB+@4N(=${uP`_7GX8LJMV(N4I14^r62 zSJg!xEtf(0os>c6ZR!^sYxl5X(CD9rgj&bRhRI)CKI{0OTk(k@?4_57pn2@q&F}5oNlX9VU;OY} zKRu@MX6({_&PPF1Cih^ZW}9vy-Lq*R67@+SQKEbjvT5fdW@fSYz3?OTE6Seyi^CPSP*%c$3J`5a4bs+z`@yV>5Rkl{S|!y z7T>jL7`pbX^8jx-ASnX*B%P-#5#ByEt{FoRT7M^mwc-f zn6zcByueI)xq!7OX2!nzOH zfQ%#!X%FNsozvk874q+0y6%))#!PyJ)t4@I$>WLFtMqhQm5Nh9Ad3j^Bd%x zsfnMs@&`)VK;Oz?xK7(dKT%iGuW8_Tgd({7qBzqnq9%cFF^BV@ z9Oa#QKP5r9S@)h=b$q>mC)&s~cs{yYOjCUy*ep%~O;&Ka(arm4?8Ol8&=$Qz;P__m z?RzH$IXhR+ zka`v(17;W&Lgd2(!p1kwcl7PlL3ELBEv%HYOD!F-!Ii<+^WWJ;PStN&crP@rPHo-a zQ}=E}A$@j0NpHjf*X@LlVA@?pEbL6#xd{4QAOu?^^y%OAwBlCN8}Y+os7N0PM~~7C z{@QB17;HVhQR`}XY0D9d`NNB1Lm6H%rQM~;54^$G2QddBi66V-BtqgzZ8y9Mk{LiN(aBb8o`#Yn1q?u@6|{2Ta6U z7X>=kpV!>AG3-O`(a_-UD(a0`0C8pJXzd3R?rJWHk(a(%8kRW=<8AwNh@D}mTxw2v z{&~Kn(`9Epx$Q(eHSAEvnc90(r&?yyNi$b=b$a@_@NQT+VrNFTDY_MtUQTnwyL-8F z*05m`HuR`cygJBb^r&M7Wi`Pc$~_cz97GPyIP>G>8wEWTeTufL7SL6Oo;x|APl*sh3|}tw=+HzG7J`M{OI@z@N@*Rl{VJ- z;e1|3gnex~G@sY~-?PVNPW6uThHVKy9Ib?ANTPmfw)`Z@&1ii3O~KO3L?#5i0{Yx{ zLP9YYb}h|Mdm;LD78Lcl9}#m8FWlzo^fT3rO^)5eiw6JtJ`!ezv_*Mg>);@CbS)z; zejwZ*zMA7rXC|=?(crJ=s+YSRY-vn`A4x^R4B2~0x5Yxl(=wFw3R;+mKN$V@*tXn+ z@hZuYC<|S{4+SppIw3?Hc$uu1S7i7fa3}r*ib??YcjuT89xgaM6%Aem6fFV1iWl{5 zf-Zu)UN%r$MOu>m5(lW_d~KmQ6s^>(VqOjO6DGPT=oJtsk!Sm@n(^rK%epDp+mK91 zG}ZFWyZx4DZaW$ku7`~M8-9L@Q$K!2;zH?dQ~N@7=&oBDtyl`d(b5S>_HEd}>7GLU zoaj@2*ZmI_$hD+DF&|Igi4IBchY&Bh;z^DqeLQ4uAF*&-e_1y`z|YLVjC_&wtmB5* zxTS^h&RjHQKy;aayQy(*wlkfy@lQy$z9Jy* zO8DC?cX*aa8G&*ZvT*W@@MXWyjfp>pFE|8J$zSMiJSN-IpRo-Y$N)LL`kA)xe1|rC z*JiGbwtCx%SbRIF*y-QU0Vwbykrt~&T1@v z8BQ#Er$eM8rs9Wea*0-&cbbnrkr-nl@d{ze>l*o+f0E~N#?1K1P3!1 zFT@>!7?~wh6NeF^!KXbyR{u~XZFf|Q>;Bx>FYgGD6jTcmtdKZ2G46~v$%CRmPIf<% zaMb{IL#<=4m-|+PxF0{R`!}zM#Z??;SJ_EozZD@`K{Hvsyrkh&{iRC*UDOL9R)Z6M zJ_4$qA9{H7cWSsgU#Nm2dIFKf1xJ^F3@k)6hjtYeb;=#8mbiYTD<{NE^zawLTk;QZ z#JEE~!GuK&u0`W+rL(4*?^KL9sLi!;THJXTI?|s`E|Kob}*~%;9UU!&7XM5wjH1S{BKyqT) zWoK<67p5sA!8_A>S`D^vYLIox{SVs7x7&wgh2G^6v8tj*jb_LZFG>ap&MJ|c>oKcl>-p zcG;?KW8`x`*{`i^?mL347ra21H7B&>cO}00WAw?4Y0^_m`ttESY|&@6cyQ2(>Evye;L!G^=f z;m3N*&E@7iA{HP;zZblH?N}F)s?>O$E`o1YJKyY^pVO~r2475qiidKlW@i06yti+1 zXbK8hYDFtoIjy;Yt=x`vR?stWXGD8y*`b7_oIpA%7+wmeyZ zZm9JO>W?KEhNU*!|N2@M0Ld}nNJ;Grveo2L& z2~nKxCWStOI(qphLp98CBUIH-cKs!?qLH_reOKdNW^$hW%)1m@udBZ9f+l?n6Ld{+ z6C4GfS~>#{po7p=#jnAw7njRg=<9|3v=mh)j_=$7+IiJ~0WZLymBix_EKDu~W&1Og z%2lMfA^jVh(quSElE4{#2O6dK`&kp!g!7zjU5vSO?Tqa7K(^$&FFvxXXu6@h>bbWH zwHPNHyO$zq)fwv(t+&6Pb~61?+riMPD_1yn*&T~fezt-PP+&u`QjfuB#e6*?g?6PY z6K@qWEwSehQaP}I`vgvsFx-pq2Yu$u^SOlYafT*H+qA(WZOx&A?MTMd(KbrI$~XV#rZIY0V#13QCVzSTE#G0- z<}xkH!>v{uEg_{Q_E-ky5(izdf9kMCmG|;|?h9d&kbGn1S1W=`sT0)df2+4J*FPT& z+o8T;5Hx*L_rcv!uuuC{K;@d7JBhyDi4;~LX5jP3=bI|!?9C3tVQ$Nd;MOlNF|N9+ zk$F1=(imTrTbA*Nq$r^8PO^rE`X6R-4ro89@842OAH$@0{#)P67yUCMlT#<&HbwP{ z{rX?`?tUVi@mK^-e2a=q=j2mrOp~K#*rzrLYx0=%8n?Vs%cr0xCg)5k?a2~h>xrBL zk+vJ5G>RW8=Pyi6sX1XWi){#--?C(*4$syMiHZQ0jCcYy8#EQl>7aLQx)Q9NnRi;<+W=7-1MKd-zLmmDa*v8J&@R zGRlOb(*j%e2kV|zRpgnDH*b@~+$!rp_~Bs!M&fUI{9A#WVA%=tZf0IpC`U>NoxKN! z!CkqDNQB0EDES&`fOKB=47F}NBVk~t-T0M#y1)Z*j|+(d@s;ZMTSTqL6GMIi;ZWfs zDdjO{gpoLSzhTH``)j`n5+p@N;)>|2Z&nZshiYVmQ?+BWeg}kT39fJ|b8%X0W-%2O zJBTU{dy5at)@y4z`cLba{bUuL1)YLt_Y(%HsZqt?0`@Myt8aH(r*mYcwxXVxRR>~n z3MxCZ+u;8ou<@@g-lcbqd>$Q4IM4wlI>&@FR9lgZSNFWubGCE^_ zb8aKtx#gIhjLN63p{JC{0;a!LbJ!1`ny6~|affh}kO#X4-{IT%6Nql@cFSj8=Oi-( zl&*R)qKDHa*y%qZba9PXwMQFA_wbQMI;>6itl2{Me9C?TOT0`(vOhJJt=|;bN;#!{N4eJ=^-HqcIJ$vmCpHVUG?uBK|$or zKV=zEloW@)SO)ecq+BvXZqJb1)j9rriu5{D+y7KX!6SiO&QJ3*aCO1m)9aVXQIB*= zJk7W=b+QJcK>AkD2jb6ObslxrT{b`d_096}xSywWAJHZLJh66=&Q9>F^VS!iz6P6> zzR?)g?Nth@;gAqDHMuU};rBkYQL;zdpA|de1g{j1PGA5tvRfNJW2~x(T^)sdTPUFR?-B9@zPw zJqW@B?gfHyyBT&|IU?@v76tEyCq>3&vYoG1u1X8nR%bA_=+`(Wqa~o8Qn;x<=2Bu@ z2@C-0O}H;eD4f;|>9t}bL5L$fxb86)yS+39UXc{O4us9(`Hq6~Si2WTpTRma1BdW$ z!RqHoYa@^bq=XkYJLlD29OY7mT|p5FHb@JKP<_|AjXcx-zmn6<=$lr$VRnG=Kt}i6 zcKs_tF0<~%*O(HpXFb6M{?iM;<4U13EFeF>_VZ4V#M^=lzxU^~vL@hPy`8>vev&0x@kt_TG}*EPZ@tI|k#4JU|z;P}`b@Q(%{!~*bE|8roP9`yPy)--rApH2iXIJJ$yM+Y)sxxq&VE(kdI z&_W5l54s)~aTs|(#oURop@5(9qCNwTd<5h$m|(b@iH*X_1PA=4k@J%k1O$ZWm^|m^xeP%*(|ds89;S2<&vr&IovsMM?PCvr@xo?uHJe5V+=QSDGE zWwiKe_6c^>RQUvJTM~UDmfaQ$MJ&&WMhVFvwP5Q#2pG3bv1Akl1q$#@ z5swr_B#XLd6bZ%T)GR6Zf*V(vDEN^<5@i;nd%u|}-Pb8kDeO{kRaPfdj&k&r$13rS z`UTaH$)XZQP3Y`YN zwuuS@&2+_wS^&ac4z@7r7ysi<)q`{tO8T@NZ0!=6H9d48jp%!U^JP|9_tKj^y_-c7 z(05Vj8lqwW>%al|TZQ~rz9P)so&7Kq$DIF?Gea;xvw?awoxXFf(nSLZy^oC&8y#~h0IwirGB zIVg>2$NGPN=BroL_sWo2C7qKBke#zoRW`&V9^&~}F%V)t<1SquD4nQ+bqJZ2D6b$z zz}wyQY2j--jJ+{lFwrjXhCE-Zc<%t85>Qr)*2A;d*7pSX#tZk>d=BX0Y+#m)3IDs_ zfD7Nl;Klt72*hOfxj687E!q8iLO^+^B0t)*yaj%ao07@=%+8C38~NIyZhyXS*pX3w zgwA~h>&DV`W5=mAqwVCHQPPPYPcx={4T7Ecb!d9DuYqIxs3(vd+h46i-a5psgZDb@ zUI)TDVAf&uP0kaMftDy6*vKL+lukj;(tczEEiwoD4wIFLGD8Y2znsMScH@&l3}hV&MU z(^}Za5wQN)fy)DDev?Cg(t?mXouX;L?Fsv4$?|4Gu&O2?VA>T9+W?R_69eed~^CUdW?=N(I z4#YH&ks#|c5O%9Rt_2+7pDlEQW`sPk4buTq=ch}MP5DMW+%(@uASSlb$3Pj0P4qD^ zrNjpMSQ~&^`uRAB+4(1?V+#oLSb|&u_yu~nAwVnx#&lpb#&nzj#ynsIb4dn9FfGGc z`deYpPPnj7IG~h~aL?)y@}p$*4RheTUE9XkYY}MG=a7h z2!HxBLgf7jW?5hvTJ>MVjH{pVS3MmVRGe?87M6}~Y~8?h=kDi*b4572wNp=U(42n{ zD_=p|qT2*Fpch;N^FWROVWN`xNhRJaXCJ46UJ!qMN>CZ2ycN!k`F2(+WUOh_pZlF- z$1x+M>;<`<$M5tcna8X52@ML+&`SoY%2>3cEN#V|6U#YwMA=gOr$Gpbu&cxeCdzqQ zv3f8;!WN=#SlTtIj7JLsDY&{(1MW4tx2v2qSP?vi^|FPt9Q!zS+Aw$-$K52RY9eWT zk#`F$3b86X)kS4-k&C5mB)1pFB>N8jI_Dzmcx7n%fsk8I7PBm`Hu^L~mPu4U?hn&S$kK|B_Z~v3T zBFRu~KYM>0l`&uXa&z>+_*s8!>rBo4)xAmEfBI%*TN-W6Hz0mj`)Mo7$4YuWIDSjGR=L0?fe2KgKAwfbupSmd zIu0z>>sW2Et)y(Q5DIDEzR{0+WAz#~iS>*fGs1T;^l^<*s9tF*B33Q74ZWztIlL3R{+cbW@w@8#jwzE~F*m`%3e+!& zpI^NOqljgV$NSYk*7RarLexUK1l-ExsnT}SdLW6$0!nUW3$IbA(noKB$m$1YG#67W za=q4&L)pmH-RSLz&ySkSZXy&@-lbjf#_qV+Cg5?D9--Ti4Ld*UZh7|BthxB(fd_8l zZnI3J^X%lpN2e6uB*?A-T`cmjF)W?{S;{bO_{*Tj(>705N-{qR)$}mr0M@tselJJ^GRj71fHw?|IM!)-BP@lI#A(Sv()Qd3~ z)8c*=stn|pJE8a0S$zdL{r+g?jbQ41g~fx#BL45>IR9?qX;nLKeG;{O8$r4``lQF# zzm*TWZbB-S zs`ykTNK^lw?#CdwKZIE1IHh{*yikZL9b%H4KVQVzumh-=wnTHdSx0acTuT|rO*=D4 z_@I@1K;ixs~JpyVkvC63VP05I?U7!Pv@y1|Sib{u16JA~|3!LA{KxC~S z2g1qZLv84BZ!8mu5wO@Xp=1M}a-H0&AkWn5Mi(;7;axhYYP~hJQ^vDS23hW7gECIF znQ`=L7X@Z#!lo^KNJbbb+r{|P!FW@J6d#zq5w6<*7o<6v)r%qeiB(bxf)$~B&vxBX zAGm30`^iF3+1P%rV}p4OLY7QamfC@@KZA0Yr6P4S`K7_it@2R5s-2)9gM2m^?6X%m zG~Cp$H)97Xvm&9<1n0L7^f)gp^LnAw(|*%Th2oSF76)ea@y`2L5~A|VFB?SMH&PM76T-CoH!{hHOPmizz{clg z1UNqH6>O(%_TB265c7VJ?cpn5{`v0afRhosq zXMSKK?gd{DFgocHaZsG+Wb6n(u#UiL#Z(fAaUc`KAWdQE7|{2fE26=^SN&kNK#3%9 z9vY7wNdV3k0tq!l0g;q-^l7PM8`IWwy zvp2r?p4;o2?YqH`I;DqSw&PBLW0?r$QV)5YhS`Qs23r5R=R5u^6|u#kW;t!UY@#HV z<^qgP!fdD;efoXnei*hy|8xhFo!6`F7;a)9rA_H7xk}8Z#@MA|5bG1f)qOAoe#sP; z;9oc=iqMgPz&lJYdJoAepQzueC#2=`?;Z*Sl_3_eySt4F=XavqZKVo~# zo&@dr6mQsIuG@_H4jG$Cj{GOhX$JlDQJ}XCtbb!jJjLySbcn6!aqVm1x3?yv3U=+6zvX&f{eQ~2)X+oeaQY~!w$M7_8!&y zhvV>>FaEV9gFVtSR*`7lZPq~cYyHk6%c6$aH>x)ha$ED&z}`-TiG~=e;+ruZmXX|^ z!V}+Dq>J*#7TN^d4O{42&TZu-8(mC;oE~&;1gk%9f;MJKF-?W5S2GT^nZ|rD@ojsQ zP1t;S>0{}DNdFIO8~C=<+RaBHsNzR9FZEBzxwN4!UM^yN@~{v3MWks5zIz~=bEUKv zc_?!V3-xZr^8fpw`19yN)g#uPa_U ze0apLv`8_~kdS-YP?6t7KWC=PHO?KAB|uZD6k5`H|0dTTZWX>*mJK~Cm#p00fHlH5 zIgj!$otzrr3H4o*VqB9Br`tlqt;e(~hgOff+IAUGT36M(`L6r5*IZX8o^(Oqg=&vG zZADv(WZ5HcD#U{pE3fvnbr}U@ud0q?cjBAu1J}bM67CCQd*bO+`;2p!qH4>YCH~mQ zEtqFqFPKGP>o#)`4W$B)n_=Rww{K~lMkUSdrno-NN{-LF+#;bnKdoY&WxZszL}v}G z5Nboa+Z;_#-j9wK-&SolE+y`n@^}69-Q@JrXu*z;O!5i$mJqYUR6X8L)_|L%akR;k z|Ms5Xed)!}ZShT38T`4miOE!Ze8A0Je!I{y4E~&XM}ad+{rQC!<~oEYMPqmkH!E%= zo#9};vF*V2N&nrM`TN6NLg>r=@U9K4S?xjMLtdN}4LK%E0^y=EB!U@@3 z@It=lag#n-D%}Z$?f5|&KI``1K!m8L+PfoSdYTjGYe~cUqN;yi4#{6Ut6i38oD@Q- zv&;@PHTkYm+wS4~D~awvyPD<$-gPtS*rJjN3Oz<}^&EFHRW5QmAYPmZUSR7;)5jZT z1>KMQTOL}J9`c};7)8t_5;uV@sj=bCOXQ@Ujj8Feh~W14rkrf(OXA)Ap17cfF;jz30?kM>zu-M4F-~HZv@72sRp6l z_Ig~hVe?#7*W+j97!}{h4?V^YNTxgQCWZzqmHLX^85^5&rZOLg0d*UERmPrU}~xECq$@iQDO$aSv$(C@Kh{O?hnMhn}@ z#M#mK7|TJp5<1k^X5T8D85@y7JF$Pp&$s^IlyzcASmv>7d%$}nxPrLtt8AJ{@Xmgb z=}jMvT@?5wX-1w;-!QVj(s6lNtJ)&WRMhs=q&L<%19E!IiV+V?3#M2jZ^V1&+;P4Y zXO%sD54GzL^^{muTw5HLqtZ)grVa&-TKra$Ip?kiCCu2=CS3XV&on8fN1^9&P5bfO zL|=KR4F3XbftdP`I2);Ps0qI1WxDdAsxbT1O#^dzD*X`yQM~5MuP_e%@JIOJ5x>7? zi`~2R;*pnLO(xCi^Kd&U3^LVceQ${S9QguG@3|oB? f Date: Sat, 9 Apr 2022 12:09:01 +0300 Subject: [PATCH 9/9] fix setting `initialTransform` --- src/shapes/group.class.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/shapes/group.class.js b/src/shapes/group.class.js index 28c75cc9960..2a912855eb6 100644 --- a/src/shapes/group.class.js +++ b/src/shapes/group.class.js @@ -501,6 +501,12 @@ // reject layout requests before initialization layout return; } + var options = isFirstLayout && context.options; + var initialTransform = options && { + angle: options.angle || 0, + skewX: options.skewX || 0, + skewY: options.skewY || 0, + }; var center = this.getRelativeCenterPoint(); var result = this.getLayoutStrategyResult(this.layout, this._objects.concat(), context); if (result) { @@ -517,11 +523,6 @@ // clip path as well !isFirstLayout && this.layout !== 'clip-path' && this.clipPath && !this.clipPath.absolutePositioned && this._adjustObjectPosition(this.clipPath, diff); - var initialTransform = isFirstLayout && context.options && { - angle: context.options.angle || 0, - skewX: context.options.skewX || 0, - skewY: context.options.skewY || 0, - }; if (!newCenter.eq(center) || initialTransform) { // set position this.setPositionByOrigin(newCenter, 'center', 'center'); @@ -537,6 +538,7 @@ width: this.width, height: this.height, }; + initialTransform && this.set(initialTransform); } else { // no `result` so we return