` element.
+ *
+ * If you are creating a reusable component then you should be careful when using `"*": "$inherit"`
+ * since you may inadvertently inherit a setting in the future that changes the behavior of your component.
+ *
+ *
+ * ## Triggering and debouncing model updates
+ *
+ * The `updateOn` and `debounce` properties allow you to specify a custom list of events that will
+ * trigger a model update and/or a debouncing delay so that the actual update only takes place when
+ * a timer expires; this timer will be reset after another change takes place.
+ *
+ * Given the nature of `ngModelOptions`, the value displayed inside input fields in the view might
+ * be different from the value in the actual model. This means that if you update the model you
+ * should also invoke {@link ngModel.NgModelController#$rollbackViewValue} on the relevant input field in
+ * order to make sure it is synchronized with the model and that any debounced action is canceled.
+ *
+ * The easiest way to reference the control's {@link ngModel.NgModelController#$rollbackViewValue}
+ * method is by making sure the input is placed inside a form that has a `name` attribute. This is
+ * important because `form` controllers are published to the related scope under the name in their
+ * `name` attribute.
+ *
+ * Any pending changes will take place immediately when an enclosing form is submitted via the
+ * `submit` event. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit`
+ * to have access to the updated model.
+ *
+ * The following example shows how to override immediate updates. Changes on the inputs within the
+ * form will update the model only when the control loses focus (blur event). If `escape` key is
+ * pressed while the input field is focused, the value is reset to the value in the current model.
+ *
+ *
+ *
+ *
+ *
+ *
+ * angular.module('optionsExample', [])
+ * .controller('ExampleController', ['$scope', function($scope) {
+ * $scope.user = { name: 'say', data: '' };
+ *
+ * $scope.cancel = function(e) {
+ * if (e.keyCode === 27) {
+ * $scope.userForm.userName.$rollbackViewValue();
+ * }
+ * };
+ * }]);
+ *
+ *
+ * var model = element(by.binding('user.name'));
+ * var input = element(by.model('user.name'));
+ * var other = element(by.model('user.data'));
+ *
+ * it('should allow custom events', function() {
+ * input.sendKeys(' hello');
+ * input.click();
+ * expect(model.getText()).toEqual('say');
+ * other.click();
+ * expect(model.getText()).toEqual('say hello');
+ * });
+ *
+ * it('should $rollbackViewValue when model changes', function() {
+ * input.sendKeys(' hello');
+ * expect(input.getAttribute('value')).toEqual('say hello');
+ * input.sendKeys(protractor.Key.ESCAPE);
+ * expect(input.getAttribute('value')).toEqual('say');
+ * other.click();
+ * expect(model.getText()).toEqual('say');
+ * });
+ *
+ *
+ *
+ * The next example shows how to debounce model changes. Model will be updated only 1 sec after last change.
+ * If the `Clear` button is pressed, any debounced action is canceled and the value becomes empty.
+ *
+ *
+ *
+ *
+ *
+ *
+ * angular.module('optionsExample', [])
+ * .controller('ExampleController', ['$scope', function($scope) {
+ * $scope.user = { name: 'say' };
+ * }]);
+ *
+ *
+ *
+ * ## Model updates and validation
+ *
+ * The default behaviour in `ngModel` is that the model value is set to `undefined` when the
+ * validation determines that the value is invalid. By setting the `allowInvalid` property to true,
+ * the model will still be updated even if the value is invalid.
+ *
+ *
+ * ## Connecting to the scope
+ *
+ * By setting the `getterSetter` property to true you are telling ngModel that the `ngModel` expression
+ * on the scope refers to a "getter/setter" function rather than the value itself.
+ *
+ * The following example shows how to bind to getter/setters:
+ *
+ *
+ *
+ *
+ *
+ *
+ * angular.module('getterSetterExample', [])
+ * .controller('ExampleController', ['$scope', function($scope) {
+ * var _name = 'Brian';
+ * $scope.user = {
+ * name: function(newName) {
+ * return angular.isDefined(newName) ? (_name = newName) : _name;
+ * }
+ * };
+ * }]);
+ *
+ *
+ *
+ *
+ * ## Specifying timezones
+ *
+ * You can specify the timezone that date/time input directives expect by providing its name in the
+ * `timezone` property.
+ *
+ * @param {Object} ngModelOptions options to apply to {@link ngModel} directives on this element and
+ * and its descendents. Valid keys are:
+ * - `updateOn`: string specifying which event should the input be bound to. You can set several
+ * events using an space delimited list. There is a special event called `default` that
+ * matches the default events belonging to the control.
+ * - `debounce`: integer value which contains the debounce model update value in milliseconds. A
+ * value of 0 triggers an immediate update. If an object is supplied instead, you can specify a
+ * custom value for each event. For example:
+ * ```
+ * ng-model-options="{
+ * updateOn: 'default blur',
+ * debounce: { 'default': 500, 'blur': 0 }
+ * }"
+ * ```
+ * - `allowInvalid`: boolean value which indicates that the model can be set with values that did
+ * not validate correctly instead of the default behavior of setting the model to undefined.
+ * - `getterSetter`: boolean value which determines whether or not to treat functions bound to
+ * `ngModel` as getters/setters.
+ * - `timezone`: Defines the timezone to be used to read/write the `Date` instance in the model for
+ * `
`, `
`, ... . It understands UTC/GMT and the
+ * continental US time zone abbreviations, but for general use, use a time zone offset, for
+ * example, `'+0430'` (4 hours, 30 minutes east of the Greenwich meridian)
+ * If not specified, the timezone of the browser will be used.
+ *
+ */
+var ngModelOptionsDirective = function() {
+ NgModelOptionsController.$inject = ['$attrs', '$scope'];
+ function NgModelOptionsController($attrs, $scope) {
+ this.$$attrs = $attrs;
+ this.$$scope = $scope;
+ }
+ NgModelOptionsController.prototype = {
+ $onInit: function() {
+ var parentOptions = this.parentCtrl ? this.parentCtrl.$options : defaultModelOptions;
+ var modelOptionsDefinition = this.$$scope.$eval(this.$$attrs.ngModelOptions);
+
+ this.$options = parentOptions.createChild(modelOptionsDefinition);
+ }
+ };
+
+ return {
+ restrict: 'A',
+ // ngModelOptions needs to run before ngModel and input directives
+ priority: 10,
+ require: {parentCtrl: '?^^ngModelOptions'},
+ bindToController: true,
+ controller: NgModelOptionsController
+ };
+};
+
+
+// shallow copy over values from `src` that are not already specified on `dst`
+function defaults(dst, src) {
+ forEach(src, function(value, key) {
+ if (!isDefined(dst[key])) {
+ dst[key] = value;
+ }
+ });
+}
+
+/**
+ * @ngdoc directive
+ * @name ngNonBindable
+ * @restrict AC
+ * @priority 1000
+ *
+ * @description
+ * The `ngNonBindable` directive tells Angular not to compile or bind the contents of the current
+ * DOM element. This is useful if the element contains what appears to be Angular directives and
+ * bindings but which should be ignored by Angular. This could be the case if you have a site that
+ * displays snippets of code, for instance.
+ *
+ * @element ANY
+ *
+ * @example
+ * In this example there are two locations where a simple interpolation binding (`{{}}`) is present,
+ * but the one wrapped in `ngNonBindable` is left alone.
+ *
+ * @example
+
+
+ Normal: {{1 + 2}}
+ Ignored: {{1 + 2}}
+
+
+ it('should check ng-non-bindable', function() {
+ expect(element(by.binding('1 + 2')).getText()).toContain('3');
+ expect(element.all(by.css('div')).last().getText()).toMatch(/1 \+ 2/);
+ });
+
+
+ */
+var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });
+
+/* exported ngOptionsDirective */
+
+/* global jqLiteRemove */
+
+var ngOptionsMinErr = minErr('ngOptions');
+
+/**
+ * @ngdoc directive
+ * @name ngOptions
+ * @restrict A
+ *
+ * @description
+ *
+ * The `ngOptions` attribute can be used to dynamically generate a list of `
`
+ * elements for the `` element using the array or object obtained by evaluating the
+ * `ngOptions` comprehension expression.
+ *
+ * In many cases, {@link ng.directive:ngRepeat ngRepeat} can be used on `` elements instead of
+ * `ngOptions` to achieve a similar result. However, `ngOptions` provides some benefits:
+ * - more flexibility in how the ``'s model is assigned via the `select` **`as`** part of the
+ * comprehension expression
+ * - reduced memory consumption by not creating a new scope for each repeated instance
+ * - increased render speed by creating the options in a documentFragment instead of individually
+ *
+ * When an item in the `` menu is selected, the array element or object property
+ * represented by the selected option will be bound to the model identified by the `ngModel`
+ * directive.
+ *
+ * Optionally, a single hard-coded `` element, with the value set to an empty string, can
+ * be nested into the `` element. This element will then represent the `null` or "not selected"
+ * option. See example below for demonstration.
+ *
+ * ## Complex Models (objects or collections)
+ *
+ * By default, `ngModel` watches the model by reference, not value. This is important to know when
+ * binding the select to a model that is an object or a collection.
+ *
+ * One issue occurs if you want to preselect an option. For example, if you set
+ * the model to an object that is equal to an object in your collection, `ngOptions` won't be able to set the selection,
+ * because the objects are not identical. So by default, you should always reference the item in your collection
+ * for preselections, e.g.: `$scope.selected = $scope.collection[3]`.
+ *
+ * Another solution is to use a `track by` clause, because then `ngOptions` will track the identity
+ * of the item not by reference, but by the result of the `track by` expression. For example, if your
+ * collection items have an id property, you would `track by item.id`.
+ *
+ * A different issue with objects or collections is that ngModel won't detect if an object property or
+ * a collection item changes. For that reason, `ngOptions` additionally watches the model using
+ * `$watchCollection`, when the expression contains a `track by` clause or the the select has the `multiple` attribute.
+ * This allows ngOptions to trigger a re-rendering of the options even if the actual object/collection
+ * has not changed identity, but only a property on the object or an item in the collection changes.
+ *
+ * Note that `$watchCollection` does a shallow comparison of the properties of the object (or the items in the collection
+ * if the model is an array). This means that changing a property deeper than the first level inside the
+ * object/collection will not trigger a re-rendering.
+ *
+ * ## `select` **`as`**
+ *
+ * Using `select` **`as`** will bind the result of the `select` expression to the model, but
+ * the value of the `` and `` html elements will be either the index (for array data sources)
+ * or property name (for object data sources) of the value within the collection. If a **`track by`** expression
+ * is used, the result of that expression will be set as the value of the `option` and `select` elements.
+ *
+ *
+ * ### `select` **`as`** and **`track by`**
+ *
+ *
+ * Be careful when using `select` **`as`** and **`track by`** in the same expression.
+ *
+ *
+ * Given this array of items on the $scope:
+ *
+ * ```js
+ * $scope.items = [{
+ * id: 1,
+ * label: 'aLabel',
+ * subItem: { name: 'aSubItem' }
+ * }, {
+ * id: 2,
+ * label: 'bLabel',
+ * subItem: { name: 'bSubItem' }
+ * }];
+ * ```
+ *
+ * This will work:
+ *
+ * ```html
+ *
+ * ```
+ * ```js
+ * $scope.selected = $scope.items[0];
+ * ```
+ *
+ * but this will not work:
+ *
+ * ```html
+ *
+ * ```
+ * ```js
+ * $scope.selected = $scope.items[0].subItem;
+ * ```
+ *
+ * In both examples, the **`track by`** expression is applied successfully to each `item` in the
+ * `items` array. Because the selected option has been set programmatically in the controller, the
+ * **`track by`** expression is also applied to the `ngModel` value. In the first example, the
+ * `ngModel` value is `items[0]` and the **`track by`** expression evaluates to `items[0].id` with
+ * no issue. In the second example, the `ngModel` value is `items[0].subItem` and the **`track by`**
+ * expression evaluates to `items[0].subItem.id` (which is undefined). As a result, the model value
+ * is not matched against any ` ` and the `` appears as having no selected value.
+ *
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} required The control is considered valid only if value is entered.
+ * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of
+ * `required` when you want to data-bind to the `required` attribute.
+ * @param {comprehension_expression=} ngOptions in one of the following forms:
+ *
+ * * for array data sources:
+ * * `label` **`for`** `value` **`in`** `array`
+ * * `select` **`as`** `label` **`for`** `value` **`in`** `array`
+ * * `label` **`group by`** `group` **`for`** `value` **`in`** `array`
+ * * `label` **`disable when`** `disable` **`for`** `value` **`in`** `array`
+ * * `label` **`group by`** `group` **`for`** `value` **`in`** `array` **`track by`** `trackexpr`
+ * * `label` **`disable when`** `disable` **`for`** `value` **`in`** `array` **`track by`** `trackexpr`
+ * * `label` **`for`** `value` **`in`** `array` | orderBy:`orderexpr` **`track by`** `trackexpr`
+ * (for including a filter with `track by`)
+ * * for object data sources:
+ * * `label` **`for (`**`key` **`,`** `value`**`) in`** `object`
+ * * `select` **`as`** `label` **`for (`**`key` **`,`** `value`**`) in`** `object`
+ * * `label` **`group by`** `group` **`for (`**`key`**`,`** `value`**`) in`** `object`
+ * * `label` **`disable when`** `disable` **`for (`**`key`**`,`** `value`**`) in`** `object`
+ * * `select` **`as`** `label` **`group by`** `group`
+ * **`for` `(`**`key`**`,`** `value`**`) in`** `object`
+ * * `select` **`as`** `label` **`disable when`** `disable`
+ * **`for` `(`**`key`**`,`** `value`**`) in`** `object`
+ *
+ * Where:
+ *
+ * * `array` / `object`: an expression which evaluates to an array / object to iterate over.
+ * * `value`: local variable which will refer to each item in the `array` or each property value
+ * of `object` during iteration.
+ * * `key`: local variable which will refer to a property name in `object` during iteration.
+ * * `label`: The result of this expression will be the label for `` element. The
+ * `expression` will most likely refer to the `value` variable (e.g. `value.propertyName`).
+ * * `select`: The result of this expression will be bound to the model of the parent ``
+ * element. If not specified, `select` expression will default to `value`.
+ * * `group`: The result of this expression will be used to group options using the ``
+ * DOM element.
+ * * `disable`: The result of this expression will be used to disable the rendered ``
+ * element. Return `true` to disable.
+ * * `trackexpr`: Used when working with an array of objects. The result of this expression will be
+ * used to identify the objects in the array. The `trackexpr` will most likely refer to the
+ * `value` variable (e.g. `value.propertyName`). With this the selection is preserved
+ * even when the options are recreated (e.g. reloaded from the server).
+ *
+ * @example
+
+
+
+
+
+
+
Color (null not allowed):
+
+
+
Color (null allowed):
+
+
+ -- choose color --
+
+
+
+
Color grouped by shade:
+
+
+
+
+
Color grouped by shade, with some disabled:
+
+
+
+
+
+
+ Select
bogus .
+
+
+ Currently selected: {{ {selected_color:myColor} }}
+
+
+
+
+
+ it('should check ng-options', function() {
+ expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red');
+ element.all(by.model('myColor')).first().click();
+ element.all(by.css('select[ng-model="myColor"] option')).first().click();
+ expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black');
+ element(by.css('.nullable select[ng-model="myColor"]')).click();
+ element.all(by.css('.nullable select[ng-model="myColor"] option')).first().click();
+ expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null');
+ });
+
+
+ */
+
+/* eslint-disable max-len */
+// //00001111111111000000000002222222222000000000000000000000333333333300000000000000000000000004444444444400000000000005555555555555000000000666666666666600000007777777777777000000000000000888888888800000000000000000009999999999
+var NG_OPTIONS_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([$\w][$\w]*)|(?:\(\s*([$\w][$\w]*)\s*,\s*([$\w][$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/;
+ // 1: value expression (valueFn)
+ // 2: label expression (displayFn)
+ // 3: group by expression (groupByFn)
+ // 4: disable when expression (disableWhenFn)
+ // 5: array item variable name
+ // 6: object item key variable name
+ // 7: object item value variable name
+ // 8: collection expression
+ // 9: track by expression
+/* eslint-enable */
+
+
+var ngOptionsDirective = ['$compile', '$document', '$parse', function($compile, $document, $parse) {
+
+ function parseOptionsExpression(optionsExp, selectElement, scope) {
+
+ var match = optionsExp.match(NG_OPTIONS_REGEXP);
+ if (!(match)) {
+ throw ngOptionsMinErr('iexp',
+ 'Expected expression in form of ' +
+ '\'_select_ (as _label_)? for (_key_,)?_value_ in _collection_\'' +
+ ' but got \'{0}\'. Element: {1}',
+ optionsExp, startingTag(selectElement));
+ }
+
+ // Extract the parts from the ngOptions expression
+
+ // The variable name for the value of the item in the collection
+ var valueName = match[5] || match[7];
+ // The variable name for the key of the item in the collection
+ var keyName = match[6];
+
+ // An expression that generates the viewValue for an option if there is a label expression
+ var selectAs = / as /.test(match[0]) && match[1];
+ // An expression that is used to track the id of each object in the options collection
+ var trackBy = match[9];
+ // An expression that generates the viewValue for an option if there is no label expression
+ var valueFn = $parse(match[2] ? match[1] : valueName);
+ var selectAsFn = selectAs && $parse(selectAs);
+ var viewValueFn = selectAsFn || valueFn;
+ var trackByFn = trackBy && $parse(trackBy);
+
+ // Get the value by which we are going to track the option
+ // if we have a trackFn then use that (passing scope and locals)
+ // otherwise just hash the given viewValue
+ var getTrackByValueFn = trackBy ?
+ function(value, locals) { return trackByFn(scope, locals); } :
+ function getHashOfValue(value) { return hashKey(value); };
+ var getTrackByValue = function(value, key) {
+ return getTrackByValueFn(value, getLocals(value, key));
+ };
+
+ var displayFn = $parse(match[2] || match[1]);
+ var groupByFn = $parse(match[3] || '');
+ var disableWhenFn = $parse(match[4] || '');
+ var valuesFn = $parse(match[8]);
+
+ var locals = {};
+ var getLocals = keyName ? function(value, key) {
+ locals[keyName] = key;
+ locals[valueName] = value;
+ return locals;
+ } : function(value) {
+ locals[valueName] = value;
+ return locals;
+ };
+
+
+ function Option(selectValue, viewValue, label, group, disabled) {
+ this.selectValue = selectValue;
+ this.viewValue = viewValue;
+ this.label = label;
+ this.group = group;
+ this.disabled = disabled;
+ }
+
+ function getOptionValuesKeys(optionValues) {
+ var optionValuesKeys;
+
+ if (!keyName && isArrayLike(optionValues)) {
+ optionValuesKeys = optionValues;
+ } else {
+ // if object, extract keys, in enumeration order, unsorted
+ optionValuesKeys = [];
+ for (var itemKey in optionValues) {
+ if (optionValues.hasOwnProperty(itemKey) && itemKey.charAt(0) !== '$') {
+ optionValuesKeys.push(itemKey);
+ }
+ }
+ }
+ return optionValuesKeys;
+ }
+
+ return {
+ trackBy: trackBy,
+ getTrackByValue: getTrackByValue,
+ getWatchables: $parse(valuesFn, function(optionValues) {
+ // Create a collection of things that we would like to watch (watchedArray)
+ // so that they can all be watched using a single $watchCollection
+ // that only runs the handler once if anything changes
+ var watchedArray = [];
+ optionValues = optionValues || [];
+
+ var optionValuesKeys = getOptionValuesKeys(optionValues);
+ var optionValuesLength = optionValuesKeys.length;
+ for (var index = 0; index < optionValuesLength; index++) {
+ var key = (optionValues === optionValuesKeys) ? index : optionValuesKeys[index];
+ var value = optionValues[key];
+
+ var locals = getLocals(value, key);
+ var selectValue = getTrackByValueFn(value, locals);
+ watchedArray.push(selectValue);
+
+ // Only need to watch the displayFn if there is a specific label expression
+ if (match[2] || match[1]) {
+ var label = displayFn(scope, locals);
+ watchedArray.push(label);
+ }
+
+ // Only need to watch the disableWhenFn if there is a specific disable expression
+ if (match[4]) {
+ var disableWhen = disableWhenFn(scope, locals);
+ watchedArray.push(disableWhen);
+ }
+ }
+ return watchedArray;
+ }),
+
+ getOptions: function() {
+
+ var optionItems = [];
+ var selectValueMap = {};
+
+ // The option values were already computed in the `getWatchables` fn,
+ // which must have been called to trigger `getOptions`
+ var optionValues = valuesFn(scope) || [];
+ var optionValuesKeys = getOptionValuesKeys(optionValues);
+ var optionValuesLength = optionValuesKeys.length;
+
+ for (var index = 0; index < optionValuesLength; index++) {
+ var key = (optionValues === optionValuesKeys) ? index : optionValuesKeys[index];
+ var value = optionValues[key];
+ var locals = getLocals(value, key);
+ var viewValue = viewValueFn(scope, locals);
+ var selectValue = getTrackByValueFn(viewValue, locals);
+ var label = displayFn(scope, locals);
+ var group = groupByFn(scope, locals);
+ var disabled = disableWhenFn(scope, locals);
+ var optionItem = new Option(selectValue, viewValue, label, group, disabled);
+
+ optionItems.push(optionItem);
+ selectValueMap[selectValue] = optionItem;
+ }
+
+ return {
+ items: optionItems,
+ selectValueMap: selectValueMap,
+ getOptionFromViewValue: function(value) {
+ return selectValueMap[getTrackByValue(value)];
+ },
+ getViewValueFromOption: function(option) {
+ // If the viewValue could be an object that may be mutated by the application,
+ // we need to make a copy and not return the reference to the value on the option.
+ return trackBy ? copy(option.viewValue) : option.viewValue;
+ }
+ };
+ }
+ };
+ }
+
+
+ // we can't just jqLite(' ') since jqLite is not smart enough
+ // to create it in and IE barfs otherwise.
+ var optionTemplate = window.document.createElement('option'),
+ optGroupTemplate = window.document.createElement('optgroup');
+
+ function ngOptionsPostLink(scope, selectElement, attr, ctrls) {
+
+ var selectCtrl = ctrls[0];
+ var ngModelCtrl = ctrls[1];
+ var multiple = attr.multiple;
+
+ // The emptyOption allows the application developer to provide their own custom "empty"
+ // option when the viewValue does not match any of the option values.
+ for (var i = 0, children = selectElement.children(), ii = children.length; i < ii; i++) {
+ if (children[i].value === '') {
+ selectCtrl.hasEmptyOption = true;
+ selectCtrl.emptyOption = children.eq(i);
+ break;
+ }
+ }
+
+ var providedEmptyOption = !!selectCtrl.emptyOption;
+
+ var unknownOption = jqLite(optionTemplate.cloneNode(false));
+ unknownOption.val('?');
+
+ var options;
+ var ngOptions = parseOptionsExpression(attr.ngOptions, selectElement, scope);
+ // This stores the newly created options before they are appended to the select.
+ // Since the contents are removed from the fragment when it is appended,
+ // we only need to create it once.
+ var listFragment = $document[0].createDocumentFragment();
+
+ // Overwrite the implementation. ngOptions doesn't use hashes
+ selectCtrl.generateUnknownOptionValue = function(val) {
+ return '?';
+ };
+
+ // Update the controller methods for multiple selectable options
+ if (!multiple) {
+
+ selectCtrl.writeValue = function writeNgOptionsValue(value) {
+ var selectedOption = options.selectValueMap[selectElement.val()];
+ var option = options.getOptionFromViewValue(value);
+
+ // Make sure to remove the selected attribute from the previously selected option
+ // Otherwise, screen readers might get confused
+ if (selectedOption) selectedOption.element.removeAttribute('selected');
+
+ if (option) {
+ // Don't update the option when it is already selected.
+ // For example, the browser will select the first option by default. In that case,
+ // most properties are set automatically - except the `selected` attribute, which we
+ // set always
+
+ if (selectElement[0].value !== option.selectValue) {
+ selectCtrl.removeUnknownOption();
+ selectCtrl.unselectEmptyOption();
+
+ selectElement[0].value = option.selectValue;
+ option.element.selected = true;
+ }
+
+ option.element.setAttribute('selected', 'selected');
+ } else {
+
+ if (providedEmptyOption) {
+ selectCtrl.selectEmptyOption();
+ } else if (selectCtrl.unknownOption.parent().length) {
+ selectCtrl.updateUnknownOption(value);
+ } else {
+ selectCtrl.renderUnknownOption(value);
+ }
+ }
+ };
+
+ selectCtrl.readValue = function readNgOptionsValue() {
+
+ var selectedOption = options.selectValueMap[selectElement.val()];
+
+ if (selectedOption && !selectedOption.disabled) {
+ selectCtrl.unselectEmptyOption();
+ selectCtrl.removeUnknownOption();
+ return options.getViewValueFromOption(selectedOption);
+ }
+ return null;
+ };
+
+ // If we are using `track by` then we must watch the tracked value on the model
+ // since ngModel only watches for object identity change
+ // FIXME: When a user selects an option, this watch will fire needlessly
+ if (ngOptions.trackBy) {
+ scope.$watch(
+ function() { return ngOptions.getTrackByValue(ngModelCtrl.$viewValue); },
+ function() { ngModelCtrl.$render(); }
+ );
+ }
+
+ } else {
+
+ selectCtrl.writeValue = function writeNgOptionsMultiple(values) {
+ // Only set `.selected` if necessary, in order to prevent some browsers from
+ // scrolling to ` ` elements that are outside the `` element's viewport.
+
+ var selectedOptions = values && values.map(getAndUpdateSelectedOption) || [];
+
+ options.items.forEach(function(option) {
+ if (option.element.selected && !includes(selectedOptions, option)) {
+ option.element.selected = false;
+ }
+ });
+ };
+
+
+ selectCtrl.readValue = function readNgOptionsMultiple() {
+ var selectedValues = selectElement.val() || [],
+ selections = [];
+
+ forEach(selectedValues, function(value) {
+ var option = options.selectValueMap[value];
+ if (option && !option.disabled) selections.push(options.getViewValueFromOption(option));
+ });
+
+ return selections;
+ };
+
+ // If we are using `track by` then we must watch these tracked values on the model
+ // since ngModel only watches for object identity change
+ if (ngOptions.trackBy) {
+
+ scope.$watchCollection(function() {
+ if (isArray(ngModelCtrl.$viewValue)) {
+ return ngModelCtrl.$viewValue.map(function(value) {
+ return ngOptions.getTrackByValue(value);
+ });
+ }
+ }, function() {
+ ngModelCtrl.$render();
+ });
+
+ }
+ }
+
+ if (providedEmptyOption) {
+
+ // we need to remove it before calling selectElement.empty() because otherwise IE will
+ // remove the label from the element. wtf?
+ selectCtrl.emptyOption.remove();
+
+ // compile the element since there might be bindings in it
+ $compile(selectCtrl.emptyOption)(scope);
+
+ if (selectCtrl.emptyOption[0].nodeType === NODE_TYPE_COMMENT) {
+ // This means the empty option has currently no actual DOM node, probably because
+ // it has been modified by a transclusion directive.
+ selectCtrl.hasEmptyOption = false;
+
+ // Redefine the registerOption function, which will catch
+ // options that are added by ngIf etc. (rendering of the node is async because of
+ // lazy transclusion)
+ selectCtrl.registerOption = function(optionScope, optionEl) {
+ if (optionEl.val() === '') {
+ selectCtrl.hasEmptyOption = true;
+ selectCtrl.emptyOption = optionEl;
+ selectCtrl.emptyOption.removeClass('ng-scope');
+ // This ensures the new empty option is selected if previously no option was selected
+ ngModelCtrl.$render();
+
+ optionEl.on('$destroy', function() {
+ selectCtrl.hasEmptyOption = false;
+ selectCtrl.emptyOption = undefined;
+ });
+ }
+ };
+
+ } else {
+ // remove the class, which is added automatically because we recompile the element and it
+ // becomes the compilation root
+ selectCtrl.emptyOption.removeClass('ng-scope');
+ }
+
+ }
+
+ selectElement.empty();
+
+ // We need to do this here to ensure that the options object is defined
+ // when we first hit it in writeNgOptionsValue
+ updateOptions();
+
+ // We will re-render the option elements if the option values or labels change
+ scope.$watchCollection(ngOptions.getWatchables, updateOptions);
+
+ // ------------------------------------------------------------------ //
+
+ function addOptionElement(option, parent) {
+ var optionElement = optionTemplate.cloneNode(false);
+ parent.appendChild(optionElement);
+ updateOptionElement(option, optionElement);
+ }
+
+ function getAndUpdateSelectedOption(viewValue) {
+ var option = options.getOptionFromViewValue(viewValue);
+ var element = option && option.element;
+
+ if (element && !element.selected) element.selected = true;
+
+ return option;
+ }
+
+ function updateOptionElement(option, element) {
+ option.element = element;
+ element.disabled = option.disabled;
+ // NOTE: The label must be set before the value, otherwise IE10/11/EDGE create unresponsive
+ // selects in certain circumstances when multiple selects are next to each other and display
+ // the option list in listbox style, i.e. the select is [multiple], or specifies a [size].
+ // See https://github.com/angular/angular.js/issues/11314 for more info.
+ // This is unfortunately untestable with unit / e2e tests
+ if (option.label !== element.label) {
+ element.label = option.label;
+ element.textContent = option.label;
+ }
+ element.value = option.selectValue;
+ }
+
+ function updateOptions() {
+ var previousValue = options && selectCtrl.readValue();
+
+ // We must remove all current options, but cannot simply set innerHTML = null
+ // since the providedEmptyOption might have an ngIf on it that inserts comments which we
+ // must preserve.
+ // Instead, iterate over the current option elements and remove them or their optgroup
+ // parents
+ if (options) {
+
+ for (var i = options.items.length - 1; i >= 0; i--) {
+ var option = options.items[i];
+ if (isDefined(option.group)) {
+ jqLiteRemove(option.element.parentNode);
+ } else {
+ jqLiteRemove(option.element);
+ }
+ }
+ }
+
+ options = ngOptions.getOptions();
+
+ var groupElementMap = {};
+
+ // Ensure that the empty option is always there if it was explicitly provided
+ if (providedEmptyOption) {
+ selectElement.prepend(selectCtrl.emptyOption);
+ }
+
+ options.items.forEach(function addOption(option) {
+ var groupElement;
+
+ if (isDefined(option.group)) {
+
+ // This option is to live in a group
+ // See if we have already created this group
+ groupElement = groupElementMap[option.group];
+
+ if (!groupElement) {
+
+ groupElement = optGroupTemplate.cloneNode(false);
+ listFragment.appendChild(groupElement);
+
+ // Update the label on the group element
+ // "null" is special cased because of Safari
+ groupElement.label = option.group === null ? 'null' : option.group;
+
+ // Store it for use later
+ groupElementMap[option.group] = groupElement;
+ }
+
+ addOptionElement(option, groupElement);
+
+ } else {
+
+ // This option is not in a group
+ addOptionElement(option, listFragment);
+ }
+ });
+
+ selectElement[0].appendChild(listFragment);
+
+ ngModelCtrl.$render();
+
+ // Check to see if the value has changed due to the update to the options
+ if (!ngModelCtrl.$isEmpty(previousValue)) {
+ var nextValue = selectCtrl.readValue();
+ var isNotPrimitive = ngOptions.trackBy || multiple;
+ if (isNotPrimitive ? !equals(previousValue, nextValue) : previousValue !== nextValue) {
+ ngModelCtrl.$setViewValue(nextValue);
+ ngModelCtrl.$render();
+ }
+ }
+
+ }
+ }
+
+ return {
+ restrict: 'A',
+ terminal: true,
+ require: ['select', 'ngModel'],
+ link: {
+ pre: function ngOptionsPreLink(scope, selectElement, attr, ctrls) {
+ // Deactivate the SelectController.register method to prevent
+ // option directives from accidentally registering themselves
+ // (and unwanted $destroy handlers etc.)
+ ctrls[0].registerOption = noop;
+ },
+ post: ngOptionsPostLink
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngPluralize
+ * @restrict EA
+ *
+ * @description
+ * `ngPluralize` is a directive that displays messages according to en-US localization rules.
+ * These rules are bundled with angular.js, but can be overridden
+ * (see {@link guide/i18n Angular i18n} dev guide). You configure ngPluralize directive
+ * by specifying the mappings between
+ * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)
+ * and the strings to be displayed.
+ *
+ * # Plural categories and explicit number rules
+ * There are two
+ * [plural categories](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)
+ * in Angular's default en-US locale: "one" and "other".
+ *
+ * While a plural category may match many numbers (for example, in en-US locale, "other" can match
+ * any number that is not 1), an explicit number rule can only match one number. For example, the
+ * explicit number rule for "3" matches the number 3. There are examples of plural categories
+ * and explicit number rules throughout the rest of this documentation.
+ *
+ * # Configuring ngPluralize
+ * You configure ngPluralize by providing 2 attributes: `count` and `when`.
+ * You can also provide an optional attribute, `offset`.
+ *
+ * The value of the `count` attribute can be either a string or an {@link guide/expression
+ * Angular expression}; these are evaluated on the current scope for its bound value.
+ *
+ * The `when` attribute specifies the mappings between plural categories and the actual
+ * string to be displayed. The value of the attribute should be a JSON object.
+ *
+ * The following example shows how to configure ngPluralize:
+ *
+ * ```html
+ *
+ *
+ *```
+ *
+ * In the example, `"0: Nobody is viewing."` is an explicit number rule. If you did not
+ * specify this rule, 0 would be matched to the "other" category and "0 people are viewing"
+ * would be shown instead of "Nobody is viewing". You can specify an explicit number rule for
+ * other numbers, for example 12, so that instead of showing "12 people are viewing", you can
+ * show "a dozen people are viewing".
+ *
+ * You can use a set of closed braces (`{}`) as a placeholder for the number that you want substituted
+ * into pluralized strings. In the previous example, Angular will replace `{}` with
+ * `{{personCount}}` . The closed braces `{}` is a placeholder
+ * for {{numberExpression}} .
+ *
+ * If no rule is defined for a category, then an empty string is displayed and a warning is generated.
+ * Note that some locales define more categories than `one` and `other`. For example, fr-fr defines `few` and `many`.
+ *
+ * # Configuring ngPluralize with offset
+ * The `offset` attribute allows further customization of pluralized text, which can result in
+ * a better user experience. For example, instead of the message "4 people are viewing this document",
+ * you might display "John, Kate and 2 others are viewing this document".
+ * The offset attribute allows you to offset a number by any desired value.
+ * Let's take a look at an example:
+ *
+ * ```html
+ *
+ *
+ * ```
+ *
+ * Notice that we are still using two plural categories(one, other), but we added
+ * three explicit number rules 0, 1 and 2.
+ * When one person, perhaps John, views the document, "John is viewing" will be shown.
+ * When three people view the document, no explicit number rule is found, so
+ * an offset of 2 is taken off 3, and Angular uses 1 to decide the plural category.
+ * In this case, plural category 'one' is matched and "John, Mary and one other person are viewing"
+ * is shown.
+ *
+ * Note that when you specify offsets, you must provide explicit number rules for
+ * numbers from 0 up to and including the offset. If you use an offset of 3, for example,
+ * you must provide explicit number rules for 0, 1, 2 and 3. You must also provide plural strings for
+ * plural categories "one" and "other".
+ *
+ * @param {string|expression} count The variable to be bound to.
+ * @param {string} when The mapping between plural category to its corresponding strings.
+ * @param {number=} offset Offset to deduct from the total number.
+ *
+ * @example
+
+
+
+
+ Person 1:
+ Person 2:
+ Number of People:
+
+
+ Without Offset:
+
+
+
+
+ With Offset(2):
+
+
+
+
+
+ it('should show correct pluralized string', function() {
+ var withoutOffset = element.all(by.css('ng-pluralize')).get(0);
+ var withOffset = element.all(by.css('ng-pluralize')).get(1);
+ var countInput = element(by.model('personCount'));
+
+ expect(withoutOffset.getText()).toEqual('1 person is viewing.');
+ expect(withOffset.getText()).toEqual('Igor is viewing.');
+
+ countInput.clear();
+ countInput.sendKeys('0');
+
+ expect(withoutOffset.getText()).toEqual('Nobody is viewing.');
+ expect(withOffset.getText()).toEqual('Nobody is viewing.');
+
+ countInput.clear();
+ countInput.sendKeys('2');
+
+ expect(withoutOffset.getText()).toEqual('2 people are viewing.');
+ expect(withOffset.getText()).toEqual('Igor and Misko are viewing.');
+
+ countInput.clear();
+ countInput.sendKeys('3');
+
+ expect(withoutOffset.getText()).toEqual('3 people are viewing.');
+ expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.');
+
+ countInput.clear();
+ countInput.sendKeys('4');
+
+ expect(withoutOffset.getText()).toEqual('4 people are viewing.');
+ expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.');
+ });
+ it('should show data-bound names', function() {
+ var withOffset = element.all(by.css('ng-pluralize')).get(1);
+ var personCount = element(by.model('personCount'));
+ var person1 = element(by.model('person1'));
+ var person2 = element(by.model('person2'));
+ personCount.clear();
+ personCount.sendKeys('4');
+ person1.clear();
+ person1.sendKeys('Di');
+ person2.clear();
+ person2.sendKeys('Vojta');
+ expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.');
+ });
+
+
+ */
+var ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale, $interpolate, $log) {
+ var BRACE = /{}/g,
+ IS_WHEN = /^when(Minus)?(.+)$/;
+
+ return {
+ link: function(scope, element, attr) {
+ var numberExp = attr.count,
+ whenExp = attr.$attr.when && element.attr(attr.$attr.when), // we have {{}} in attrs
+ offset = attr.offset || 0,
+ whens = scope.$eval(whenExp) || {},
+ whensExpFns = {},
+ startSymbol = $interpolate.startSymbol(),
+ endSymbol = $interpolate.endSymbol(),
+ braceReplacement = startSymbol + numberExp + '-' + offset + endSymbol,
+ watchRemover = angular.noop,
+ lastCount;
+
+ forEach(attr, function(expression, attributeName) {
+ var tmpMatch = IS_WHEN.exec(attributeName);
+ if (tmpMatch) {
+ var whenKey = (tmpMatch[1] ? '-' : '') + lowercase(tmpMatch[2]);
+ whens[whenKey] = element.attr(attr.$attr[attributeName]);
+ }
+ });
+ forEach(whens, function(expression, key) {
+ whensExpFns[key] = $interpolate(expression.replace(BRACE, braceReplacement));
+
+ });
+
+ scope.$watch(numberExp, function ngPluralizeWatchAction(newVal) {
+ var count = parseFloat(newVal);
+ var countIsNaN = isNumberNaN(count);
+
+ if (!countIsNaN && !(count in whens)) {
+ // If an explicit number rule such as 1, 2, 3... is defined, just use it.
+ // Otherwise, check it against pluralization rules in $locale service.
+ count = $locale.pluralCat(count - offset);
+ }
+
+ // If both `count` and `lastCount` are NaN, we don't need to re-register a watch.
+ // In JS `NaN !== NaN`, so we have to explicitly check.
+ if ((count !== lastCount) && !(countIsNaN && isNumberNaN(lastCount))) {
+ watchRemover();
+ var whenExpFn = whensExpFns[count];
+ if (isUndefined(whenExpFn)) {
+ if (newVal != null) {
+ $log.debug('ngPluralize: no rule defined for \'' + count + '\' in ' + whenExp);
+ }
+ watchRemover = noop;
+ updateElementText();
+ } else {
+ watchRemover = scope.$watch(whenExpFn, updateElementText);
+ }
+ lastCount = count;
+ }
+ });
+
+ function updateElementText(newText) {
+ element.text(newText || '');
+ }
+ }
+ };
+}];
+
+/* exported ngRepeatDirective */
+
+/**
+ * @ngdoc directive
+ * @name ngRepeat
+ * @multiElement
+ *
+ * @description
+ * The `ngRepeat` directive instantiates a template once per item from a collection. Each template
+ * instance gets its own scope, where the given loop variable is set to the current collection item,
+ * and `$index` is set to the item index or key.
+ *
+ * Special properties are exposed on the local scope of each template instance, including:
+ *
+ * | Variable | Type | Details |
+ * |-----------|-----------------|-----------------------------------------------------------------------------|
+ * | `$index` | {@type number} | iterator offset of the repeated element (0..length-1) |
+ * | `$first` | {@type boolean} | true if the repeated element is first in the iterator. |
+ * | `$middle` | {@type boolean} | true if the repeated element is between the first and last in the iterator. |
+ * | `$last` | {@type boolean} | true if the repeated element is last in the iterator. |
+ * | `$even` | {@type boolean} | true if the iterator position `$index` is even (otherwise false). |
+ * | `$odd` | {@type boolean} | true if the iterator position `$index` is odd (otherwise false). |
+ *
+ *
+ * Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.
+ * This may be useful when, for instance, nesting ngRepeats.
+ *
+ *
+ *
+ * # Iterating over object properties
+ *
+ * It is possible to get `ngRepeat` to iterate over the properties of an object using the following
+ * syntax:
+ *
+ * ```js
+ * ...
+ * ```
+ *
+ * However, there are a few limitations compared to array iteration:
+ *
+ * - The JavaScript specification does not define the order of keys
+ * returned for an object, so Angular relies on the order returned by the browser
+ * when running `for key in myObj`. Browsers generally follow the strategy of providing
+ * keys in the order in which they were defined, although there are exceptions when keys are deleted
+ * and reinstated. See the
+ * [MDN page on `delete` for more info](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Cross-browser_notes).
+ *
+ * - `ngRepeat` will silently *ignore* object keys starting with `$`, because
+ * it's a prefix used by Angular for public (`$`) and private (`$$`) properties.
+ *
+ * - The built-in filters {@link ng.orderBy orderBy} and {@link ng.filter filter} do not work with
+ * objects, and will throw an error if used with one.
+ *
+ * If you are hitting any of these limitations, the recommended workaround is to convert your object into an array
+ * that is sorted into the order that you prefer before providing it to `ngRepeat`. You could
+ * do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter)
+ * or implement a `$watch` on the object yourself.
+ *
+ *
+ * # Tracking and Duplicates
+ *
+ * `ngRepeat` uses {@link $rootScope.Scope#$watchCollection $watchCollection} to detect changes in
+ * the collection. When a change happens, `ngRepeat` then makes the corresponding changes to the DOM:
+ *
+ * * When an item is added, a new instance of the template is added to the DOM.
+ * * When an item is removed, its template instance is removed from the DOM.
+ * * When items are reordered, their respective templates are reordered in the DOM.
+ *
+ * To minimize creation of DOM elements, `ngRepeat` uses a function
+ * to "keep track" of all items in the collection and their corresponding DOM elements.
+ * For example, if an item is added to the collection, `ngRepeat` will know that all other items
+ * already have DOM elements, and will not re-render them.
+ *
+ * The default tracking function (which tracks items by their identity) does not allow
+ * duplicate items in arrays. This is because when there are duplicates, it is not possible
+ * to maintain a one-to-one mapping between collection items and DOM elements.
+ *
+ * If you do need to repeat duplicate items, you can substitute the default tracking behavior
+ * with your own using the `track by` expression.
+ *
+ * For example, you may track items by the index of each item in the collection, using the
+ * special scope property `$index`:
+ * ```html
+ *
+ * {{n}}
+ *
+ * ```
+ *
+ * You may also use arbitrary expressions in `track by`, including references to custom functions
+ * on the scope:
+ * ```html
+ *
+ * {{n}}
+ *
+ * ```
+ *
+ *
+ * If you are working with objects that have a unique identifier property, you should track
+ * by this identifier instead of the object instance. Should you reload your data later, `ngRepeat`
+ * will not have to rebuild the DOM elements for items it has already rendered, even if the
+ * JavaScript objects in the collection have been substituted for new ones. For large collections,
+ * this significantly improves rendering performance. If you don't have a unique identifier,
+ * `track by $index` can also provide a performance boost.
+ *
+ *
+ * ```html
+ *
+ * {{model.name}}
+ *
+ * ```
+ *
+ *
+ *
+ * Avoid using `track by $index` when the repeated template contains
+ * {@link guide/expression#one-time-binding one-time bindings}. In such cases, the `nth` DOM
+ * element will always be matched with the `nth` item of the array, so the bindings on that element
+ * will not be updated even when the corresponding item changes, essentially causing the view to get
+ * out-of-sync with the underlying data.
+ *
+ *
+ * When no `track by` expression is provided, it is equivalent to tracking by the built-in
+ * `$id` function, which tracks items by their identity:
+ * ```html
+ *
+ * {{obj.prop}}
+ *
+ * ```
+ *
+ *
+ *
+ * **Note:** `track by` must always be the last expression:
+ *
+ * ```
+ *
+ * {{model.name}}
+ *
+ * ```
+ *
+ *
+ * # Special repeat start and end points
+ * To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending
+ * the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.
+ * The **ng-repeat-start** directive works the same as **ng-repeat**, but will repeat all the HTML code (including the tag it's defined on)
+ * up to and including the ending HTML tag where **ng-repeat-end** is placed.
+ *
+ * The example below makes use of this feature:
+ * ```html
+ *
+ * Header {{ item }}
+ *
+ *
+ * Body {{ item }}
+ *
+ *
+ * Footer {{ item }}
+ *
+ * ```
+ *
+ * And with an input of {@type ['A','B']} for the items variable in the example above, the output will evaluate to:
+ * ```html
+ *
+ *
+ * Body A
+ *
+ *
+ *
+ *
+ * Body B
+ *
+ *
+ * ```
+ *
+ * The custom start and end points for ngRepeat also support all other HTML directive syntax flavors provided in AngularJS (such
+ * as **data-ng-repeat-start**, **x-ng-repeat-start** and **ng:repeat-start**).
+ *
+ * @animations
+ * | Animation | Occurs |
+ * |----------------------------------|-------------------------------------|
+ * | {@link ng.$animate#enter enter} | when a new item is added to the list or when an item is revealed after a filter |
+ * | {@link ng.$animate#leave leave} | when an item is removed from the list or when an item is filtered out |
+ * | {@link ng.$animate#move move } | when an adjacent item is filtered out causing a reorder or when the item contents are reordered |
+ *
+ * See the example below for defining CSS animations with ngRepeat.
+ *
+ * @element ANY
+ * @scope
+ * @priority 1000
+ * @param {repeat_expression} ngRepeat The expression indicating how to enumerate a collection. These
+ * formats are currently supported:
+ *
+ * * `variable in expression` – where variable is the user defined loop variable and `expression`
+ * is a scope expression giving the collection to enumerate.
+ *
+ * For example: `album in artist.albums`.
+ *
+ * * `(key, value) in expression` – where `key` and `value` can be any user defined identifiers,
+ * and `expression` is the scope expression giving the collection to enumerate.
+ *
+ * For example: `(name, age) in {'adam':10, 'amalie':12}`.
+ *
+ * * `variable in expression track by tracking_expression` – You can also provide an optional tracking expression
+ * which can be used to associate the objects in the collection with the DOM elements. If no tracking expression
+ * is specified, ng-repeat associates elements by identity. It is an error to have
+ * more than one tracking expression value resolve to the same key. (This would mean that two distinct objects are
+ * mapped to the same DOM element, which is not possible.)
+ *
+ * Note that the tracking expression must come last, after any filters, and the alias expression.
+ *
+ * For example: `item in items` is equivalent to `item in items track by $id(item)`. This implies that the DOM elements
+ * will be associated by item identity in the array.
+ *
+ * For example: `item in items track by $id(item)`. A built in `$id()` function can be used to assign a unique
+ * `$$hashKey` property to each item in the array. This property is then used as a key to associated DOM elements
+ * with the corresponding item in the array by identity. Moving the same object in array would move the DOM
+ * element in the same way in the DOM.
+ *
+ * For example: `item in items track by item.id` is a typical pattern when the items come from the database. In this
+ * case the object identity does not matter. Two objects are considered equivalent as long as their `id`
+ * property is same.
+ *
+ * For example: `item in items | filter:searchText track by item.id` is a pattern that might be used to apply a filter
+ * to items in conjunction with a tracking expression.
+ *
+ * * `variable in expression as alias_expression` – You can also provide an optional alias expression which will then store the
+ * intermediate results of the repeater after the filters have been applied. Typically this is used to render a special message
+ * when a filter is active on the repeater, but the filtered result set is empty.
+ *
+ * For example: `item in items | filter:x as results` will store the fragment of the repeated items as `results`, but only after
+ * the items have been processed through the filter.
+ *
+ * Please note that `as [variable name] is not an operator but rather a part of ngRepeat micro-syntax so it can be used only at the end
+ * (and not as operator, inside an expression).
+ *
+ * For example: `item in items | filter : x | orderBy : order | limitTo : limit as results` .
+ *
+ * @example
+ * This example uses `ngRepeat` to display a list of people. A filter is used to restrict the displayed
+ * results by name or by age. New (entering) and removed (leaving) items are animated.
+
+
+
+ I have {{friends.length}} friends. They are:
+
+
+
+ [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.
+
+
+ No results found...
+
+
+
+
+
+ angular.module('ngRepeat', ['ngAnimate']).controller('repeatController', function($scope) {
+ $scope.friends = [
+ {name:'John', age:25, gender:'boy'},
+ {name:'Jessie', age:30, gender:'girl'},
+ {name:'Johanna', age:28, gender:'girl'},
+ {name:'Joy', age:15, gender:'girl'},
+ {name:'Mary', age:28, gender:'girl'},
+ {name:'Peter', age:95, gender:'boy'},
+ {name:'Sebastian', age:50, gender:'boy'},
+ {name:'Erika', age:27, gender:'girl'},
+ {name:'Patrick', age:40, gender:'boy'},
+ {name:'Samantha', age:60, gender:'girl'}
+ ];
+ });
+
+
+ .example-animate-container {
+ background:white;
+ border:1px solid black;
+ list-style:none;
+ margin:0;
+ padding:0 10px;
+ }
+
+ .animate-repeat {
+ line-height:30px;
+ list-style:none;
+ box-sizing:border-box;
+ }
+
+ .animate-repeat.ng-move,
+ .animate-repeat.ng-enter,
+ .animate-repeat.ng-leave {
+ transition:all linear 0.5s;
+ }
+
+ .animate-repeat.ng-leave.ng-leave-active,
+ .animate-repeat.ng-move,
+ .animate-repeat.ng-enter {
+ opacity:0;
+ max-height:0;
+ }
+
+ .animate-repeat.ng-leave,
+ .animate-repeat.ng-move.ng-move-active,
+ .animate-repeat.ng-enter.ng-enter-active {
+ opacity:1;
+ max-height:30px;
+ }
+
+
+ var friends = element.all(by.repeater('friend in friends'));
+
+ it('should render initial data set', function() {
+ expect(friends.count()).toBe(10);
+ expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.');
+ expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.');
+ expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.');
+ expect(element(by.binding('friends.length')).getText())
+ .toMatch("I have 10 friends. They are:");
+ });
+
+ it('should update repeater when filter predicate changes', function() {
+ expect(friends.count()).toBe(10);
+
+ element(by.model('q')).sendKeys('ma');
+
+ expect(friends.count()).toBe(2);
+ expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.');
+ expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.');
+ });
+
+
+ */
+var ngRepeatDirective = ['$parse', '$animate', '$compile', function($parse, $animate, $compile) {
+ var NG_REMOVED = '$$NG_REMOVED';
+ var ngRepeatMinErr = minErr('ngRepeat');
+
+ var updateScope = function(scope, index, valueIdentifier, value, keyIdentifier, key, arrayLength) {
+ // TODO(perf): generate setters to shave off ~40ms or 1-1.5%
+ scope[valueIdentifier] = value;
+ if (keyIdentifier) scope[keyIdentifier] = key;
+ scope.$index = index;
+ scope.$first = (index === 0);
+ scope.$last = (index === (arrayLength - 1));
+ scope.$middle = !(scope.$first || scope.$last);
+ // eslint-disable-next-line no-bitwise
+ scope.$odd = !(scope.$even = (index & 1) === 0);
+ };
+
+ var getBlockStart = function(block) {
+ return block.clone[0];
+ };
+
+ var getBlockEnd = function(block) {
+ return block.clone[block.clone.length - 1];
+ };
+
+
+ return {
+ restrict: 'A',
+ multiElement: true,
+ transclude: 'element',
+ priority: 1000,
+ terminal: true,
+ $$tlb: true,
+ compile: function ngRepeatCompile($element, $attr) {
+ var expression = $attr.ngRepeat;
+ var ngRepeatEndComment = $compile.$$createComment('end ngRepeat', expression);
+
+ var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
+
+ if (!match) {
+ throw ngRepeatMinErr('iexp', 'Expected expression in form of \'_item_ in _collection_[ track by _id_]\' but got \'{0}\'.',
+ expression);
+ }
+
+ var lhs = match[1];
+ var rhs = match[2];
+ var aliasAs = match[3];
+ var trackByExp = match[4];
+
+ match = lhs.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/);
+
+ if (!match) {
+ throw ngRepeatMinErr('iidexp', '\'_item_\' in \'_item_ in _collection_\' should be an identifier or \'(_key_, _value_)\' expression, but got \'{0}\'.',
+ lhs);
+ }
+ var valueIdentifier = match[3] || match[1];
+ var keyIdentifier = match[2];
+
+ if (aliasAs && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs) ||
+ /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(aliasAs))) {
+ throw ngRepeatMinErr('badident', 'alias \'{0}\' is invalid --- must be a valid JS identifier which is not a reserved name.',
+ aliasAs);
+ }
+
+ var trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn;
+ var hashFnLocals = {$id: hashKey};
+
+ if (trackByExp) {
+ trackByExpGetter = $parse(trackByExp);
+ } else {
+ trackByIdArrayFn = function(key, value) {
+ return hashKey(value);
+ };
+ trackByIdObjFn = function(key) {
+ return key;
+ };
+ }
+
+ return function ngRepeatLink($scope, $element, $attr, ctrl, $transclude) {
+
+ if (trackByExpGetter) {
+ trackByIdExpFn = function(key, value, index) {
+ // assign key, value, and $index to the locals so that they can be used in hash functions
+ if (keyIdentifier) hashFnLocals[keyIdentifier] = key;
+ hashFnLocals[valueIdentifier] = value;
+ hashFnLocals.$index = index;
+ return trackByExpGetter($scope, hashFnLocals);
+ };
+ }
+
+ // Store a list of elements from previous run. This is a hash where key is the item from the
+ // iterator, and the value is objects with following properties.
+ // - scope: bound scope
+ // - element: previous element.
+ // - index: position
+ //
+ // We are using no-proto object so that we don't need to guard against inherited props via
+ // hasOwnProperty.
+ var lastBlockMap = createMap();
+
+ //watch props
+ $scope.$watchCollection(rhs, function ngRepeatAction(collection) {
+ var index, length,
+ previousNode = $element[0], // node that cloned nodes should be inserted after
+ // initialized to the comment node anchor
+ nextNode,
+ // Same as lastBlockMap but it has the current state. It will become the
+ // lastBlockMap on the next iteration.
+ nextBlockMap = createMap(),
+ collectionLength,
+ key, value, // key/value of iteration
+ trackById,
+ trackByIdFn,
+ collectionKeys,
+ block, // last object information {scope, element, id}
+ nextBlockOrder,
+ elementsToRemove;
+
+ if (aliasAs) {
+ $scope[aliasAs] = collection;
+ }
+
+ if (isArrayLike(collection)) {
+ collectionKeys = collection;
+ trackByIdFn = trackByIdExpFn || trackByIdArrayFn;
+ } else {
+ trackByIdFn = trackByIdExpFn || trackByIdObjFn;
+ // if object, extract keys, in enumeration order, unsorted
+ collectionKeys = [];
+ for (var itemKey in collection) {
+ if (hasOwnProperty.call(collection, itemKey) && itemKey.charAt(0) !== '$') {
+ collectionKeys.push(itemKey);
+ }
+ }
+ }
+
+ collectionLength = collectionKeys.length;
+ nextBlockOrder = new Array(collectionLength);
+
+ // locate existing items
+ for (index = 0; index < collectionLength; index++) {
+ key = (collection === collectionKeys) ? index : collectionKeys[index];
+ value = collection[key];
+ trackById = trackByIdFn(key, value, index);
+ if (lastBlockMap[trackById]) {
+ // found previously seen block
+ block = lastBlockMap[trackById];
+ delete lastBlockMap[trackById];
+ nextBlockMap[trackById] = block;
+ nextBlockOrder[index] = block;
+ } else if (nextBlockMap[trackById]) {
+ // if collision detected. restore lastBlockMap and throw an error
+ forEach(nextBlockOrder, function(block) {
+ if (block && block.scope) lastBlockMap[block.id] = block;
+ });
+ throw ngRepeatMinErr('dupes',
+ 'Duplicates in a repeater are not allowed. Use \'track by\' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}',
+ expression, trackById, value);
+ } else {
+ // new never before seen block
+ nextBlockOrder[index] = {id: trackById, scope: undefined, clone: undefined};
+ nextBlockMap[trackById] = true;
+ }
+ }
+
+ // remove leftover items
+ for (var blockKey in lastBlockMap) {
+ block = lastBlockMap[blockKey];
+ elementsToRemove = getBlockNodes(block.clone);
+ $animate.leave(elementsToRemove);
+ if (elementsToRemove[0].parentNode) {
+ // if the element was not removed yet because of pending animation, mark it as deleted
+ // so that we can ignore it later
+ for (index = 0, length = elementsToRemove.length; index < length; index++) {
+ elementsToRemove[index][NG_REMOVED] = true;
+ }
+ }
+ block.scope.$destroy();
+ }
+
+ // we are not using forEach for perf reasons (trying to avoid #call)
+ for (index = 0; index < collectionLength; index++) {
+ key = (collection === collectionKeys) ? index : collectionKeys[index];
+ value = collection[key];
+ block = nextBlockOrder[index];
+
+ if (block.scope) {
+ // if we have already seen this object, then we need to reuse the
+ // associated scope/element
+
+ nextNode = previousNode;
+
+ // skip nodes that are already pending removal via leave animation
+ do {
+ nextNode = nextNode.nextSibling;
+ } while (nextNode && nextNode[NG_REMOVED]);
+
+ if (getBlockStart(block) !== nextNode) {
+ // existing item which got moved
+ $animate.move(getBlockNodes(block.clone), null, previousNode);
+ }
+ previousNode = getBlockEnd(block);
+ updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength);
+ } else {
+ // new item which we don't know about
+ $transclude(function ngRepeatTransclude(clone, scope) {
+ block.scope = scope;
+ // http://jsperf.com/clone-vs-createcomment
+ var endNode = ngRepeatEndComment.cloneNode(false);
+ clone[clone.length++] = endNode;
+
+ $animate.enter(clone, null, previousNode);
+ previousNode = endNode;
+ // Note: We only need the first/last node of the cloned nodes.
+ // However, we need to keep the reference to the jqlite wrapper as it might be changed later
+ // by a directive with templateUrl when its template arrives.
+ block.clone = clone;
+ nextBlockMap[block.id] = block;
+ updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength);
+ });
+ }
+ }
+ lastBlockMap = nextBlockMap;
+ });
+ };
+ }
+ };
+}];
+
+var NG_HIDE_CLASS = 'ng-hide';
+var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate';
+/**
+ * @ngdoc directive
+ * @name ngShow
+ * @multiElement
+ *
+ * @description
+ * The `ngShow` directive shows or hides the given HTML element based on the expression provided to
+ * the `ngShow` attribute.
+ *
+ * The element is shown or hidden by removing or adding the `.ng-hide` CSS class onto the element.
+ * The `.ng-hide` CSS class is predefined in AngularJS and sets the display style to none (using an
+ * `!important` flag). For CSP mode please add `angular-csp.css` to your HTML file (see
+ * {@link ng.directive:ngCsp ngCsp}).
+ *
+ * ```html
+ *
+ *
+ *
+ *
+ *
+ * ```
+ *
+ * When the `ngShow` expression evaluates to a falsy value then the `.ng-hide` CSS class is added
+ * to the class attribute on the element causing it to become hidden. When truthy, the `.ng-hide`
+ * CSS class is removed from the element causing the element not to appear hidden.
+ *
+ * ## Why is `!important` used?
+ *
+ * You may be wondering why `!important` is used for the `.ng-hide` CSS class. This is because the
+ * `.ng-hide` selector can be easily overridden by heavier selectors. For example, something as
+ * simple as changing the display style on a HTML list item would make hidden elements appear
+ * visible. This also becomes a bigger issue when dealing with CSS frameworks.
+ *
+ * By using `!important`, the show and hide behavior will work as expected despite any clash between
+ * CSS selector specificity (when `!important` isn't used with any conflicting styles). If a
+ * developer chooses to override the styling to change how to hide an element then it is just a
+ * matter of using `!important` in their own CSS code.
+ *
+ * ### Overriding `.ng-hide`
+ *
+ * By default, the `.ng-hide` class will style the element with `display: none !important`. If you
+ * wish to change the hide behavior with `ngShow`/`ngHide`, you can simply overwrite the styles for
+ * the `.ng-hide` CSS class. Note that the selector that needs to be used is actually
+ * `.ng-hide:not(.ng-hide-animate)` to cope with extra animation classes that can be added.
+ *
+ * ```css
+ * .ng-hide:not(.ng-hide-animate) {
+ * /* These are just alternative ways of hiding an element */
+ * display: block!important;
+ * position: absolute;
+ * top: -9999px;
+ * left: -9999px;
+ * }
+ * ```
+ *
+ * By default you don't need to override anything in CSS and the animations will work around the
+ * display style.
+ *
+ * ## A note about animations with `ngShow`
+ *
+ * Animations in `ngShow`/`ngHide` work with the show and hide events that are triggered when the
+ * directive expression is true and false. This system works like the animation system present with
+ * `ngClass` except that you must also include the `!important` flag to override the display
+ * property so that the elements are not actually hidden during the animation.
+ *
+ * ```css
+ * /* A working example can be found at the bottom of this page. */
+ * .my-element.ng-hide-add, .my-element.ng-hide-remove {
+ * transition: all 0.5s linear;
+ * }
+ *
+ * .my-element.ng-hide-add { ... }
+ * .my-element.ng-hide-add.ng-hide-add-active { ... }
+ * .my-element.ng-hide-remove { ... }
+ * .my-element.ng-hide-remove.ng-hide-remove-active { ... }
+ * ```
+ *
+ * Keep in mind that, as of AngularJS version 1.3, there is no need to change the display property
+ * to block during animation states - ngAnimate will automatically handle the style toggling for you.
+ *
+ * @animations
+ * | Animation | Occurs |
+ * |-----------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
+ * | {@link $animate#addClass addClass} `.ng-hide` | After the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden. |
+ * | {@link $animate#removeClass removeClass} `.ng-hide` | After the `ngShow` expression evaluates to a truthy value and just before contents are set to visible. |
+ *
+ * @element ANY
+ * @param {expression} ngShow If the {@link guide/expression expression} is truthy/falsy then the
+ * element is shown/hidden respectively.
+ *
+ * @example
+ * A simple example, animating the element's opacity:
+ *
+
+
+ Show:
+
+ I show up when your checkbox is checked.
+
+
+
+ .animate-show-hide.ng-hide {
+ opacity: 0;
+ }
+
+ .animate-show-hide.ng-hide-add,
+ .animate-show-hide.ng-hide-remove {
+ transition: all linear 0.5s;
+ }
+
+ .check-element {
+ border: 1px solid black;
+ opacity: 1;
+ padding: 10px;
+ }
+
+
+ it('should check ngShow', function() {
+ var checkbox = element(by.model('checked'));
+ var checkElem = element(by.css('.check-element'));
+
+ expect(checkElem.isDisplayed()).toBe(false);
+ checkbox.click();
+ expect(checkElem.isDisplayed()).toBe(true);
+ });
+
+
+ *
+ *
+ * @example
+ * A more complex example, featuring different show/hide animations:
+ *
+
+
+ Show:
+
+ I show up when your checkbox is checked.
+
+
+
+ body {
+ overflow: hidden;
+ perspective: 1000px;
+ }
+
+ .funky-show-hide.ng-hide-add {
+ transform: rotateZ(0);
+ transform-origin: right;
+ transition: all 0.5s ease-in-out;
+ }
+
+ .funky-show-hide.ng-hide-add.ng-hide-add-active {
+ transform: rotateZ(-135deg);
+ }
+
+ .funky-show-hide.ng-hide-remove {
+ transform: rotateY(90deg);
+ transform-origin: left;
+ transition: all 0.5s ease;
+ }
+
+ .funky-show-hide.ng-hide-remove.ng-hide-remove-active {
+ transform: rotateY(0);
+ }
+
+ .check-element {
+ border: 1px solid black;
+ opacity: 1;
+ padding: 10px;
+ }
+
+
+ it('should check ngShow', function() {
+ var checkbox = element(by.model('checked'));
+ var checkElem = element(by.css('.check-element'));
+
+ expect(checkElem.isDisplayed()).toBe(false);
+ checkbox.click();
+ expect(checkElem.isDisplayed()).toBe(true);
+ });
+
+
+ */
+var ngShowDirective = ['$animate', function($animate) {
+ return {
+ restrict: 'A',
+ multiElement: true,
+ link: function(scope, element, attr) {
+ scope.$watch(attr.ngShow, function ngShowWatchAction(value) {
+ // we're adding a temporary, animation-specific class for ng-hide since this way
+ // we can control when the element is actually displayed on screen without having
+ // to have a global/greedy CSS selector that breaks when other animations are run.
+ // Read: https://github.com/angular/angular.js/issues/9103#issuecomment-58335845
+ $animate[value ? 'removeClass' : 'addClass'](element, NG_HIDE_CLASS, {
+ tempClasses: NG_HIDE_IN_PROGRESS_CLASS
+ });
+ });
+ }
+ };
+}];
+
+
+/**
+ * @ngdoc directive
+ * @name ngHide
+ * @multiElement
+ *
+ * @description
+ * The `ngHide` directive shows or hides the given HTML element based on the expression provided to
+ * the `ngHide` attribute.
+ *
+ * The element is shown or hidden by removing or adding the `.ng-hide` CSS class onto the element.
+ * The `.ng-hide` CSS class is predefined in AngularJS and sets the display style to none (using an
+ * `!important` flag). For CSP mode please add `angular-csp.css` to your HTML file (see
+ * {@link ng.directive:ngCsp ngCsp}).
+ *
+ * ```html
+ *
+ *
+ *
+ *
+ *
+ * ```
+ *
+ * When the `ngHide` expression evaluates to a truthy value then the `.ng-hide` CSS class is added
+ * to the class attribute on the element causing it to become hidden. When falsy, the `.ng-hide`
+ * CSS class is removed from the element causing the element not to appear hidden.
+ *
+ * ## Why is `!important` used?
+ *
+ * You may be wondering why `!important` is used for the `.ng-hide` CSS class. This is because the
+ * `.ng-hide` selector can be easily overridden by heavier selectors. For example, something as
+ * simple as changing the display style on a HTML list item would make hidden elements appear
+ * visible. This also becomes a bigger issue when dealing with CSS frameworks.
+ *
+ * By using `!important`, the show and hide behavior will work as expected despite any clash between
+ * CSS selector specificity (when `!important` isn't used with any conflicting styles). If a
+ * developer chooses to override the styling to change how to hide an element then it is just a
+ * matter of using `!important` in their own CSS code.
+ *
+ * ### Overriding `.ng-hide`
+ *
+ * By default, the `.ng-hide` class will style the element with `display: none !important`. If you
+ * wish to change the hide behavior with `ngShow`/`ngHide`, you can simply overwrite the styles for
+ * the `.ng-hide` CSS class. Note that the selector that needs to be used is actually
+ * `.ng-hide:not(.ng-hide-animate)` to cope with extra animation classes that can be added.
+ *
+ * ```css
+ * .ng-hide:not(.ng-hide-animate) {
+ * /* These are just alternative ways of hiding an element */
+ * display: block!important;
+ * position: absolute;
+ * top: -9999px;
+ * left: -9999px;
+ * }
+ * ```
+ *
+ * By default you don't need to override in CSS anything and the animations will work around the
+ * display style.
+ *
+ * ## A note about animations with `ngHide`
+ *
+ * Animations in `ngShow`/`ngHide` work with the show and hide events that are triggered when the
+ * directive expression is true and false. This system works like the animation system present with
+ * `ngClass` except that you must also include the `!important` flag to override the display
+ * property so that the elements are not actually hidden during the animation.
+ *
+ * ```css
+ * /* A working example can be found at the bottom of this page. */
+ * .my-element.ng-hide-add, .my-element.ng-hide-remove {
+ * transition: all 0.5s linear;
+ * }
+ *
+ * .my-element.ng-hide-add { ... }
+ * .my-element.ng-hide-add.ng-hide-add-active { ... }
+ * .my-element.ng-hide-remove { ... }
+ * .my-element.ng-hide-remove.ng-hide-remove-active { ... }
+ * ```
+ *
+ * Keep in mind that, as of AngularJS version 1.3, there is no need to change the display property
+ * to block during animation states - ngAnimate will automatically handle the style toggling for you.
+ *
+ * @animations
+ * | Animation | Occurs |
+ * |-----------------------------------------------------|------------------------------------------------------------------------------------------------------------|
+ * | {@link $animate#addClass addClass} `.ng-hide` | After the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden. |
+ * | {@link $animate#removeClass removeClass} `.ng-hide` | After the `ngHide` expression evaluates to a non truthy value and just before contents are set to visible. |
+ *
+ *
+ * @element ANY
+ * @param {expression} ngHide If the {@link guide/expression expression} is truthy/falsy then the
+ * element is hidden/shown respectively.
+ *
+ * @example
+ * A simple example, animating the element's opacity:
+ *
+
+
+ Hide:
+
+ I hide when your checkbox is checked.
+
+
+
+ .animate-show-hide.ng-hide {
+ opacity: 0;
+ }
+
+ .animate-show-hide.ng-hide-add,
+ .animate-show-hide.ng-hide-remove {
+ transition: all linear 0.5s;
+ }
+
+ .check-element {
+ border: 1px solid black;
+ opacity: 1;
+ padding: 10px;
+ }
+
+
+ it('should check ngHide', function() {
+ var checkbox = element(by.model('checked'));
+ var checkElem = element(by.css('.check-element'));
+
+ expect(checkElem.isDisplayed()).toBe(true);
+ checkbox.click();
+ expect(checkElem.isDisplayed()).toBe(false);
+ });
+
+
+ *
+ *
+ * @example
+ * A more complex example, featuring different show/hide animations:
+ *
+
+
+ Hide:
+
+ I hide when your checkbox is checked.
+
+
+
+ body {
+ overflow: hidden;
+ perspective: 1000px;
+ }
+
+ .funky-show-hide.ng-hide-add {
+ transform: rotateZ(0);
+ transform-origin: right;
+ transition: all 0.5s ease-in-out;
+ }
+
+ .funky-show-hide.ng-hide-add.ng-hide-add-active {
+ transform: rotateZ(-135deg);
+ }
+
+ .funky-show-hide.ng-hide-remove {
+ transform: rotateY(90deg);
+ transform-origin: left;
+ transition: all 0.5s ease;
+ }
+
+ .funky-show-hide.ng-hide-remove.ng-hide-remove-active {
+ transform: rotateY(0);
+ }
+
+ .check-element {
+ border: 1px solid black;
+ opacity: 1;
+ padding: 10px;
+ }
+
+
+ it('should check ngHide', function() {
+ var checkbox = element(by.model('checked'));
+ var checkElem = element(by.css('.check-element'));
+
+ expect(checkElem.isDisplayed()).toBe(true);
+ checkbox.click();
+ expect(checkElem.isDisplayed()).toBe(false);
+ });
+
+
+ */
+var ngHideDirective = ['$animate', function($animate) {
+ return {
+ restrict: 'A',
+ multiElement: true,
+ link: function(scope, element, attr) {
+ scope.$watch(attr.ngHide, function ngHideWatchAction(value) {
+ // The comment inside of the ngShowDirective explains why we add and
+ // remove a temporary class for the show/hide animation
+ $animate[value ? 'addClass' : 'removeClass'](element,NG_HIDE_CLASS, {
+ tempClasses: NG_HIDE_IN_PROGRESS_CLASS
+ });
+ });
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngStyle
+ * @restrict AC
+ *
+ * @description
+ * The `ngStyle` directive allows you to set CSS style on an HTML element conditionally.
+ *
+ * @knownIssue
+ * You should not use {@link guide/interpolation interpolation} in the value of the `style`
+ * attribute, when using the `ngStyle` directive on the same element.
+ * See {@link guide/interpolation#known-issues here} for more info.
+ *
+ * @element ANY
+ * @param {expression} ngStyle
+ *
+ * {@link guide/expression Expression} which evals to an
+ * object whose keys are CSS style names and values are corresponding values for those CSS
+ * keys.
+ *
+ * Since some CSS style names are not valid keys for an object, they must be quoted.
+ * See the 'background-color' style in the example below.
+ *
+ * @example
+
+
+
+
+
+
+ Sample Text
+ myStyle={{myStyle}}
+
+
+ span {
+ color: black;
+ }
+
+
+ var colorSpan = element(by.css('span'));
+
+ it('should check ng-style', function() {
+ expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');
+ element(by.css('input[value=\'set color\']')).click();
+ expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)');
+ element(by.css('input[value=clear]')).click();
+ expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');
+ });
+
+
+ */
+var ngStyleDirective = ngDirective(function(scope, element, attr) {
+ scope.$watch(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) {
+ if (oldStyles && (newStyles !== oldStyles)) {
+ forEach(oldStyles, function(val, style) { element.css(style, '');});
+ }
+ if (newStyles) element.css(newStyles);
+ }, true);
+});
+
+/**
+ * @ngdoc directive
+ * @name ngSwitch
+ * @restrict EA
+ *
+ * @description
+ * The `ngSwitch` directive is used to conditionally swap DOM structure on your template based on a scope expression.
+ * Elements within `ngSwitch` but without `ngSwitchWhen` or `ngSwitchDefault` directives will be preserved at the location
+ * as specified in the template.
+ *
+ * The directive itself works similar to ngInclude, however, instead of downloading template code (or loading it
+ * from the template cache), `ngSwitch` simply chooses one of the nested elements and makes it visible based on which element
+ * matches the value obtained from the evaluated expression. In other words, you define a container element
+ * (where you place the directive), place an expression on the **`on="..."` attribute**
+ * (or the **`ng-switch="..."` attribute**), define any inner elements inside of the directive and place
+ * a when attribute per element. The when attribute is used to inform ngSwitch which element to display when the on
+ * expression is evaluated. If a matching expression is not found via a when attribute then an element with the default
+ * attribute is displayed.
+ *
+ *
+ * Be aware that the attribute values to match against cannot be expressions. They are interpreted
+ * as literal string values to match against.
+ * For example, **`ng-switch-when="someVal"`** will match against the string `"someVal"` not against the
+ * value of the expression `$scope.someVal`.
+ *
+
+ * @animations
+ * | Animation | Occurs |
+ * |----------------------------------|-------------------------------------|
+ * | {@link ng.$animate#enter enter} | after the ngSwitch contents change and the matched child element is placed inside the container |
+ * | {@link ng.$animate#leave leave} | after the ngSwitch contents change and just before the former contents are removed from the DOM |
+ *
+ * @usage
+ *
+ * ```
+ *
+ * ...
+ * ...
+ * ...
+ *
+ * ```
+ *
+ *
+ * @scope
+ * @priority 1200
+ * @param {*} ngSwitch|on expression to match against ng-switch-when.
+ * On child elements add:
+ *
+ * * `ngSwitchWhen`: the case statement to match against. If match then this
+ * case will be displayed. If the same match appears multiple times, all the
+ * elements will be displayed. It is possible to associate multiple values to
+ * the same `ngSwitchWhen` by defining the optional attribute
+ * `ngSwitchWhenSeparator`. The separator will be used to split the value of
+ * the `ngSwitchWhen` attribute into multiple tokens, and the element will show
+ * if any of the `ngSwitch` evaluates to any of these tokens.
+ * * `ngSwitchDefault`: the default case when no other case match. If there
+ * are multiple default cases, all of them will be displayed when no other
+ * case match.
+ *
+ *
+ * @example
+
+
+
+
+
+
selection={{selection}}
+
+
+
Settings Div
+
Home Span
+
default
+
+
+
+
+ angular.module('switchExample', ['ngAnimate'])
+ .controller('ExampleController', ['$scope', function($scope) {
+ $scope.items = ['settings', 'home', 'options', 'other'];
+ $scope.selection = $scope.items[0];
+ }]);
+
+
+ .animate-switch-container {
+ position:relative;
+ background:white;
+ border:1px solid black;
+ height:40px;
+ overflow:hidden;
+ }
+
+ .animate-switch {
+ padding:10px;
+ }
+
+ .animate-switch.ng-animate {
+ transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
+
+ position:absolute;
+ top:0;
+ left:0;
+ right:0;
+ bottom:0;
+ }
+
+ .animate-switch.ng-leave.ng-leave-active,
+ .animate-switch.ng-enter {
+ top:-50px;
+ }
+ .animate-switch.ng-leave,
+ .animate-switch.ng-enter.ng-enter-active {
+ top:0;
+ }
+
+
+ var switchElem = element(by.css('[ng-switch]'));
+ var select = element(by.model('selection'));
+
+ it('should start in settings', function() {
+ expect(switchElem.getText()).toMatch(/Settings Div/);
+ });
+ it('should change to home', function() {
+ select.all(by.css('option')).get(1).click();
+ expect(switchElem.getText()).toMatch(/Home Span/);
+ });
+ it('should change to settings via "options"', function() {
+ select.all(by.css('option')).get(2).click();
+ expect(switchElem.getText()).toMatch(/Settings Div/);
+ });
+ it('should select default', function() {
+ select.all(by.css('option')).get(3).click();
+ expect(switchElem.getText()).toMatch(/default/);
+ });
+
+
+ */
+var ngSwitchDirective = ['$animate', '$compile', function($animate, $compile) {
+ return {
+ require: 'ngSwitch',
+
+ // asks for $scope to fool the BC controller module
+ controller: ['$scope', function NgSwitchController() {
+ this.cases = {};
+ }],
+ link: function(scope, element, attr, ngSwitchController) {
+ var watchExpr = attr.ngSwitch || attr.on,
+ selectedTranscludes = [],
+ selectedElements = [],
+ previousLeaveAnimations = [],
+ selectedScopes = [];
+
+ var spliceFactory = function(array, index) {
+ return function(response) {
+ if (response !== false) array.splice(index, 1);
+ };
+ };
+
+ scope.$watch(watchExpr, function ngSwitchWatchAction(value) {
+ var i, ii;
+
+ // Start with the last, in case the array is modified during the loop
+ while (previousLeaveAnimations.length) {
+ $animate.cancel(previousLeaveAnimations.pop());
+ }
+
+ for (i = 0, ii = selectedScopes.length; i < ii; ++i) {
+ var selected = getBlockNodes(selectedElements[i].clone);
+ selectedScopes[i].$destroy();
+ var runner = previousLeaveAnimations[i] = $animate.leave(selected);
+ runner.done(spliceFactory(previousLeaveAnimations, i));
+ }
+
+ selectedElements.length = 0;
+ selectedScopes.length = 0;
+
+ if ((selectedTranscludes = ngSwitchController.cases['!' + value] || ngSwitchController.cases['?'])) {
+ forEach(selectedTranscludes, function(selectedTransclude) {
+ selectedTransclude.transclude(function(caseElement, selectedScope) {
+ selectedScopes.push(selectedScope);
+ var anchor = selectedTransclude.element;
+ caseElement[caseElement.length++] = $compile.$$createComment('end ngSwitchWhen');
+ var block = { clone: caseElement };
+
+ selectedElements.push(block);
+ $animate.enter(caseElement, anchor.parent(), anchor);
+ });
+ });
+ }
+ });
+ }
+ };
+}];
+
+var ngSwitchWhenDirective = ngDirective({
+ transclude: 'element',
+ priority: 1200,
+ require: '^ngSwitch',
+ multiElement: true,
+ link: function(scope, element, attrs, ctrl, $transclude) {
+
+ var cases = attrs.ngSwitchWhen.split(attrs.ngSwitchWhenSeparator).sort().filter(
+ // Filter duplicate cases
+ function(element, index, array) { return array[index - 1] !== element; }
+ );
+
+ forEach(cases, function(whenCase) {
+ ctrl.cases['!' + whenCase] = (ctrl.cases['!' + whenCase] || []);
+ ctrl.cases['!' + whenCase].push({ transclude: $transclude, element: element });
+ });
+ }
+});
+
+var ngSwitchDefaultDirective = ngDirective({
+ transclude: 'element',
+ priority: 1200,
+ require: '^ngSwitch',
+ multiElement: true,
+ link: function(scope, element, attr, ctrl, $transclude) {
+ ctrl.cases['?'] = (ctrl.cases['?'] || []);
+ ctrl.cases['?'].push({ transclude: $transclude, element: element });
+ }
+});
+
+/**
+ * @ngdoc directive
+ * @name ngTransclude
+ * @restrict EAC
+ *
+ * @description
+ * Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.
+ *
+ * You can specify that you want to insert a named transclusion slot, instead of the default slot, by providing the slot name
+ * as the value of the `ng-transclude` or `ng-transclude-slot` attribute.
+ *
+ * If the transcluded content is not empty (i.e. contains one or more DOM nodes, including whitespace text nodes), any existing
+ * content of this element will be removed before the transcluded content is inserted.
+ * If the transcluded content is empty (or only whitespace), the existing content is left intact. This lets you provide fallback
+ * content in the case that no transcluded content is provided.
+ *
+ * @element ANY
+ *
+ * @param {string} ngTransclude|ngTranscludeSlot the name of the slot to insert at this point. If this is not provided, is empty
+ * or its value is the same as the name of the attribute then the default slot is used.
+ *
+ * @example
+ * ### Basic transclusion
+ * This example demonstrates basic transclusion of content into a component directive.
+ *
+ *
+ *
+ *
+ *
+ *
+ * it('should have transcluded', function() {
+ * var titleElement = element(by.model('title'));
+ * titleElement.clear();
+ * titleElement.sendKeys('TITLE');
+ * var textElement = element(by.model('text'));
+ * textElement.clear();
+ * textElement.sendKeys('TEXT');
+ * expect(element(by.binding('title')).getText()).toEqual('TITLE');
+ * expect(element(by.binding('text')).getText()).toEqual('TEXT');
+ * });
+ *
+ *
+ *
+ * @example
+ * ### Transclude fallback content
+ * This example shows how to use `NgTransclude` with fallback content, that
+ * is displayed if no transcluded content is provided.
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * Button2
+ *
+ *
+ *
+ * it('should have different transclude element content', function() {
+ * expect(element(by.id('fallback')).getText()).toBe('Button1');
+ * expect(element(by.id('modified')).getText()).toBe('Button2');
+ * });
+ *
+ *
+ *
+ * @example
+ * ### Multi-slot transclusion
+ * This example demonstrates using multi-slot transclusion in a component directive.
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * {{title}}
+ * {{text}}
+ *
+ *
+ *
+ *
+ * angular.module('multiSlotTranscludeExample', [])
+ * .directive('pane', function() {
+ * return {
+ * restrict: 'E',
+ * transclude: {
+ * 'title': '?paneTitle',
+ * 'body': 'paneBody',
+ * 'footer': '?paneFooter'
+ * },
+ * template: '' +
+ * '
Fallback Title
' +
+ * '
' +
+ * '' +
+ * '
'
+ * };
+ * })
+ * .controller('ExampleController', ['$scope', function($scope) {
+ * $scope.title = 'Lorem Ipsum';
+ * $scope.link = 'https://google.com';
+ * $scope.text = 'Neque porro quisquam est qui dolorem ipsum quia dolor...';
+ * }]);
+ *
+ *
+ * it('should have transcluded the title and the body', function() {
+ * var titleElement = element(by.model('title'));
+ * titleElement.clear();
+ * titleElement.sendKeys('TITLE');
+ * var textElement = element(by.model('text'));
+ * textElement.clear();
+ * textElement.sendKeys('TEXT');
+ * expect(element(by.css('.title')).getText()).toEqual('TITLE');
+ * expect(element(by.binding('text')).getText()).toEqual('TEXT');
+ * expect(element(by.css('.footer')).getText()).toEqual('Fallback Footer');
+ * });
+ *
+ *
+ */
+var ngTranscludeMinErr = minErr('ngTransclude');
+var ngTranscludeDirective = ['$compile', function($compile) {
+ return {
+ restrict: 'EAC',
+ terminal: true,
+ compile: function ngTranscludeCompile(tElement) {
+
+ // Remove and cache any original content to act as a fallback
+ var fallbackLinkFn = $compile(tElement.contents());
+ tElement.empty();
+
+ return function ngTranscludePostLink($scope, $element, $attrs, controller, $transclude) {
+
+ if (!$transclude) {
+ throw ngTranscludeMinErr('orphan',
+ 'Illegal use of ngTransclude directive in the template! ' +
+ 'No parent directive that requires a transclusion found. ' +
+ 'Element: {0}',
+ startingTag($element));
+ }
+
+
+ // If the attribute is of the form: `ng-transclude="ng-transclude"` then treat it like the default
+ if ($attrs.ngTransclude === $attrs.$attr.ngTransclude) {
+ $attrs.ngTransclude = '';
+ }
+ var slotName = $attrs.ngTransclude || $attrs.ngTranscludeSlot;
+
+ // If the slot is required and no transclusion content is provided then this call will throw an error
+ $transclude(ngTranscludeCloneAttachFn, null, slotName);
+
+ // If the slot is optional and no transclusion content is provided then use the fallback content
+ if (slotName && !$transclude.isSlotFilled(slotName)) {
+ useFallbackContent();
+ }
+
+ function ngTranscludeCloneAttachFn(clone, transcludedScope) {
+ if (clone.length && notWhitespace(clone)) {
+ $element.append(clone);
+ } else {
+ useFallbackContent();
+ // There is nothing linked against the transcluded scope since no content was available,
+ // so it should be safe to clean up the generated scope.
+ transcludedScope.$destroy();
+ }
+ }
+
+ function useFallbackContent() {
+ // Since this is the fallback content rather than the transcluded content,
+ // we link against the scope of this directive rather than the transcluded scope
+ fallbackLinkFn($scope, function(clone) {
+ $element.append(clone);
+ });
+ }
+
+ function notWhitespace(nodes) {
+ for (var i = 0, ii = nodes.length; i < ii; i++) {
+ var node = nodes[i];
+ if (node.nodeType !== NODE_TYPE_TEXT || node.nodeValue.trim()) {
+ return true;
+ }
+ }
+ }
+ };
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name script
+ * @restrict E
+ *
+ * @description
+ * Load the content of a `
+
+ Load inlined template
+
+
+
+ it('should load template defined inside script tag', function() {
+ element(by.css('#tpl-link')).click();
+ expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/);
+ });
+
+
+ */
+var scriptDirective = ['$templateCache', function($templateCache) {
+ return {
+ restrict: 'E',
+ terminal: true,
+ compile: function(element, attr) {
+ if (attr.type === 'text/ng-template') {
+ var templateUrl = attr.id,
+ text = element[0].text;
+
+ $templateCache.put(templateUrl, text);
+ }
+ }
+ };
+}];
+
+/* exported selectDirective, optionDirective */
+
+var noopNgModelController = { $setViewValue: noop, $render: noop };
+
+/**
+ * @ngdoc type
+ * @name select.SelectController
+ * @description
+ * The controller for the `` directive. This provides support for reading
+ * and writing the selected value(s) of the control and also coordinates dynamically
+ * added `` elements, perhaps by an `ngRepeat` directive.
+ */
+var SelectController =
+ ['$element', '$scope', /** @this */ function($element, $scope) {
+
+ var self = this,
+ optionsMap = new NgMap();
+
+ self.selectValueMap = {}; // Keys are the hashed values, values the original values
+
+ // If the ngModel doesn't get provided then provide a dummy noop version to prevent errors
+ self.ngModelCtrl = noopNgModelController;
+ self.multiple = false;
+
+ // The "unknown" option is one that is prepended to the list if the viewValue
+ // does not match any of the options. When it is rendered the value of the unknown
+ // option is '? XXX ?' where XXX is the hashKey of the value that is not known.
+ //
+ // We can't just jqLite(' ') since jqLite is not smart enough
+ // to create it in and IE barfs otherwise.
+ self.unknownOption = jqLite(window.document.createElement('option'));
+
+ // The empty option is an option with the value '' that te application developer can
+ // provide inside the select. When the model changes to a value that doesn't match an option,
+ // it is selected - so if an empty option is provided, no unknown option is generated.
+ // However, the empty option is not removed when the model matches an option. It is always selectable
+ // and indicates that a "null" selection has been made.
+ self.hasEmptyOption = false;
+ self.emptyOption = undefined;
+
+ self.renderUnknownOption = function(val) {
+ var unknownVal = self.generateUnknownOptionValue(val);
+ self.unknownOption.val(unknownVal);
+ $element.prepend(self.unknownOption);
+ setOptionAsSelected(self.unknownOption);
+ $element.val(unknownVal);
+ };
+
+ self.updateUnknownOption = function(val) {
+ var unknownVal = self.generateUnknownOptionValue(val);
+ self.unknownOption.val(unknownVal);
+ setOptionAsSelected(self.unknownOption);
+ $element.val(unknownVal);
+ };
+
+ self.generateUnknownOptionValue = function(val) {
+ return '? ' + hashKey(val) + ' ?';
+ };
+
+ self.removeUnknownOption = function() {
+ if (self.unknownOption.parent()) self.unknownOption.remove();
+ };
+
+ self.selectEmptyOption = function() {
+ if (self.emptyOption) {
+ $element.val('');
+ setOptionAsSelected(self.emptyOption);
+ }
+ };
+
+ self.unselectEmptyOption = function() {
+ if (self.hasEmptyOption) {
+ self.emptyOption.removeAttr('selected');
+ }
+ };
+
+ $scope.$on('$destroy', function() {
+ // disable unknown option so that we don't do work when the whole select is being destroyed
+ self.renderUnknownOption = noop;
+ });
+
+ // Read the value of the select control, the implementation of this changes depending
+ // upon whether the select can have multiple values and whether ngOptions is at work.
+ self.readValue = function readSingleValue() {
+ var val = $element.val();
+ // ngValue added option values are stored in the selectValueMap, normal interpolations are not
+ var realVal = val in self.selectValueMap ? self.selectValueMap[val] : val;
+
+ if (self.hasOption(realVal)) {
+ return realVal;
+ }
+
+ return null;
+ };
+
+
+ // Write the value to the select control, the implementation of this changes depending
+ // upon whether the select can have multiple values and whether ngOptions is at work.
+ self.writeValue = function writeSingleValue(value) {
+ // Make sure to remove the selected attribute from the previously selected option
+ // Otherwise, screen readers might get confused
+ var currentlySelectedOption = $element[0].options[$element[0].selectedIndex];
+ if (currentlySelectedOption) currentlySelectedOption.removeAttribute('selected');
+
+ if (self.hasOption(value)) {
+ self.removeUnknownOption();
+
+ var hashedVal = hashKey(value);
+ $element.val(hashedVal in self.selectValueMap ? hashedVal : value);
+
+ // Set selected attribute and property on selected option for screen readers
+ var selectedOption = $element[0].options[$element[0].selectedIndex];
+ setOptionAsSelected(jqLite(selectedOption));
+ } else {
+ if (value == null && self.emptyOption) {
+ self.removeUnknownOption();
+ self.selectEmptyOption();
+ } else if (self.unknownOption.parent().length) {
+ self.updateUnknownOption(value);
+ } else {
+ self.renderUnknownOption(value);
+ }
+ }
+ };
+
+
+ // Tell the select control that an option, with the given value, has been added
+ self.addOption = function(value, element) {
+ // Skip comment nodes, as they only pollute the `optionsMap`
+ if (element[0].nodeType === NODE_TYPE_COMMENT) return;
+
+ assertNotHasOwnProperty(value, '"option value"');
+ if (value === '') {
+ self.hasEmptyOption = true;
+ self.emptyOption = element;
+ }
+ var count = optionsMap.get(value) || 0;
+ optionsMap.set(value, count + 1);
+ // Only render at the end of a digest. This improves render performance when many options
+ // are added during a digest and ensures all relevant options are correctly marked as selected
+ scheduleRender();
+ };
+
+ // Tell the select control that an option, with the given value, has been removed
+ self.removeOption = function(value) {
+ var count = optionsMap.get(value);
+ if (count) {
+ if (count === 1) {
+ optionsMap.delete(value);
+ if (value === '') {
+ self.hasEmptyOption = false;
+ self.emptyOption = undefined;
+ }
+ } else {
+ optionsMap.set(value, count - 1);
+ }
+ }
+ };
+
+ // Check whether the select control has an option matching the given value
+ self.hasOption = function(value) {
+ return !!optionsMap.get(value);
+ };
+
+
+ var renderScheduled = false;
+ function scheduleRender() {
+ if (renderScheduled) return;
+ renderScheduled = true;
+ $scope.$$postDigest(function() {
+ renderScheduled = false;
+ self.ngModelCtrl.$render();
+ });
+ }
+
+ var updateScheduled = false;
+ function scheduleViewValueUpdate(renderAfter) {
+ if (updateScheduled) return;
+
+ updateScheduled = true;
+
+ $scope.$$postDigest(function() {
+ if ($scope.$$destroyed) return;
+
+ updateScheduled = false;
+ self.ngModelCtrl.$setViewValue(self.readValue());
+ if (renderAfter) self.ngModelCtrl.$render();
+ });
+ }
+
+
+ self.registerOption = function(optionScope, optionElement, optionAttrs, interpolateValueFn, interpolateTextFn) {
+
+ if (optionAttrs.$attr.ngValue) {
+ // The value attribute is set by ngValue
+ var oldVal, hashedVal = NaN;
+ optionAttrs.$observe('value', function valueAttributeObserveAction(newVal) {
+
+ var removal;
+ var previouslySelected = optionElement.prop('selected');
+
+ if (isDefined(hashedVal)) {
+ self.removeOption(oldVal);
+ delete self.selectValueMap[hashedVal];
+ removal = true;
+ }
+
+ hashedVal = hashKey(newVal);
+ oldVal = newVal;
+ self.selectValueMap[hashedVal] = newVal;
+ self.addOption(newVal, optionElement);
+ // Set the attribute directly instead of using optionAttrs.$set - this stops the observer
+ // from firing a second time. Other $observers on value will also get the result of the
+ // ngValue expression, not the hashed value
+ optionElement.attr('value', hashedVal);
+
+ if (removal && previouslySelected) {
+ scheduleViewValueUpdate();
+ }
+
+ });
+ } else if (interpolateValueFn) {
+ // The value attribute is interpolated
+ optionAttrs.$observe('value', function valueAttributeObserveAction(newVal) {
+ // This method is overwritten in ngOptions and has side-effects!
+ self.readValue();
+
+ var removal;
+ var previouslySelected = optionElement.prop('selected');
+
+ if (isDefined(oldVal)) {
+ self.removeOption(oldVal);
+ removal = true;
+ }
+ oldVal = newVal;
+ self.addOption(newVal, optionElement);
+
+ if (removal && previouslySelected) {
+ scheduleViewValueUpdate();
+ }
+ });
+ } else if (interpolateTextFn) {
+ // The text content is interpolated
+ optionScope.$watch(interpolateTextFn, function interpolateWatchAction(newVal, oldVal) {
+ optionAttrs.$set('value', newVal);
+ var previouslySelected = optionElement.prop('selected');
+ if (oldVal !== newVal) {
+ self.removeOption(oldVal);
+ }
+ self.addOption(newVal, optionElement);
+
+ if (oldVal && previouslySelected) {
+ scheduleViewValueUpdate();
+ }
+ });
+ } else {
+ // The value attribute is static
+ self.addOption(optionAttrs.value, optionElement);
+ }
+
+
+ optionAttrs.$observe('disabled', function(newVal) {
+
+ // Since model updates will also select disabled options (like ngOptions),
+ // we only have to handle options becoming disabled, not enabled
+
+ if (newVal === 'true' || newVal && optionElement.prop('selected')) {
+ if (self.multiple) {
+ scheduleViewValueUpdate(true);
+ } else {
+ self.ngModelCtrl.$setViewValue(null);
+ self.ngModelCtrl.$render();
+ }
+ }
+ });
+
+ optionElement.on('$destroy', function() {
+ var currentValue = self.readValue();
+ var removeValue = optionAttrs.value;
+
+ self.removeOption(removeValue);
+ scheduleRender();
+
+ if (self.multiple && currentValue && currentValue.indexOf(removeValue) !== -1 ||
+ currentValue === removeValue
+ ) {
+ // When multiple (selected) options are destroyed at the same time, we don't want
+ // to run a model update for each of them. Instead, run a single update in the $$postDigest
+ scheduleViewValueUpdate(true);
+ }
+ });
+ };
+
+ function setOptionAsSelected(optionEl) {
+ optionEl.prop('selected', true); // needed for IE
+ optionEl.attr('selected', true);
+ }
+}];
+
+/**
+ * @ngdoc directive
+ * @name select
+ * @restrict E
+ *
+ * @description
+ * HTML `select` element with angular data-binding.
+ *
+ * The `select` directive is used together with {@link ngModel `ngModel`} to provide data-binding
+ * between the scope and the `` control (including setting default values).
+ * It also handles dynamic `` elements, which can be added using the {@link ngRepeat `ngRepeat}` or
+ * {@link ngOptions `ngOptions`} directives.
+ *
+ * When an item in the `` menu is selected, the value of the selected option will be bound
+ * to the model identified by the `ngModel` directive. With static or repeated options, this is
+ * the content of the `value` attribute or the textContent of the ``, if the value attribute is missing.
+ * Value and textContent can be interpolated.
+ *
+ * ## Matching model and option values
+ *
+ * In general, the match between the model and an option is evaluated by strictly comparing the model
+ * value against the value of the available options.
+ *
+ * If you are setting the option value with the option's `value` attribute, or textContent, the
+ * value will always be a `string` which means that the model value must also be a string.
+ * Otherwise the `select` directive cannot match them correctly.
+ *
+ * To bind the model to a non-string value, you can use one of the following strategies:
+ * - the {@link ng.ngOptions `ngOptions`} directive
+ * ({@link ng.select#using-select-with-ngoptions-and-setting-a-default-value})
+ * - the {@link ng.ngValue `ngValue`} directive, which allows arbitrary expressions to be
+ * option values ({@link ng.select#using-ngvalue-to-bind-the-model-to-an-array-of-objects Example})
+ * - model $parsers / $formatters to convert the string value
+ * ({@link ng.select#binding-select-to-a-non-string-value-via-ngmodel-parsing-formatting Example})
+ *
+ * If the viewValue of `ngModel` does not match any of the options, then the control
+ * will automatically add an "unknown" option, which it then removes when the mismatch is resolved.
+ *
+ * Optionally, a single hard-coded ` ` element, with the value set to an empty string, can
+ * be nested into the `` element. This element will then represent the `null` or "not selected"
+ * option. See example below for demonstration.
+ *
+ * ## Choosing between `ngRepeat` and `ngOptions`
+ *
+ * In many cases, `ngRepeat` can be used on `` elements instead of {@link ng.directive:ngOptions
+ * ngOptions} to achieve a similar result. However, `ngOptions` provides some benefits:
+ * - more flexibility in how the ``'s model is assigned via the `select` **`as`** part of the
+ * comprehension expression
+ * - reduced memory consumption by not creating a new scope for each repeated instance
+ * - increased render speed by creating the options in a documentFragment instead of individually
+ *
+ * Specifically, select with repeated options slows down significantly starting at 2000 options in
+ * Chrome and Internet Explorer / Edge.
+ *
+ *
+ * @param {string} ngModel Assignable angular expression to data-bind to.
+ * @param {string=} name Property name of the form under which the control is published.
+ * @param {string=} multiple Allows multiple options to be selected. The selected values will be
+ * bound to the model as an array.
+ * @param {string=} required Sets `required` validation error key if the value is not entered.
+ * @param {string=} ngRequired Adds required attribute and required validation constraint to
+ * the element when the ngRequired expression evaluates to true. Use ngRequired instead of required
+ * when you want to data-bind to the required attribute.
+ * @param {string=} ngChange Angular expression to be executed when selected option(s) changes due to user
+ * interaction with the select element.
+ * @param {string=} ngOptions sets the options that the select is populated with and defines what is
+ * set on the model on selection. See {@link ngOptions `ngOptions`}.
+ *
+ * @example
+ * ### Simple `select` elements with static options
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * angular.module('staticSelect', [])
+ * .controller('ExampleController', ['$scope', function($scope) {
+ * $scope.data = {
+ * singleSelect: null,
+ * multipleSelect: [],
+ * option1: 'option-1'
+ * };
+ *
+ * $scope.forceUnknownOption = function() {
+ * $scope.data.singleSelect = 'nonsense';
+ * };
+ * }]);
+ *
+ *
+ *
+ * ### Using `ngRepeat` to generate `select` options
+ *
+ *
+ *
+ *
+ *
+ * model = {{data.model}}
+ *
+ *
+ *
+ * angular.module('ngrepeatSelect', [])
+ * .controller('ExampleController', ['$scope', function($scope) {
+ * $scope.data = {
+ * model: null,
+ * availableOptions: [
+ * {id: '1', name: 'Option A'},
+ * {id: '2', name: 'Option B'},
+ * {id: '3', name: 'Option C'}
+ * ]
+ * };
+ * }]);
+ *
+ *
+ *
+ * ### Using `ngValue` to bind the model to an array of objects
+ *
+ *
+ *
+ *
+ *
+ *
model = {{data.model | json}}
+ *
+ *
+ *
+ * angular.module('ngvalueSelect', [])
+ * .controller('ExampleController', ['$scope', function($scope) {
+ * $scope.data = {
+ * model: null,
+ * availableOptions: [
+ {value: 'myString', name: 'string'},
+ {value: 1, name: 'integer'},
+ {value: true, name: 'boolean'},
+ {value: null, name: 'null'},
+ {value: {prop: 'value'}, name: 'object'},
+ {value: ['a'], name: 'array'}
+ * ]
+ * };
+ * }]);
+ *
+ *
+ *
+ * ### Using `select` with `ngOptions` and setting a default value
+ * See the {@link ngOptions ngOptions documentation} for more `ngOptions` usage examples.
+ *
+ *
+ *
+ *
+ *
+ *
+ * option = {{data.selectedOption}}
+ *
+ *
+ *
+ * angular.module('defaultValueSelect', [])
+ * .controller('ExampleController', ['$scope', function($scope) {
+ * $scope.data = {
+ * availableOptions: [
+ * {id: '1', name: 'Option A'},
+ * {id: '2', name: 'Option B'},
+ * {id: '3', name: 'Option C'}
+ * ],
+ * selectedOption: {id: '3', name: 'Option C'} //This sets the default value of the select in the ui
+ * };
+ * }]);
+ *
+ *
+ *
+ *
+ * ### Binding `select` to a non-string value via `ngModel` parsing / formatting
+ *
+ *
+ *
+ *
+ * Zero
+ * One
+ * Two
+ *
+ * {{ model }}
+ *
+ *
+ * angular.module('nonStringSelect', [])
+ * .run(function($rootScope) {
+ * $rootScope.model = { id: 2 };
+ * })
+ * .directive('convertToNumber', function() {
+ * return {
+ * require: 'ngModel',
+ * link: function(scope, element, attrs, ngModel) {
+ * ngModel.$parsers.push(function(val) {
+ * return parseInt(val, 10);
+ * });
+ * ngModel.$formatters.push(function(val) {
+ * return '' + val;
+ * });
+ * }
+ * };
+ * });
+ *
+ *
+ * it('should initialize to model', function() {
+ * expect(element(by.model('model.id')).$('option:checked').getText()).toEqual('Two');
+ * });
+ *
+ *
+ *
+ */
+var selectDirective = function() {
+
+ return {
+ restrict: 'E',
+ require: ['select', '?ngModel'],
+ controller: SelectController,
+ priority: 1,
+ link: {
+ pre: selectPreLink,
+ post: selectPostLink
+ }
+ };
+
+ function selectPreLink(scope, element, attr, ctrls) {
+
+ var selectCtrl = ctrls[0];
+ var ngModelCtrl = ctrls[1];
+
+ // if ngModel is not defined, we don't need to do anything but set the registerOption
+ // function to noop, so options don't get added internally
+ if (!ngModelCtrl) {
+ selectCtrl.registerOption = noop;
+ return;
+ }
+
+
+ selectCtrl.ngModelCtrl = ngModelCtrl;
+
+ // When the selected item(s) changes we delegate getting the value of the select control
+ // to the `readValue` method, which can be changed if the select can have multiple
+ // selected values or if the options are being generated by `ngOptions`
+ element.on('change', function() {
+ selectCtrl.removeUnknownOption();
+ scope.$apply(function() {
+ ngModelCtrl.$setViewValue(selectCtrl.readValue());
+ });
+ });
+
+ // If the select allows multiple values then we need to modify how we read and write
+ // values from and to the control; also what it means for the value to be empty and
+ // we have to add an extra watch since ngModel doesn't work well with arrays - it
+ // doesn't trigger rendering if only an item in the array changes.
+ if (attr.multiple) {
+ selectCtrl.multiple = true;
+
+ // Read value now needs to check each option to see if it is selected
+ selectCtrl.readValue = function readMultipleValue() {
+ var array = [];
+ forEach(element.find('option'), function(option) {
+ if (option.selected && !option.disabled) {
+ var val = option.value;
+ array.push(val in selectCtrl.selectValueMap ? selectCtrl.selectValueMap[val] : val);
+ }
+ });
+ return array;
+ };
+
+ // Write value now needs to set the selected property of each matching option
+ selectCtrl.writeValue = function writeMultipleValue(value) {
+ forEach(element.find('option'), function(option) {
+ option.selected = !!value && (includes(value, option.value) ||
+ includes(value, selectCtrl.selectValueMap[option.value]));
+ });
+ };
+
+ // we have to do it on each watch since ngModel watches reference, but
+ // we need to work of an array, so we need to see if anything was inserted/removed
+ var lastView, lastViewRef = NaN;
+ scope.$watch(function selectMultipleWatch() {
+ if (lastViewRef === ngModelCtrl.$viewValue && !equals(lastView, ngModelCtrl.$viewValue)) {
+ lastView = shallowCopy(ngModelCtrl.$viewValue);
+ ngModelCtrl.$render();
+ }
+ lastViewRef = ngModelCtrl.$viewValue;
+ });
+
+ // If we are a multiple select then value is now a collection
+ // so the meaning of $isEmpty changes
+ ngModelCtrl.$isEmpty = function(value) {
+ return !value || value.length === 0;
+ };
+
+ }
+ }
+
+ function selectPostLink(scope, element, attrs, ctrls) {
+ // if ngModel is not defined, we don't need to do anything
+ var ngModelCtrl = ctrls[1];
+ if (!ngModelCtrl) return;
+
+ var selectCtrl = ctrls[0];
+
+ // We delegate rendering to the `writeValue` method, which can be changed
+ // if the select can have multiple selected values or if the options are being
+ // generated by `ngOptions`.
+ // This must be done in the postLink fn to prevent $render to be called before
+ // all nodes have been linked correctly.
+ ngModelCtrl.$render = function() {
+ selectCtrl.writeValue(ngModelCtrl.$viewValue);
+ };
+ }
+};
+
+
+// The option directive is purely designed to communicate the existence (or lack of)
+// of dynamically created (and destroyed) option elements to their containing select
+// directive via its controller.
+var optionDirective = ['$interpolate', function($interpolate) {
+ return {
+ restrict: 'E',
+ priority: 100,
+ compile: function(element, attr) {
+ var interpolateValueFn, interpolateTextFn;
+
+ if (isDefined(attr.ngValue)) {
+ // Will be handled by registerOption
+ } else if (isDefined(attr.value)) {
+ // If the value attribute is defined, check if it contains an interpolation
+ interpolateValueFn = $interpolate(attr.value, true);
+ } else {
+ // If the value attribute is not defined then we fall back to the
+ // text content of the option element, which may be interpolated
+ interpolateTextFn = $interpolate(element.text(), true);
+ if (!interpolateTextFn) {
+ attr.$set('value', element.text());
+ }
+ }
+
+ return function(scope, element, attr) {
+ // This is an optimization over using ^^ since we don't want to have to search
+ // all the way to the root of the DOM for every single option element
+ var selectCtrlName = '$selectController',
+ parent = element.parent(),
+ selectCtrl = parent.data(selectCtrlName) ||
+ parent.parent().data(selectCtrlName); // in case we are in optgroup
+
+ if (selectCtrl) {
+ selectCtrl.registerOption(scope, element, attr, interpolateValueFn, interpolateTextFn);
+ }
+ };
+ }
+ };
+}];
+
+/**
+ * @ngdoc directive
+ * @name ngRequired
+ * @restrict A
+ *
+ * @description
+ *
+ * ngRequired adds the required {@link ngModel.NgModelController#$validators `validator`} to {@link ngModel `ngModel`}.
+ * It is most often used for {@link input `input`} and {@link select `select`} controls, but can also be
+ * applied to custom controls.
+ *
+ * The directive sets the `required` attribute on the element if the Angular expression inside
+ * `ngRequired` evaluates to true. A special directive for setting `required` is necessary because we
+ * cannot use interpolation inside `required`. See the {@link guide/interpolation interpolation guide}
+ * for more info.
+ *
+ * The validator will set the `required` error key to true if the `required` attribute is set and
+ * calling {@link ngModel.NgModelController#$isEmpty `NgModelController.$isEmpty`} with the
+ * {@link ngModel.NgModelController#$viewValue `ngModel.$viewValue`} returns `true`. For example, the
+ * `$isEmpty()` implementation for `input[text]` checks the length of the `$viewValue`. When developing
+ * custom controls, `$isEmpty()` can be overwritten to account for a $viewValue that is not string-based.
+ *
+ * @example
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ var required = element(by.binding('form.input.$error.required'));
+ var model = element(by.binding('model'));
+ var input = element(by.id('input'));
+
+ it('should set the required error', function() {
+ expect(required.getText()).toContain('true');
+
+ input.sendKeys('123');
+ expect(required.getText()).not.toContain('true');
+ expect(model.getText()).toContain('123');
+ });
+ *
+ *
+ */
+var requiredDirective = function() {
+ return {
+ restrict: 'A',
+ require: '?ngModel',
+ link: function(scope, elm, attr, ctrl) {
+ if (!ctrl) return;
+ attr.required = true; // force truthy in case we are on non input element
+
+ ctrl.$validators.required = function(modelValue, viewValue) {
+ return !attr.required || !ctrl.$isEmpty(viewValue);
+ };
+
+ attr.$observe('required', function() {
+ ctrl.$validate();
+ });
+ }
+ };
+};
+
+/**
+ * @ngdoc directive
+ * @name ngPattern
+ *
+ * @description
+ *
+ * ngPattern adds the pattern {@link ngModel.NgModelController#$validators `validator`} to {@link ngModel `ngModel`}.
+ * It is most often used for text-based {@link input `input`} controls, but can also be applied to custom text-based controls.
+ *
+ * The validator sets the `pattern` error key if the {@link ngModel.NgModelController#$viewValue `ngModel.$viewValue`}
+ * does not match a RegExp which is obtained by evaluating the Angular expression given in the
+ * `ngPattern` attribute value:
+ * * If the expression evaluates to a RegExp object, then this is used directly.
+ * * If the expression evaluates to a string, then it will be converted to a RegExp after wrapping it
+ * in `^` and `$` characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`.
+ *
+ *
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to
+ * start at the index of the last search's match, thus not taking the whole input value into
+ * account.
+ *
+ *
+ *
+ * **Note:** This directive is also added when the plain `pattern` attribute is used, with two
+ * differences:
+ *
+ *
+ * `ngPattern` does not set the `pattern` attribute and therefore HTML5 constraint validation is
+ * not available.
+ *
+ *
+ * The `ngPattern` attribute must be an expression, while the `pattern` value must be
+ * interpolated.
+ *
+ *
+ *
+ *
+ * @example
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ var model = element(by.binding('model'));
+ var input = element(by.id('input'));
+
+ it('should validate the input with the default pattern', function() {
+ input.sendKeys('aaa');
+ expect(model.getText()).not.toContain('aaa');
+
+ input.clear().then(function() {
+ input.sendKeys('123');
+ expect(model.getText()).toContain('123');
+ });
+ });
+ *
+ *
+ */
+var patternDirective = function() {
+ return {
+ restrict: 'A',
+ require: '?ngModel',
+ link: function(scope, elm, attr, ctrl) {
+ if (!ctrl) return;
+
+ var regexp, patternExp = attr.ngPattern || attr.pattern;
+ attr.$observe('pattern', function(regex) {
+ if (isString(regex) && regex.length > 0) {
+ regex = new RegExp('^' + regex + '$');
+ }
+
+ if (regex && !regex.test) {
+ throw minErr('ngPattern')('noregexp',
+ 'Expected {0} to be a RegExp but was {1}. Element: {2}', patternExp,
+ regex, startingTag(elm));
+ }
+
+ regexp = regex || undefined;
+ ctrl.$validate();
+ });
+
+ ctrl.$validators.pattern = function(modelValue, viewValue) {
+ // HTML5 pattern constraint validates the input value, so we validate the viewValue
+ return ctrl.$isEmpty(viewValue) || isUndefined(regexp) || regexp.test(viewValue);
+ };
+ }
+ };
+};
+
+/**
+ * @ngdoc directive
+ * @name ngMaxlength
+ *
+ * @description
+ *
+ * ngMaxlength adds the maxlength {@link ngModel.NgModelController#$validators `validator`} to {@link ngModel `ngModel`}.
+ * It is most often used for text-based {@link input `input`} controls, but can also be applied to custom text-based controls.
+ *
+ * The validator sets the `maxlength` error key if the {@link ngModel.NgModelController#$viewValue `ngModel.$viewValue`}
+ * is longer than the integer obtained by evaluating the Angular expression given in the
+ * `ngMaxlength` attribute value.
+ *
+ *
+ * **Note:** This directive is also added when the plain `maxlength` attribute is used, with two
+ * differences:
+ *
+ *
+ * `ngMaxlength` does not set the `maxlength` attribute and therefore HTML5 constraint
+ * validation is not available.
+ *
+ *
+ * The `ngMaxlength` attribute must be an expression, while the `maxlength` value must be
+ * interpolated.
+ *
+ *
+ *
+ *
+ * @example
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ var model = element(by.binding('model'));
+ var input = element(by.id('input'));
+
+ it('should validate the input with the default maxlength', function() {
+ input.sendKeys('abcdef');
+ expect(model.getText()).not.toContain('abcdef');
+
+ input.clear().then(function() {
+ input.sendKeys('abcde');
+ expect(model.getText()).toContain('abcde');
+ });
+ });
+ *
+ *
+ */
+var maxlengthDirective = function() {
+ return {
+ restrict: 'A',
+ require: '?ngModel',
+ link: function(scope, elm, attr, ctrl) {
+ if (!ctrl) return;
+
+ var maxlength = -1;
+ attr.$observe('maxlength', function(value) {
+ var intVal = toInt(value);
+ maxlength = isNumberNaN(intVal) ? -1 : intVal;
+ ctrl.$validate();
+ });
+ ctrl.$validators.maxlength = function(modelValue, viewValue) {
+ return (maxlength < 0) || ctrl.$isEmpty(viewValue) || (viewValue.length <= maxlength);
+ };
+ }
+ };
+};
+
+/**
+ * @ngdoc directive
+ * @name ngMinlength
+ *
+ * @description
+ *
+ * ngMinlength adds the minlength {@link ngModel.NgModelController#$validators `validator`} to {@link ngModel `ngModel`}.
+ * It is most often used for text-based {@link input `input`} controls, but can also be applied to custom text-based controls.
+ *
+ * The validator sets the `minlength` error key if the {@link ngModel.NgModelController#$viewValue `ngModel.$viewValue`}
+ * is shorter than the integer obtained by evaluating the Angular expression given in the
+ * `ngMinlength` attribute value.
+ *
+ *
+ * **Note:** This directive is also added when the plain `minlength` attribute is used, with two
+ * differences:
+ *
+ *
+ * `ngMinlength` does not set the `minlength` attribute and therefore HTML5 constraint
+ * validation is not available.
+ *
+ *
+ * The `ngMinlength` value must be an expression, while the `minlength` value must be
+ * interpolated.
+ *
+ *
+ *
+ *
+ * @example
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ var model = element(by.binding('model'));
+ var input = element(by.id('input'));
+
+ it('should validate the input with the default minlength', function() {
+ input.sendKeys('ab');
+ expect(model.getText()).not.toContain('ab');
+
+ input.sendKeys('abc');
+ expect(model.getText()).toContain('abc');
+ });
+ *
+ *
+ */
+var minlengthDirective = function() {
+ return {
+ restrict: 'A',
+ require: '?ngModel',
+ link: function(scope, elm, attr, ctrl) {
+ if (!ctrl) return;
+
+ var minlength = 0;
+ attr.$observe('minlength', function(value) {
+ minlength = toInt(value) || 0;
+ ctrl.$validate();
+ });
+ ctrl.$validators.minlength = function(modelValue, viewValue) {
+ return ctrl.$isEmpty(viewValue) || viewValue.length >= minlength;
+ };
+ }
+ };
+};
+
+if (window.angular.bootstrap) {
+ // AngularJS is already loaded, so we can return here...
+ if (window.console) {
+ console.log('WARNING: Tried to load angular more than once.');
+ }
+ return;
+}
+
+// try to bind to jquery now so that one can write jqLite(fn)
+// but we will rebind on bootstrap again.
+bindJQuery();
+
+publishExternalAPI(angular);
+
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+function getDecimals(n) {
+ n = n + '';
+ var i = n.indexOf('.');
+ return (i == -1) ? 0 : n.length - i - 1;
+}
+
+function getVF(n, opt_precision) {
+ var v = opt_precision;
+
+ if (undefined === v) {
+ v = Math.min(getDecimals(n), 3);
+ }
+
+ var base = Math.pow(10, v);
+ var f = ((n * base) | 0) % base;
+ return {v: v, f: f};
+}
+
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "ERANAMES": [
+ "Before Christ",
+ "Anno Domini"
+ ],
+ "ERAS": [
+ "BC",
+ "AD"
+ ],
+ "FIRSTDAYOFWEEK": 6,
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "STANDALONEMONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "WEEKENDRANGE": [
+ 5,
+ 6
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-\u00a4",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-us",
+ "localeID": "en_US",
+ "pluralCat": function(n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
+
+ jqLite(function() {
+ angularInit(window.document, bootstrap);
+ });
+
+})(window);
+
+!window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend('');
\ No newline at end of file
diff --git a/awx/network_ui/static/network_ui/vendor/hamster.js b/awx/network_ui/static/network_ui/vendor/hamster.js
new file mode 100644
index 0000000000..d7da1feb4e
--- /dev/null
+++ b/awx/network_ui/static/network_ui/vendor/hamster.js
@@ -0,0 +1,327 @@
+/*
+ * Hamster.js v1.1.2
+ * (c) 2013 Monospaced http://monospaced.com
+ * License: MIT
+ */
+
+(function(window, document){
+'use strict';
+
+/**
+ * Hamster
+ * use this to create instances
+ * @returns {Hamster.Instance}
+ * @constructor
+ */
+var Hamster = function(element) {
+ return new Hamster.Instance(element);
+};
+
+// default event name
+Hamster.SUPPORT = 'wheel';
+
+// default DOM methods
+Hamster.ADD_EVENT = 'addEventListener';
+Hamster.REMOVE_EVENT = 'removeEventListener';
+Hamster.PREFIX = '';
+
+// until browser inconsistencies have been fixed...
+Hamster.READY = false;
+
+Hamster.Instance = function(element){
+ if (!Hamster.READY) {
+ // fix browser inconsistencies
+ Hamster.normalise.browser();
+
+ // Hamster is ready...!
+ Hamster.READY = true;
+ }
+
+ this.element = element;
+
+ // store attached event handlers
+ this.handlers = [];
+
+ // return instance
+ return this;
+};
+
+/**
+ * create new hamster instance
+ * all methods should return the instance itself, so it is chainable.
+ * @param {HTMLElement} element
+ * @returns {Hamster.Instance}
+ * @constructor
+ */
+Hamster.Instance.prototype = {
+ /**
+ * bind events to the instance
+ * @param {Function} handler
+ * @param {Boolean} useCapture
+ * @returns {Hamster.Instance}
+ */
+ wheel: function onEvent(handler, useCapture){
+ Hamster.event.add(this, Hamster.SUPPORT, handler, useCapture);
+
+ // handle MozMousePixelScroll in older Firefox
+ if (Hamster.SUPPORT === 'DOMMouseScroll') {
+ Hamster.event.add(this, 'MozMousePixelScroll', handler, useCapture);
+ }
+
+ return this;
+ },
+
+ /**
+ * unbind events to the instance
+ * @param {Function} handler
+ * @param {Boolean} useCapture
+ * @returns {Hamster.Instance}
+ */
+ unwheel: function offEvent(handler, useCapture){
+ // if no handler argument,
+ // unbind the last bound handler (if exists)
+ if (handler === undefined && (handler = this.handlers.slice(-1)[0])) {
+ handler = handler.original;
+ }
+
+ Hamster.event.remove(this, Hamster.SUPPORT, handler, useCapture);
+
+ // handle MozMousePixelScroll in older Firefox
+ if (Hamster.SUPPORT === 'DOMMouseScroll') {
+ Hamster.event.remove(this, 'MozMousePixelScroll', handler, useCapture);
+ }
+
+ return this;
+ }
+};
+
+Hamster.event = {
+ /**
+ * cross-browser 'addWheelListener'
+ * @param {Instance} hamster
+ * @param {String} eventName
+ * @param {Function} handler
+ * @param {Boolean} useCapture
+ */
+ add: function add(hamster, eventName, handler, useCapture){
+ // store the original handler
+ var originalHandler = handler;
+
+ // redefine the handler
+ handler = function(originalEvent){
+
+ if (!originalEvent) {
+ originalEvent = window.event;
+ }
+
+ // create a normalised event object,
+ // and normalise "deltas" of the mouse wheel
+ var event = Hamster.normalise.event(originalEvent),
+ delta = Hamster.normalise.delta(originalEvent);
+
+ // fire the original handler with normalised arguments
+ return originalHandler(event, delta[0], delta[1], delta[2]);
+
+ };
+
+ // cross-browser addEventListener
+ hamster.element[Hamster.ADD_EVENT](Hamster.PREFIX + eventName, handler, useCapture || false);
+
+ // store original and normalised handlers on the instance
+ hamster.handlers.push({
+ original: originalHandler,
+ normalised: handler
+ });
+ },
+
+ /**
+ * removeWheelListener
+ * @param {Instance} hamster
+ * @param {String} eventName
+ * @param {Function} handler
+ * @param {Boolean} useCapture
+ */
+ remove: function remove(hamster, eventName, handler, useCapture){
+ // find the normalised handler on the instance
+ var originalHandler = handler,
+ lookup = {},
+ handlers;
+ for (var i = 0, len = hamster.handlers.length; i < len; ++i) {
+ lookup[hamster.handlers[i].original] = hamster.handlers[i];
+ }
+ handlers = lookup[originalHandler];
+ handler = handlers.normalised;
+
+ // cross-browser removeEventListener
+ hamster.element[Hamster.REMOVE_EVENT](Hamster.PREFIX + eventName, handler, useCapture || false);
+
+ // remove original and normalised handlers from the instance
+ for (var h in hamster.handlers) {
+ if (hamster.handlers[h] === handlers) {
+ hamster.handlers.splice(h, 1);
+ break;
+ }
+ }
+ }
+};
+
+/**
+ * these hold the lowest deltas,
+ * used to normalise the delta values
+ * @type {Number}
+ */
+var lowestDelta,
+ lowestDeltaXY;
+
+Hamster.normalise = {
+ /**
+ * fix browser inconsistencies
+ */
+ browser: function normaliseBrowser(){
+ // detect deprecated wheel events
+ if (!('onwheel' in document || document.documentMode >= 9)) {
+ Hamster.SUPPORT = document.onmousewheel !== undefined ?
+ 'mousewheel' : // webkit and IE < 9 support at least "mousewheel"
+ 'DOMMouseScroll'; // assume remaining browsers are older Firefox
+ }
+
+ // detect deprecated event model
+ if (!window.addEventListener) {
+ // assume IE < 9
+ Hamster.ADD_EVENT = 'attachEvent';
+ Hamster.REMOVE_EVENT = 'detachEvent';
+ Hamster.PREFIX = 'on';
+ }
+
+ },
+
+ /**
+ * create a normalised event object
+ * @param {Function} originalEvent
+ * @returns {Object} event
+ */
+ event: function normaliseEvent(originalEvent){
+ var event = {
+ // keep a reference to the original event object
+ originalEvent: originalEvent,
+ target: originalEvent.target || originalEvent.srcElement,
+ type: 'wheel',
+ deltaMode: originalEvent.type === 'MozMousePixelScroll' ? 0 : 1,
+ deltaX: 0,
+ delatZ: 0,
+ preventDefault: function(){
+ if (originalEvent.preventDefault) {
+ originalEvent.preventDefault();
+ } else {
+ originalEvent.returnValue = false;
+ }
+ },
+ stopPropagation: function(){
+ if (originalEvent.stopPropagation) {
+ originalEvent.stopPropagation();
+ } else {
+ originalEvent.cancelBubble = false;
+ }
+ }
+ };
+
+ // calculate deltaY (and deltaX) according to the event
+
+ // 'mousewheel'
+ if (originalEvent.wheelDelta) {
+ event.deltaY = - 1/40 * originalEvent.wheelDelta;
+ }
+ // webkit
+ if (originalEvent.wheelDeltaX) {
+ event.deltaX = - 1/40 * originalEvent.wheelDeltaX;
+ }
+
+ // 'DomMouseScroll'
+ if (originalEvent.detail) {
+ event.deltaY = originalEvent.detail;
+ }
+
+ return event;
+ },
+
+ /**
+ * normalise 'deltas' of the mouse wheel
+ * @param {Function} originalEvent
+ * @returns {Array} deltas
+ */
+ delta: function normaliseDelta(originalEvent){
+ var delta = 0,
+ deltaX = 0,
+ deltaY = 0,
+ absDelta = 0,
+ absDeltaXY = 0,
+ fn;
+
+ // normalise deltas according to the event
+
+ // 'wheel' event
+ if (originalEvent.deltaY) {
+ deltaY = originalEvent.deltaY * -1;
+ delta = deltaY;
+ }
+ if (originalEvent.deltaX) {
+ deltaX = originalEvent.deltaX;
+ delta = deltaX * -1;
+ }
+
+ // 'mousewheel' event
+ if (originalEvent.wheelDelta) {
+ delta = originalEvent.wheelDelta;
+ }
+ // webkit
+ if (originalEvent.wheelDeltaY) {
+ deltaY = originalEvent.wheelDeltaY;
+ }
+ if (originalEvent.wheelDeltaX) {
+ deltaX = originalEvent.wheelDeltaX * -1;
+ }
+
+ // 'DomMouseScroll' event
+ if (originalEvent.detail) {
+ delta = originalEvent.detail * -1;
+ }
+
+ // Don't return NaN
+ if (delta === 0) {
+ return [0, 0, 0];
+ }
+
+ // look for lowest delta to normalize the delta values
+ absDelta = Math.abs(delta);
+ if (!lowestDelta || absDelta < lowestDelta) {
+ lowestDelta = absDelta;
+ }
+ absDeltaXY = Math.max(Math.abs(deltaY), Math.abs(deltaX));
+ if (!lowestDeltaXY || absDeltaXY < lowestDeltaXY) {
+ lowestDeltaXY = absDeltaXY;
+ }
+
+ // convert deltas to whole numbers
+ fn = delta > 0 ? 'floor' : 'ceil';
+ delta = Math[fn](delta / lowestDelta);
+ deltaX = Math[fn](deltaX / lowestDeltaXY);
+ deltaY = Math[fn](deltaY / lowestDeltaXY);
+
+ return [delta, deltaX, deltaY];
+ }
+};
+
+if (typeof window.define === 'function' && window.define.amd) {
+ // AMD
+ window.define('hamster', [], function(){
+ return Hamster;
+ });
+} else if (typeof exports === 'object') {
+ // CommonJS
+ module.exports = Hamster;
+} else {
+ // Browser global
+ window.Hamster = Hamster;
+}
+
+})(window, window.document);
diff --git a/awx/network_ui/static/network_ui/vendor/mousewheel.js b/awx/network_ui/static/network_ui/vendor/mousewheel.js
new file mode 100644
index 0000000000..512bf78db9
--- /dev/null
+++ b/awx/network_ui/static/network_ui/vendor/mousewheel.js
@@ -0,0 +1,52 @@
+/*
+ * angular-mousewheel v1.0.5
+ * (c) 2013 Monospaced http://monospaced.com
+ * License: MIT
+ */
+
+angular.module('monospaced.mousewheel', [])
+ .directive('msdWheel', ['$parse', function($parse){
+ return {
+ restrict: 'A, C',
+ link: function(scope, element, attr) {
+ var expr = $parse(attr['msdWheel']),
+ fn = function(event, delta, deltaX, deltaY){
+ scope.$apply(function(){
+ expr(scope, {
+ $event: event,
+ $delta: delta,
+ $deltaX: deltaX,
+ $deltaY: deltaY
+ });
+ });
+ },
+ hamster;
+
+ if (typeof Hamster === 'undefined') {
+ // fallback to standard wheel event
+ element.bind('wheel', function(event){
+ scope.$apply(function() {
+ expr(scope, {
+ $event: event
+ });
+ });
+ });
+ return;
+ }
+
+ // don't create multiple Hamster instances per element
+ if (!(hamster = element.data('hamster'))) {
+ hamster = Hamster(element[0]);
+ element.data('hamster', hamster);
+ }
+
+ // bind Hamster wheel event
+ hamster.wheel(fn);
+
+ // unbind Hamster wheel event
+ scope.$on('$destroy', function(){
+ hamster.unwheel(fn);
+ });
+ }
+ };
+ }]);
diff --git a/awx/network_ui/static/network_ui/vendor/ngTouch.js b/awx/network_ui/static/network_ui/vendor/ngTouch.js
new file mode 100644
index 0000000000..2fd3adb42d
--- /dev/null
+++ b/awx/network_ui/static/network_ui/vendor/ngTouch.js
@@ -0,0 +1,87 @@
+/*
+ * ngTouch.js v1.0.2
+ * (c) 2015 Mark Topper
+ * License: MIT
+ */
+
+"use strict";
+
+
+angular.module("ngTouch", [])
+.directive("ngTouchstart", function () {
+ return {
+ controller: ["$scope", "$element", function ($scope, $element) {
+
+ $element.bind("touchstart", onTouchStart);
+ function onTouchStart(event) {
+ var method = $element.attr("ng-touchstart");
+ $scope.$event = event;
+ $scope.$apply(method);
+ }
+
+ }]
+ }
+})
+.directive("ngTouchmove", function () {
+ return {
+ controller: ["$scope", "$element", function ($scope, $element) {
+
+ $element.bind("touchstart", onTouchStart);
+ function onTouchStart(event) {
+ event.preventDefault();
+ $element.bind("touchmove", onTouchMove);
+ $element.bind("touchend", onTouchEnd);
+ }
+ function onTouchMove(event) {
+ var method = $element.attr("ng-touchmove");
+ $scope.$event = event;
+ $scope.$apply(method);
+ }
+ function onTouchEnd(event) {
+ event.preventDefault();
+ $element.unbind("touchmove", onTouchMove);
+ $element.unbind("touchend", onTouchEnd);
+ }
+
+ }]
+ }
+})
+.directive("ngTouchend", function () {
+ return {
+ controller: ["$scope", "$element", function ($scope, $element) {
+
+ $element.bind("touchend", onTouchEnd);
+ function onTouchEnd(event) {
+ var method = $element.attr("ng-touchend");
+ $scope.$event = event;
+ $scope.$apply(method);
+ }
+
+ }]
+ }
+})
+.directive("ngTap", function () {
+ return {
+ controller: ["$scope", "$element", function ($scope, $element) {
+
+ var moved = false;
+ $element.bind("touchstart", onTouchStart);
+ function onTouchStart(event) {
+ $element.bind("touchmove", onTouchMove);
+ $element.bind("touchend", onTouchEnd);
+ }
+ function onTouchMove(event) {
+ moved = true;
+ }
+ function onTouchEnd(event) {
+ $element.unbind("touchmove", onTouchMove);
+ $element.unbind("touchend", onTouchEnd);
+ if (!moved) {
+ var method = $element.attr("ng-tap");
+ $scope.$apply(method);
+ }
+ }
+
+ }]
+ }
+});
diff --git a/awx/network_ui/static/network_ui/vendor/reconnecting-websocket.js b/awx/network_ui/static/network_ui/vendor/reconnecting-websocket.js
new file mode 100644
index 0000000000..0cd4332dcf
--- /dev/null
+++ b/awx/network_ui/static/network_ui/vendor/reconnecting-websocket.js
@@ -0,0 +1,365 @@
+// MIT License:
+//
+// Copyright (c) 2010-2012, Joe Walnes
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+/**
+ * This behaves like a WebSocket in every way, except if it fails to connect,
+ * or it gets disconnected, it will repeatedly poll until it successfully connects
+ * again.
+ *
+ * It is API compatible, so when you have:
+ * ws = new WebSocket('ws://....');
+ * you can replace with:
+ * ws = new ReconnectingWebSocket('ws://....');
+ *
+ * The event stream will typically look like:
+ * onconnecting
+ * onopen
+ * onmessage
+ * onmessage
+ * onclose // lost connection
+ * onconnecting
+ * onopen // sometime later...
+ * onmessage
+ * onmessage
+ * etc...
+ *
+ * It is API compatible with the standard WebSocket API, apart from the following members:
+ *
+ * - `bufferedAmount`
+ * - `extensions`
+ * - `binaryType`
+ *
+ * Latest version: https://github.com/joewalnes/reconnecting-websocket/
+ * - Joe Walnes
+ *
+ * Syntax
+ * ======
+ * var socket = new ReconnectingWebSocket(url, protocols, options);
+ *
+ * Parameters
+ * ==========
+ * url - The url you are connecting to.
+ * protocols - Optional string or array of protocols.
+ * options - See below
+ *
+ * Options
+ * =======
+ * Options can either be passed upon instantiation or set after instantiation:
+ *
+ * var socket = new ReconnectingWebSocket(url, null, { debug: true, reconnectInterval: 4000 });
+ *
+ * or
+ *
+ * var socket = new ReconnectingWebSocket(url);
+ * socket.debug = true;
+ * socket.reconnectInterval = 4000;
+ *
+ * debug
+ * - Whether this instance should log debug messages. Accepts true or false. Default: false.
+ *
+ * automaticOpen
+ * - Whether or not the websocket should attempt to connect immediately upon instantiation. The socket can be manually opened or closed at any time using ws.open() and ws.close().
+ *
+ * reconnectInterval
+ * - The number of milliseconds to delay before attempting to reconnect. Accepts integer. Default: 1000.
+ *
+ * maxReconnectInterval
+ * - The maximum number of milliseconds to delay a reconnection attempt. Accepts integer. Default: 30000.
+ *
+ * reconnectDecay
+ * - The rate of increase of the reconnect delay. Allows reconnect attempts to back off when problems persist. Accepts integer or float. Default: 1.5.
+ *
+ * timeoutInterval
+ * - The maximum time in milliseconds to wait for a connection to succeed before closing and retrying. Accepts integer. Default: 2000.
+ *
+ */
+(function (global, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define([], factory);
+ } else if (typeof module !== 'undefined' && module.exports){
+ module.exports = factory();
+ } else {
+ global.ReconnectingWebSocket = factory();
+ }
+})(this, function () {
+
+ if (!('WebSocket' in window)) {
+ return;
+ }
+
+ function ReconnectingWebSocket(url, protocols, options) {
+
+ // Default settings
+ var settings = {
+
+ /** Whether this instance should log debug messages. */
+ debug: false,
+
+ /** Whether or not the websocket should attempt to connect immediately upon instantiation. */
+ automaticOpen: true,
+
+ /** The number of milliseconds to delay before attempting to reconnect. */
+ reconnectInterval: 1000,
+ /** The maximum number of milliseconds to delay a reconnection attempt. */
+ maxReconnectInterval: 30000,
+ /** The rate of increase of the reconnect delay. Allows reconnect attempts to back off when problems persist. */
+ reconnectDecay: 1.5,
+
+ /** The maximum time in milliseconds to wait for a connection to succeed before closing and retrying. */
+ timeoutInterval: 2000,
+
+ /** The maximum number of reconnection attempts to make. Unlimited if null. */
+ maxReconnectAttempts: null,
+
+ /** The binary type, possible values 'blob' or 'arraybuffer', default 'blob'. */
+ binaryType: 'blob'
+ }
+ if (!options) { options = {}; }
+
+ // Overwrite and define settings with options if they exist.
+ for (var key in settings) {
+ if (typeof options[key] !== 'undefined') {
+ this[key] = options[key];
+ } else {
+ this[key] = settings[key];
+ }
+ }
+
+ // These should be treated as read-only properties
+
+ /** The URL as resolved by the constructor. This is always an absolute URL. Read only. */
+ this.url = url;
+
+ /** The number of attempted reconnects since starting, or the last successful connection. Read only. */
+ this.reconnectAttempts = 0;
+
+ /**
+ * The current state of the connection.
+ * Can be one of: WebSocket.CONNECTING, WebSocket.OPEN, WebSocket.CLOSING, WebSocket.CLOSED
+ * Read only.
+ */
+ this.readyState = WebSocket.CONNECTING;
+
+ /**
+ * A string indicating the name of the sub-protocol the server selected; this will be one of
+ * the strings specified in the protocols parameter when creating the WebSocket object.
+ * Read only.
+ */
+ this.protocol = null;
+
+ // Private state variables
+
+ var self = this;
+ var ws;
+ var forcedClose = false;
+ var timedOut = false;
+ var eventTarget = document.createElement('div');
+
+ // Wire up "on*" properties as event handlers
+
+ eventTarget.addEventListener('open', function(event) { self.onopen(event); });
+ eventTarget.addEventListener('close', function(event) { self.onclose(event); });
+ eventTarget.addEventListener('connecting', function(event) { self.onconnecting(event); });
+ eventTarget.addEventListener('message', function(event) { self.onmessage(event); });
+ eventTarget.addEventListener('error', function(event) { self.onerror(event); });
+
+ // Expose the API required by EventTarget
+
+ this.addEventListener = eventTarget.addEventListener.bind(eventTarget);
+ this.removeEventListener = eventTarget.removeEventListener.bind(eventTarget);
+ this.dispatchEvent = eventTarget.dispatchEvent.bind(eventTarget);
+
+ /**
+ * This function generates an event that is compatible with standard
+ * compliant browsers and IE9 - IE11
+ *
+ * This will prevent the error:
+ * Object doesn't support this action
+ *
+ * http://stackoverflow.com/questions/19345392/why-arent-my-parameters-getting-passed-through-to-a-dispatched-event/19345563#19345563
+ * @param s String The name that the event should use
+ * @param args Object an optional object that the event will use
+ */
+ function generateEvent(s, args) {
+ var evt = document.createEvent("CustomEvent");
+ evt.initCustomEvent(s, false, false, args);
+ return evt;
+ };
+
+ this.open = function (reconnectAttempt) {
+ ws = new WebSocket(self.url, protocols || []);
+ ws.binaryType = this.binaryType;
+
+ if (reconnectAttempt) {
+ if (this.maxReconnectAttempts && this.reconnectAttempts > this.maxReconnectAttempts) {
+ return;
+ }
+ } else {
+ eventTarget.dispatchEvent(generateEvent('connecting'));
+ this.reconnectAttempts = 0;
+ }
+
+ if (self.debug || ReconnectingWebSocket.debugAll) {
+ console.debug('ReconnectingWebSocket', 'attempt-connect', self.url);
+ }
+
+ var localWs = ws;
+ var timeout = setTimeout(function() {
+ if (self.debug || ReconnectingWebSocket.debugAll) {
+ console.debug('ReconnectingWebSocket', 'connection-timeout', self.url);
+ }
+ timedOut = true;
+ localWs.close();
+ timedOut = false;
+ }, self.timeoutInterval);
+
+ ws.onopen = function(event) {
+ clearTimeout(timeout);
+ if (self.debug || ReconnectingWebSocket.debugAll) {
+ console.debug('ReconnectingWebSocket', 'onopen', self.url);
+ }
+ self.protocol = ws.protocol;
+ self.readyState = WebSocket.OPEN;
+ self.reconnectAttempts = 0;
+ var e = generateEvent('open');
+ e.isReconnect = reconnectAttempt;
+ reconnectAttempt = false;
+ eventTarget.dispatchEvent(e);
+ };
+
+ ws.onclose = function(event) {
+ clearTimeout(timeout);
+ ws = null;
+ if (forcedClose) {
+ self.readyState = WebSocket.CLOSED;
+ eventTarget.dispatchEvent(generateEvent('close'));
+ } else {
+ self.readyState = WebSocket.CONNECTING;
+ var e = generateEvent('connecting');
+ e.code = event.code;
+ e.reason = event.reason;
+ e.wasClean = event.wasClean;
+ eventTarget.dispatchEvent(e);
+ if (!reconnectAttempt && !timedOut) {
+ if (self.debug || ReconnectingWebSocket.debugAll) {
+ console.debug('ReconnectingWebSocket', 'onclose', self.url);
+ }
+ eventTarget.dispatchEvent(generateEvent('close'));
+ }
+
+ var timeout = self.reconnectInterval * Math.pow(self.reconnectDecay, self.reconnectAttempts);
+ setTimeout(function() {
+ self.reconnectAttempts++;
+ self.open(true);
+ }, timeout > self.maxReconnectInterval ? self.maxReconnectInterval : timeout);
+ }
+ };
+ ws.onmessage = function(event) {
+ if (self.debug || ReconnectingWebSocket.debugAll) {
+ console.debug('ReconnectingWebSocket', 'onmessage', self.url, event.data);
+ }
+ var e = generateEvent('message');
+ e.data = event.data;
+ eventTarget.dispatchEvent(e);
+ };
+ ws.onerror = function(event) {
+ if (self.debug || ReconnectingWebSocket.debugAll) {
+ console.debug('ReconnectingWebSocket', 'onerror', self.url, event);
+ }
+ eventTarget.dispatchEvent(generateEvent('error'));
+ };
+ }
+
+ // Whether or not to create a websocket upon instantiation
+ if (this.automaticOpen == true) {
+ this.open(false);
+ }
+
+ /**
+ * Transmits data to the server over the WebSocket connection.
+ *
+ * @param data a text string, ArrayBuffer or Blob to send to the server.
+ */
+ this.send = function(data) {
+ if (ws) {
+ if (self.debug || ReconnectingWebSocket.debugAll) {
+ console.debug('ReconnectingWebSocket', 'send', self.url, data);
+ }
+ return ws.send(data);
+ } else {
+ throw 'INVALID_STATE_ERR : Pausing to reconnect websocket';
+ }
+ };
+
+ /**
+ * Closes the WebSocket connection or connection attempt, if any.
+ * If the connection is already CLOSED, this method does nothing.
+ */
+ this.close = function(code, reason) {
+ // Default CLOSE_NORMAL code
+ if (typeof code == 'undefined') {
+ code = 1000;
+ }
+ forcedClose = true;
+ if (ws) {
+ ws.close(code, reason);
+ }
+ };
+
+ /**
+ * Additional public API method to refresh the connection if still open (close, re-open).
+ * For example, if the app suspects bad data / missed heart beats, it can try to refresh.
+ */
+ this.refresh = function() {
+ if (ws) {
+ ws.close();
+ }
+ };
+ }
+
+ /**
+ * An event listener to be called when the WebSocket connection's readyState changes to OPEN;
+ * this indicates that the connection is ready to send and receive data.
+ */
+ ReconnectingWebSocket.prototype.onopen = function(event) {};
+ /** An event listener to be called when the WebSocket connection's readyState changes to CLOSED. */
+ ReconnectingWebSocket.prototype.onclose = function(event) {};
+ /** An event listener to be called when a connection begins being attempted. */
+ ReconnectingWebSocket.prototype.onconnecting = function(event) {};
+ /** An event listener to be called when a message is received from the server. */
+ ReconnectingWebSocket.prototype.onmessage = function(event) {};
+ /** An event listener to be called when an error occurs. */
+ ReconnectingWebSocket.prototype.onerror = function(event) {};
+
+ /**
+ * Whether all instances of ReconnectingWebSocket should log debug messages.
+ * Setting this to true is the equivalent of setting all instances of ReconnectingWebSocket.debug to true.
+ */
+ ReconnectingWebSocket.debugAll = false;
+
+ ReconnectingWebSocket.CONNECTING = WebSocket.CONNECTING;
+ ReconnectingWebSocket.OPEN = WebSocket.OPEN;
+ ReconnectingWebSocket.CLOSING = WebSocket.CLOSING;
+ ReconnectingWebSocket.CLOSED = WebSocket.CLOSED;
+
+ return ReconnectingWebSocket;
+});
diff --git a/awx/network_ui/static/network_ui/vendor/svg-crowbar.js b/awx/network_ui/static/network_ui/vendor/svg-crowbar.js
new file mode 100644
index 0000000000..359563054d
--- /dev/null
+++ b/awx/network_ui/static/network_ui/vendor/svg-crowbar.js
@@ -0,0 +1,250 @@
+/**
+ * @license svg-crowbar
+ * (c) 2013 The New York Times
+ * License: MIT
+ */
+function svg_crowbar () {
+ var doctype = '';
+
+ window.URL = (window.URL || window.webkitURL);
+
+ var body = document.body;
+
+ var prefix = {
+ xmlns: "http://www.w3.org/2000/xmlns/",
+ xlink: "http://www.w3.org/1999/xlink",
+ svg: "http://www.w3.org/2000/svg"
+ }
+
+ initialize();
+
+ function initialize() {
+ var documents = [window.document],
+ SVGSources = [];
+ iframes = document.querySelectorAll("iframe"),
+ objects = document.querySelectorAll("object");
+
+ [].forEach.call(iframes, function(el) {
+ try {
+ if (el.contentDocument) {
+ documents.push(el.contentDocument);
+ }
+ } catch(err) {
+ console.log(err)
+ }
+ });
+
+ [].forEach.call(objects, function(el) {
+ try {
+ if (el.contentDocument) {
+ documents.push(el.contentDocument);
+ }
+ } catch(err) {
+ console.log(err)
+ }
+ });
+
+ documents.forEach(function(doc) {
+ var styles = getStyles(doc);
+ var newSources = getSources(doc, styles);
+ // because of prototype on NYT pages
+ for (var i = 0; i < newSources.length; i++) {
+ SVGSources.push(newSources[i]);
+ };
+ })
+ if (SVGSources.length > 1) {
+ createPopover(SVGSources);
+ } else if (SVGSources.length > 0) {
+ download(SVGSources[0]);
+ } else {
+ alert("The Crowbar couldn’t find any SVG nodes.");
+ }
+ }
+
+ function createPopover(sources) {
+ cleanup();
+
+ sources.forEach(function(s1) {
+ sources.forEach(function(s2) {
+ if (s1 !== s2) {
+ if ((Math.abs(s1.top - s2.top) < 38) && (Math.abs(s1.left - s2.left) < 38)) {
+ s2.top += 38;
+ s2.left += 38;
+ }
+ }
+ })
+ });
+
+ var buttonsContainer = document.createElement("div");
+ body.appendChild(buttonsContainer);
+
+ buttonsContainer.setAttribute("class", "svg-crowbar");
+ buttonsContainer.style["z-index"] = 1e7;
+ buttonsContainer.style["position"] = "absolute";
+ buttonsContainer.style["top"] = 0;
+ buttonsContainer.style["left"] = 0;
+
+
+
+ var background = document.createElement("div");
+ body.appendChild(background);
+
+ background.setAttribute("class", "svg-crowbar");
+ background.style["background"] = "rgba(255, 255, 255, 0.7)";
+ background.style["position"] = "fixed";
+ background.style["left"] = 0;
+ background.style["top"] = 0;
+ background.style["width"] = "100%";
+ background.style["height"] = "100%";
+
+ sources.forEach(function(d, i) {
+ var buttonWrapper = document.createElement("div");
+ buttonsContainer.appendChild(buttonWrapper);
+ buttonWrapper.setAttribute("class", "svg-crowbar");
+ buttonWrapper.style["position"] = "absolute";
+ buttonWrapper.style["top"] = (d.top + document.body.scrollTop) + "px";
+ buttonWrapper.style["left"] = (document.body.scrollLeft + d.left) + "px";
+ buttonWrapper.style["padding"] = "4px";
+ buttonWrapper.style["border-radius"] = "3px";
+ buttonWrapper.style["color"] = "white";
+ buttonWrapper.style["text-align"] = "center";
+ buttonWrapper.style["font-family"] = "'Helvetica Neue'";
+ buttonWrapper.style["background"] = "rgba(0, 0, 0, 0.8)";
+ buttonWrapper.style["box-shadow"] = "0px 4px 18px rgba(0, 0, 0, 0.4)";
+ buttonWrapper.style["cursor"] = "move";
+ buttonWrapper.textContent = "SVG #" + i + ": " + (d.id ? "#" + d.id : "") + (d.class ? "." + d.class : "");
+
+ var button = document.createElement("button");
+ buttonWrapper.appendChild(button);
+ button.setAttribute("data-source-id", i)
+ button.style["width"] = "150px";
+ button.style["font-size"] = "12px";
+ button.style["line-height"] = "1.4em";
+ button.style["margin"] = "5px 0 0 0";
+ button.textContent = "Download";
+
+ button.onclick = function(el) {
+ // console.log(el, d, i, sources)
+ download(d);
+ };
+
+ });
+
+ }
+
+ function cleanup() {
+ var crowbarElements = document.querySelectorAll(".svg-crowbar");
+
+ [].forEach.call(crowbarElements, function(el) {
+ el.parentNode.removeChild(el);
+ });
+ }
+
+
+ function getSources(doc, styles) {
+ var svgInfo = [],
+ svgs = doc.querySelectorAll("svg");
+
+ styles = (styles === undefined) ? "" : styles;
+
+ [].forEach.call(svgs, function (svg) {
+
+ svg.setAttribute("version", "1.1");
+
+ var defsEl = document.createElement("defs");
+ svg.insertBefore(defsEl, svg.firstChild); //TODO .insert("defs", ":first-child")
+ // defsEl.setAttribute("class", "svg-crowbar");
+
+ var styleEl = document.createElement("style")
+ defsEl.appendChild(styleEl);
+ styleEl.setAttribute("type", "text/css");
+
+
+ // removing attributes so they aren't doubled up
+ svg.removeAttribute("xmlns");
+ svg.removeAttribute("xlink");
+
+ // These are needed for the svg
+ if (!svg.hasAttributeNS(prefix.xmlns, "xmlns")) {
+ svg.setAttributeNS(prefix.xmlns, "xmlns", prefix.svg);
+ }
+
+ if (!svg.hasAttributeNS(prefix.xmlns, "xmlns:xlink")) {
+ svg.setAttributeNS(prefix.xmlns, "xmlns:xlink", prefix.xlink);
+ }
+
+ var source = (new XMLSerializer()).serializeToString(svg).replace('', '');
+ var rect = svg.getBoundingClientRect();
+ svgInfo.push({
+ top: rect.top,
+ left: rect.left,
+ width: rect.width,
+ height: rect.height,
+ class: svg.getAttribute("class"),
+ id: svg.getAttribute("id"),
+ childElementCount: svg.childElementCount,
+ source: [doctype + source]
+ });
+ });
+ return svgInfo;
+ }
+
+ function download(source) {
+ var filename = "untitled";
+
+ if (source.id) {
+ filename = source.id;
+ } else if (source.class) {
+ filename = source.class;
+ } else if (window.document.title) {
+ filename = window.document.title.replace(/[^a-z0-9]/gi, '-').toLowerCase();
+ }
+
+ var url = window.URL.createObjectURL(new Blob(source.source, { "type" : "text\/xml" }));
+
+ var a = document.createElement("a");
+ body.appendChild(a);
+ a.setAttribute("class", "svg-crowbar");
+ a.setAttribute("download", filename + ".svg");
+ a.setAttribute("href", url);
+ a.style["display"] = "none";
+ a.click();
+
+ setTimeout(function() {
+ window.URL.revokeObjectURL(url);
+ }, 10);
+ }
+
+ function getStyles(doc) {
+ var styles = "",
+ styleSheets = doc.styleSheets;
+
+ if (styleSheets) {
+ for (var i = 0; i < styleSheets.length; i++) {
+ processStyleSheet(styleSheets[i]);
+ }
+ }
+
+ function processStyleSheet(ss) {
+ if (ss.cssRules) {
+ for (var i = 0; i < ss.cssRules.length; i++) {
+ var rule = ss.cssRules[i];
+ if (rule.type === 3) {
+ // Import Rule
+ processStyleSheet(rule.styleSheet);
+ } else {
+ // hack for illustrator crashing on descendent selectors
+ if (rule.selectorText) {
+ if (rule.selectorText.indexOf(">") === -1) {
+ styles += "\n" + rule.cssText;
+ }
+ }
+ }
+ }
+ }
+ }
+ return styles;
+ }
+
+}
+exports.svg_crowbar = svg_crowbar;
diff --git a/awx/network_ui/static/network_ui/widgets/button.html b/awx/network_ui/static/network_ui/widgets/button.html
new file mode 100644
index 0000000000..318dae9520
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/button.html
@@ -0,0 +1,11 @@
+
+
+
+ {{button.name}}
diff --git a/awx/network_ui/static/network_ui/widgets/cursor.html b/awx/network_ui/static/network_ui/widgets/cursor.html
new file mode 100644
index 0000000000..592703c4c1
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/cursor.html
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/awx/network_ui/static/network_ui/widgets/debug.html b/awx/network_ui/static/network_ui/widgets/debug.html
new file mode 100644
index 0000000000..6a4400ad26
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/debug.html
@@ -0,0 +1,32 @@
+
+
+
+ width: {{graph.width}}
+ height: {{graph.height}}
+ rc: {{graph.right_column}}
+ Mouse down: {{onMouseDownResult}}
+ Mouse up: {{onMouseUpResult}}
+ Mouse move: {{onMouseMoveResult}}
+ Mouse over: {{onMouseOverResult}}
+ Mouse enter: {{onMouseEnterResult}}
+ Mouse leave: {{onMouseLeaveResult}}
+ Current scale: {{current_scale.toFixed(2)}}
+ Pan X: {{panX.toFixed(2)}}
+ Pan Y: {{panY.toFixed(2)}}
+ View State: {{view_controller.state.name}}
+ Mouse X: {{mouseX.toFixed(2)}}
+ Mouse Y: {{mouseY.toFixed(2)}}
+ Scaled X: {{scaledX.toFixed(2)}}
+ Scaled Y: {{scaledY.toFixed(2)}}
+ Key: {{last_key}}
+ Key Code: {{last_key_code}}
+ Move State: {{move_controller.state.name}}
+ Selected devices: {{selected_devices.length}}
+ Selected links: {{selected_links.length}}
+ Link State: {{link_controller.state.name}}
+ Buttons State: {{buttons_controller.state.name}}
+ Time State: {{time_controller.state.name}}
+ Time Pointer: {{time_pointer}}
+ History: {{history.length}}
+ Touch Data: {{touch_data.xb}} {{touch_data.yb}} {{touch_data.d}}
+
diff --git a/awx/network_ui/static/network_ui/widgets/default.html b/awx/network_ui/static/network_ui/widgets/default.html
new file mode 100644
index 0000000000..519df77101
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/default.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+ {{device.name}}
+ {{device.name}}{{device.edit_label?'_':''}}
+
diff --git a/awx/network_ui/static/network_ui/widgets/host.html b/awx/network_ui/static/network_ui/widgets/host.html
new file mode 100644
index 0000000000..9e8ce63fa1
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/host.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{device.name}}
+ {{device.name}}{{device.edit_label?'_':''}}
+
diff --git a/awx/network_ui/static/network_ui/widgets/layer.html b/awx/network_ui/static/network_ui/widgets/layer.html
new file mode 100644
index 0000000000..44d9b56338
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/layer.html
@@ -0,0 +1,11 @@
+
+
+
+ {{layer.name}}
diff --git a/awx/network_ui/static/network_ui/widgets/link.html b/awx/network_ui/static/network_ui/widgets/link.html
new file mode 100644
index 0000000000..57e7dd2850
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/link.html
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{link.name}}
+{{link.name}}{{link.edit_label?'_':''}}
+
+
+
+ {{link.from_interface.name}}
+{{link.from_interface.name}}{{link.from_interface.edit_label ?'_':''}}
+
+
+
+ {{link.to_interface.name}}
+{{link.to_interface.name}}{{link.to_interface.edit_label?'_':''}}
+
+
+
+
+
+
+
+
diff --git a/awx/network_ui/static/network_ui/widgets/quadrants.html b/awx/network_ui/static/network_ui/widgets/quadrants.html
new file mode 100644
index 0000000000..eceb02cb3a
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/quadrants.html
@@ -0,0 +1,10 @@
+
+
diff --git a/awx/network_ui/static/network_ui/widgets/rack.html b/awx/network_ui/static/network_ui/widgets/rack.html
new file mode 100644
index 0000000000..92e4bfe2b8
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/rack.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{device.name}}
+ {{device.name}}{{device.edit_label?'_':''}}
+
+
diff --git a/awx/network_ui/static/network_ui/widgets/router.html b/awx/network_ui/static/network_ui/widgets/router.html
new file mode 100644
index 0000000000..59302e1854
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/router.html
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{device.name}}
+ {{device.name}}{{device.edit_label?'_':''}}
+
+
diff --git a/awx/network_ui/static/network_ui/widgets/status_light.html b/awx/network_ui/static/network_ui/widgets/status_light.html
new file mode 100644
index 0000000000..c53a434306
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/status_light.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/awx/network_ui/static/network_ui/widgets/stencil.html b/awx/network_ui/static/network_ui/widgets/stencil.html
new file mode 100644
index 0000000000..80509facd1
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/stencil.html
@@ -0,0 +1,11 @@
+
+
+
+ {{stencil.name}}
diff --git a/awx/network_ui/static/network_ui/widgets/switch.html b/awx/network_ui/static/network_ui/widgets/switch.html
new file mode 100644
index 0000000000..919e736b21
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/switch.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{device.name}}
+ {{device.name}}{{device.edit_label?'_':''}}
+
diff --git a/awx/network_ui/static/network_ui/widgets/task_status.html b/awx/network_ui/static/network_ui/widgets/task_status.html
new file mode 100644
index 0000000000..05eab187c2
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/task_status.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/awx/network_ui/static/network_ui/widgets/touch.html b/awx/network_ui/static/network_ui/widgets/touch.html
new file mode 100644
index 0000000000..32b1193760
--- /dev/null
+++ b/awx/network_ui/static/network_ui/widgets/touch.html
@@ -0,0 +1,3 @@
+
+
+
diff --git a/awx/network_ui/templates/admin.pyt b/awx/network_ui/templates/admin.pyt
new file mode 100644
index 0000000000..a73d8127b7
--- /dev/null
+++ b/awx/network_ui/templates/admin.pyt
@@ -0,0 +1,12 @@
+from django.contrib import admin
+{%for model in models%}
+from {{app}}.models import {{model.name}}
+{%endfor%}
+
+{%for model in models%}
+class {{model.name}}Admin(admin.ModelAdmin):
+ fields = ({%for field in model.fields%}{%if not field.pk%}'{{field.name}}',{%endif%}{%endfor%})
+ raw_id_fields = ({%for field in model.fields%}{%if field.ref%}'{{field.name}}',{%endif%}{%endfor%})
+admin.site.register({{model.name}}, {{model.name}}Admin)
+{%endfor%}
+
diff --git a/awx/network_ui/templates/models.pyt b/awx/network_ui/templates/models.pyt
new file mode 100644
index 0000000000..e6d52fd497
--- /dev/null
+++ b/awx/network_ui/templates/models.pyt
@@ -0,0 +1,15 @@
+from django.db import models
+
+
+{%for model in models%}
+class {{model.name}}(models.Model):
+
+ {%for field in model.fields%}{{field.name}} = models.{{field.type}}( {%if field.ref%}'{{field.ref}}', {%endif%}{%if field.pk%}primary_key=True, {%endif%} {%if field.len%}max_length={{field.len}}, {%endif%}{%if field.related_name%}related_name='{{field.related_name}}', {%endif%}{%if field.default is defined%}default={{field.default}}{%endif%})
+ {%endfor%}
+
+ {%if model.display%}
+ def __unicode__(self):
+ return self.{{model.display}}
+ {%endif%}
+
+{%endfor%}
diff --git a/awx/network_ui/templates/prototype/index.html b/awx/network_ui/templates/prototype/index.html
new file mode 100644
index 0000000000..ea2f523719
--- /dev/null
+++ b/awx/network_ui/templates/prototype/index.html
@@ -0,0 +1,11 @@
+
+ New
+ {%for o in topologies%}
+
+ {{o.pk}} {{o}}
+ {%for device in o.device_set.all%}
+ {{device}}
+ {%endfor%}
+
+ {%endfor%}
+
diff --git a/awx/network_ui/tests.py b/awx/network_ui/tests.py
new file mode 100644
index 0000000000..6e5b33cd0d
--- /dev/null
+++ b/awx/network_ui/tests.py
@@ -0,0 +1,15 @@
+from django.test import TestCase
+
+# Create your tests here.
+
+from awx.network_ui.models import Topology, Device, Interface, MessageType, Link
+
+
+class TestToString(TestCase):
+
+ def test(self):
+ print str(Topology(name='foo'))
+ print str(Device(name='foo'))
+ print str(Device(name='foo'))
+ print str(Interface(name='foo'))
+ print str(MessageType(name='foo'))
diff --git a/awx/network_ui/urls.py b/awx/network_ui/urls.py
new file mode 100644
index 0000000000..204960f74a
--- /dev/null
+++ b/awx/network_ui/urls.py
@@ -0,0 +1,11 @@
+from django.conf.urls import include, url
+import sys
+
+from . import views
+import awx.network_ui.routing
+
+app_name = 'network_ui'
+urlpatterns = [
+ url(r'^$', views.index, name='index'),
+]
+
diff --git a/awx/network_ui/utils.py b/awx/network_ui/utils.py
new file mode 100644
index 0000000000..1159900db4
--- /dev/null
+++ b/awx/network_ui/utils.py
@@ -0,0 +1,4 @@
+
+def transform_dict(dict_map, d):
+ return {to_key: d[from_key] for from_key, to_key in dict_map.iteritems()}
+
diff --git a/awx/network_ui/views.py b/awx/network_ui/views.py
new file mode 100644
index 0000000000..ef79e47b69
--- /dev/null
+++ b/awx/network_ui/views.py
@@ -0,0 +1,8 @@
+from django.shortcuts import render
+
+# Create your views here.
+from .models import Topology
+
+
+def index(request):
+ return render(request, "network_ui/index.html", dict(topologies=Topology.objects.all().order_by('-pk')))
diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py
index 7adde14d26..600dabf341 100644
--- a/awx/settings/defaults.py
+++ b/awx/settings/defaults.py
@@ -279,6 +279,7 @@ INSTALLED_APPS = (
'awx.ui',
'awx.sso',
'solo',
+ 'awx.network_ui',
)
INTERNAL_IPS = ('127.0.0.1',)
diff --git a/recordings/test_create_two_switches.replay b/recordings/test_create_two_switches.replay
new file mode 100644
index 0000000000..40a483f1f9
--- /dev/null
+++ b/recordings/test_create_two_switches.replay
@@ -0,0 +1,272 @@
+{"panX": 0, "panY": 0, "scale": 1, "sender": 3692, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 44, "x": 195, "type": "mousemove", "message_id": 2}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 44, "x": 195, "type": "mousemove", "message_id": 3}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 44, "x": 195, "type": "mousemove", "message_id": 4}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 45, "x": 195, "type": "mousemove", "message_id": 5}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 46, "x": 196, "type": "mousemove", "message_id": 6}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 48, "x": 197, "type": "mousemove", "message_id": 7}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 50, "x": 199, "type": "mouseover", "message_id": 8}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 50, "x": 199, "type": "mouseover", "message_id": 9}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 53, "x": 201, "type": "mousemove", "message_id": 11}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 50, "x": 199, "type": "mousemove", "message_id": 10}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 57, "x": 203, "type": "mousemove", "message_id": 12}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 62, "x": 205, "type": "mouseover", "message_id": 13}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 62, "x": 205, "type": "mousemove", "message_id": 15}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 62, "x": 205, "type": "mouseover", "message_id": 14}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 71, "x": 206, "type": "mouseover", "message_id": 16}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 71, "x": 206, "type": "mouseover", "message_id": 17}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 71, "x": 206, "type": "mousemove", "message_id": 18}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 84, "x": 209, "type": "mouseover", "message_id": 20}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 84, "x": 209, "type": "mouseover", "message_id": 19}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 84, "x": 209, "type": "mousemove", "message_id": 21}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 101, "x": 212, "type": "mousemove", "message_id": 22}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 122, "x": 214, "type": "mousemove", "message_id": 23}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 144, "x": 218, "type": "mousemove", "message_id": 24}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 165, "x": 221, "type": "mousemove", "message_id": 25}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 184, "x": 224, "type": "mousemove", "message_id": 26}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 195, "x": 225, "type": "mouseover", "message_id": 27}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 195, "x": 225, "type": "mouseover", "message_id": 28}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 195, "x": 225, "type": "mousemove", "message_id": 29}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 207, "x": 225, "type": "mousemove", "message_id": 30}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 217, "x": 224, "type": "mousemove", "message_id": 31}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 225, "x": 221, "type": "mouseover", "message_id": 32}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 225, "x": 221, "type": "mouseover", "message_id": 33}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 225, "x": 221, "type": "mousemove", "message_id": 34}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 233, "x": 218, "type": "mousemove", "message_id": 35}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 242, "x": 214, "type": "mousemove", "message_id": 36}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 249, "x": 211, "type": "mousemove", "message_id": 37}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 256, "x": 207, "type": "mousemove", "message_id": 38}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 261, "x": 205, "type": "mousemove", "message_id": 39}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 265, "x": 202, "type": "mousemove", "message_id": 40}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 268, "x": 200, "type": "mousemove", "message_id": 41}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 269, "x": 198, "type": "mouseover", "message_id": 42}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 269, "x": 198, "type": "mouseover", "message_id": 43}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 270, "x": 198, "type": "mouseover", "message_id": 45}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 269, "x": 198, "type": "mousemove", "message_id": 44}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 270, "x": 198, "type": "mousemove", "message_id": 47}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 270, "x": 198, "type": "mouseover", "message_id": 46}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 271, "x": 198, "type": "mousemove", "message_id": 48}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 198, "type": "mousemove", "message_id": 49}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 198, "type": "mousemove", "message_id": 50}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 198, "type": "mousemove", "message_id": 51}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 199, "type": "mousemove", "message_id": 52}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 276, "x": 199, "type": "mousemove", "message_id": 53}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 276, "x": 199, "type": "mousemove", "message_id": 54}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 276, "x": 199, "type": "mousemove", "message_id": 55}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 276, "x": 199, "type": "mousemove", "message_id": 56}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 276, "x": 199, "type": "mousemove", "message_id": 57}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 277, "x": 199, "type": "mousemove", "message_id": 58}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 277, "x": 199, "type": "mousemove", "message_id": 59}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 199, "type": "mousemove", "message_id": 60}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 199, "type": "mousemove", "message_id": 61}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 199, "type": "mousemove", "message_id": 62}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 199, "type": "mousemove", "message_id": 63}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 279, "x": 199, "type": "mousemove", "message_id": 64}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 279, "x": 199, "type": "mousemove", "message_id": 65}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 279, "x": 199, "type": "mousemove", "message_id": 66}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 279, "x": 199, "type": "mousemove", "message_id": 67}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 279, "x": 199, "type": "mousedown", "message_id": 68}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 279, "x": 199, "type": "mouseup", "message_id": 69}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 279, "x": 199, "type": "mousemove", "message_id": 70}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 199, "type": "mousemove", "message_id": 71}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 199, "type": "mousemove", "message_id": 72}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 199, "type": "mousemove", "message_id": 73}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 199, "type": "mousemove", "message_id": 74}
+{"sender": 3692, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 75, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 199, "type": "mousemove", "message_id": 77}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 199, "type": "mousemove", "message_id": 78}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 201, "type": "mouseover", "message_id": 79}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 201, "type": "mouseover", "message_id": 80}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 201, "type": "mousemove", "message_id": 81}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 206, "type": "mousemove", "message_id": 82}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 215, "type": "mousemove", "message_id": 83}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 226, "type": "mousemove", "message_id": 84}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 279, "x": 241, "type": "mousemove", "message_id": 85}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 279, "x": 259, "type": "mouseover", "message_id": 87}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 279, "x": 259, "type": "mouseover", "message_id": 86}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 279, "x": 259, "type": "mousemove", "message_id": 88}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 278, "type": "mousemove", "message_id": 89}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 277, "x": 298, "type": "mousemove", "message_id": 90}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 277, "x": 320, "type": "mousemove", "message_id": 91}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 277, "x": 335, "type": "mouseover", "message_id": 92}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 277, "x": 335, "type": "mouseover", "message_id": 93}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 277, "x": 335, "type": "mousemove", "message_id": 94}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 276, "x": 355, "type": "mouseover", "message_id": 95}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 276, "x": 355, "type": "mousemove", "message_id": 97}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 276, "x": 355, "type": "mouseover", "message_id": 96}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 276, "x": 371, "type": "mousemove", "message_id": 98}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 276, "x": 384, "type": "mouseover", "message_id": 99}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 276, "x": 384, "type": "mouseover", "message_id": 100}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 276, "x": 384, "type": "mousemove", "message_id": 101}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 395, "type": "mousemove", "message_id": 102}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 403, "type": "mousemove", "message_id": 103}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 410, "type": "mousemove", "message_id": 104}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 416, "type": "mousemove", "message_id": 105}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 420, "type": "mousemove", "message_id": 106}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 423, "type": "mousemove", "message_id": 107}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 425, "type": "mousemove", "message_id": 108}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 426, "type": "mouseover", "message_id": 109}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 426, "type": "mousemove", "message_id": 111}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 426, "type": "mouseover", "message_id": 110}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 426, "type": "mousemove", "message_id": 112}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 426, "type": "mousemove", "message_id": 113}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 426, "type": "mousemove", "message_id": 114}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 428, "type": "mouseover", "message_id": 115}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 428, "type": "mouseover", "message_id": 116}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 428, "type": "mousemove", "message_id": 117}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 429, "type": "mouseover", "message_id": 118}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 429, "type": "mousemove", "message_id": 120}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 429, "type": "mouseover", "message_id": 119}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 431, "type": "mouseover", "message_id": 122}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 431, "type": "mouseover", "message_id": 121}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 431, "type": "mousemove", "message_id": 123}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 432, "type": "mouseover", "message_id": 124}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 432, "type": "mouseover", "message_id": 125}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 432, "type": "mousemove", "message_id": 126}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 433, "type": "mousemove", "message_id": 127}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 434, "type": "mousemove", "message_id": 128}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 435, "type": "mousemove", "message_id": 129}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 436, "type": "mousemove", "message_id": 130}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 436, "type": "mousemove", "message_id": 131}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 436, "type": "mousemove", "message_id": 132}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 437, "type": "mousemove", "message_id": 133}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 438, "type": "mousemove", "message_id": 134}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 438, "type": "mousemove", "message_id": 135}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 439, "type": "mousemove", "message_id": 136}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 439, "type": "mousemove", "message_id": 137}
+{"sender": 3692, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 138, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3692, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 140, "altKey": false, "metaKey": false, "key": "l", "ctrlKey": false, "type": "keydown", "keyCode": 76}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 439, "type": "mousedown", "message_id": 141}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 439, "type": "mouseup", "message_id": 142}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 439, "type": "mousemove", "message_id": 144}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 434, "type": "mouseover", "message_id": 145}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 434, "type": "mouseover", "message_id": 146}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 434, "type": "mousemove", "message_id": 147}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 429, "type": "mousemove", "message_id": 148}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 420, "type": "mousemove", "message_id": 149}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 410, "type": "mousemove", "message_id": 150}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 400, "type": "mousemove", "message_id": 151}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 393, "type": "mousemove", "message_id": 152}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 385, "type": "mousemove", "message_id": 153}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 375, "type": "mousemove", "message_id": 154}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 365, "type": "mousemove", "message_id": 155}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 355, "type": "mousemove", "message_id": 156}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 339, "type": "mouseover", "message_id": 157}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 339, "type": "mouseover", "message_id": 158}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 339, "type": "mousemove", "message_id": 159}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 320, "type": "mousemove", "message_id": 160}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 301, "type": "mousemove", "message_id": 161}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 290, "type": "mouseover", "message_id": 162}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 290, "type": "mouseover", "message_id": 163}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 290, "type": "mousemove", "message_id": 164}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 277, "type": "mousemove", "message_id": 165}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 267, "type": "mousemove", "message_id": 166}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 261, "type": "mousemove", "message_id": 167}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 253, "type": "mousemove", "message_id": 168}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 247, "type": "mousemove", "message_id": 169}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 241, "type": "mousemove", "message_id": 170}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 237, "type": "mousemove", "message_id": 171}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 233, "type": "mousemove", "message_id": 172}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 230, "type": "mousemove", "message_id": 173}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 228, "type": "mousemove", "message_id": 174}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 227, "type": "mouseover", "message_id": 175}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 227, "type": "mouseover", "message_id": 176}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 227, "type": "mousemove", "message_id": 177}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 225, "type": "mouseover", "message_id": 178}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 225, "type": "mouseover", "message_id": 179}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 225, "type": "mousemove", "message_id": 180}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 223, "type": "mousemove", "message_id": 181}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 222, "type": "mouseover", "message_id": 182}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 222, "type": "mouseover", "message_id": 183}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 222, "type": "mousemove", "message_id": 184}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 221, "type": "mousemove", "message_id": 185}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 220, "type": "mousemove", "message_id": 186}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 220, "type": "mousemove", "message_id": 187}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 220, "type": "mousedown", "message_id": 188}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 272, "x": 220, "type": "mouseup", "message_id": 189}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 273, "x": 220, "type": "mousemove", "message_id": 194}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 222, "type": "mouseover", "message_id": 195}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 222, "type": "mousemove", "message_id": 197}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 222, "type": "mouseover", "message_id": 196}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 223, "type": "mouseover", "message_id": 199}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 223, "type": "mousemove", "message_id": 200}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 275, "x": 223, "type": "mouseover", "message_id": 198}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 225, "type": "mouseover", "message_id": 201}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 225, "type": "mouseover", "message_id": 202}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 225, "type": "mousemove", "message_id": 203}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 281, "x": 226, "type": "mouseover", "message_id": 204}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 281, "x": 226, "type": "mouseover", "message_id": 205}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 283, "x": 228, "type": "mouseover", "message_id": 207}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 281, "x": 226, "type": "mousemove", "message_id": 206}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 283, "x": 228, "type": "mouseover", "message_id": 208}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 283, "x": 228, "type": "mousemove", "message_id": 209}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 283, "x": 230, "type": "mouseover", "message_id": 210}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 283, "x": 230, "type": "mouseover", "message_id": 211}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 283, "x": 230, "type": "mousemove", "message_id": 212}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 283, "x": 232, "type": "mousemove", "message_id": 213}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 283, "x": 233, "type": "mouseover", "message_id": 214}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 283, "x": 233, "type": "mouseover", "message_id": 215}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 283, "x": 233, "type": "mousemove", "message_id": 216}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 283, "x": 233, "type": "mousemove", "message_id": 217}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 282, "x": 233, "type": "mousemove", "message_id": 218}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 282, "x": 233, "type": "mousemove", "message_id": 219}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 281, "x": 234, "type": "mousemove", "message_id": 220}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 278, "x": 235, "type": "mousemove", "message_id": 221}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 237, "type": "mouseover", "message_id": 222}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 237, "type": "mouseover", "message_id": 223}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 274, "x": 237, "type": "mousemove", "message_id": 224}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 268, "x": 241, "type": "mousemove", "message_id": 225}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 252, "x": 250, "type": "mousemove", "message_id": 227}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 261, "x": 246, "type": "mousemove", "message_id": 226}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 242, "x": 255, "type": "mouseover", "message_id": 229}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 242, "x": 255, "type": "mouseover", "message_id": 228}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 242, "x": 255, "type": "mousemove", "message_id": 230}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 231, "x": 258, "type": "mousemove", "message_id": 231}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 219, "x": 260, "type": "mousemove", "message_id": 232}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 206, "x": 260, "type": "mouseover", "message_id": 233}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 206, "x": 260, "type": "mouseover", "message_id": 234}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 206, "x": 260, "type": "mousemove", "message_id": 235}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 193, "x": 259, "type": "mousemove", "message_id": 236}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 179, "x": 257, "type": "mouseover", "message_id": 237}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 179, "x": 257, "type": "mouseover", "message_id": 238}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 165, "x": 253, "type": "mousemove", "message_id": 240}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 179, "x": 257, "type": "mousemove", "message_id": 239}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 149, "x": 245, "type": "mousemove", "message_id": 241}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 129, "x": 235, "type": "mousemove", "message_id": 242}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 112, "x": 227, "type": "mousemove", "message_id": 243}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 87, "x": 218, "type": "mousemove", "message_id": 244}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 65, "x": 213, "type": "mousemove", "message_id": 245}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 47, "x": 211, "type": "mousemove", "message_id": 246}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 33, "x": 211, "type": "mouseover", "message_id": 247}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 33, "x": 211, "type": "mouseover", "message_id": 248}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 33, "x": 211, "type": "mousemove", "message_id": 249}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 24, "x": 211, "type": "mousemove", "message_id": 250}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 18, "x": 211, "type": "mousemove", "message_id": 251}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 15, "x": 210, "type": "mousemove", "message_id": 252}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 13, "x": 210, "type": "mousemove", "message_id": 253}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 13, "x": 210, "type": "mousemove", "message_id": 254}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 13, "x": 209, "type": "mousemove", "message_id": 255}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 14, "x": 209, "type": "mousemove", "message_id": 256}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 15, "x": 208, "type": "mousemove", "message_id": 257}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 17, "x": 208, "type": "mousemove", "message_id": 258}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 18, "x": 208, "type": "mousemove", "message_id": 259}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 19, "x": 208, "type": "mousemove", "message_id": 260}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 19, "x": 208, "type": "mousemove", "message_id": 261}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 20, "x": 208, "type": "mousemove", "message_id": 262}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 21, "x": 207, "type": "mousemove", "message_id": 263}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 22, "x": 207, "type": "mousemove", "message_id": 264}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 23, "x": 207, "type": "mousemove", "message_id": 265}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 24, "x": 207, "type": "mousemove", "message_id": 266}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 25, "x": 206, "type": "mousemove", "message_id": 267}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 27, "x": 204, "type": "mouseover", "message_id": 268}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 27, "x": 204, "type": "mouseover", "message_id": 269}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 27, "x": 204, "type": "mousemove", "message_id": 270}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 30, "x": 203, "type": "mouseover", "message_id": 271}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 30, "x": 203, "type": "mousemove", "message_id": 273}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 30, "x": 203, "type": "mouseover", "message_id": 272}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 32, "x": 200, "type": "mouseover", "message_id": 274}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 32, "x": 200, "type": "mouseover", "message_id": 275}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 32, "x": 200, "type": "mousemove", "message_id": 276}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 34, "x": 198, "type": "mousemove", "message_id": 277}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 36, "x": 196, "type": "mousemove", "message_id": 278}
+{"sender": 3692, "msg_type": "MouseEvent", "y": 37, "x": 195, "type": "mouseover", "message_id": 279}
diff --git a/recordings/test_deploy_destroy.replay b/recordings/test_deploy_destroy.replay
new file mode 100644
index 0000000000..cd5f3210a3
--- /dev/null
+++ b/recordings/test_deploy_destroy.replay
@@ -0,0 +1,962 @@
+{"panX": -409.47752934156085, "panY": -220.16629034286456, "scale": 2.609999999999994, "sender": 3699, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 183, "type": "mousemove", "message_id": 1222}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 184, "type": "mousemove", "message_id": 1223}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 186, "type": "mouseover", "message_id": 1224}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 186, "type": "mouseover", "message_id": 1225}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 188, "type": "mousemove", "message_id": 1227}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 186, "type": "mousemove", "message_id": 1226}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 189, "type": "mouseover", "message_id": 1228}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 189, "type": "mouseover", "message_id": 1229}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 189, "type": "mousemove", "message_id": 1230}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 190, "type": "mousemove", "message_id": 1231}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 191, "type": "mousemove", "message_id": 1232}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 191, "type": "mousemove", "message_id": 1233}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 191, "type": "mousemove", "message_id": 1234}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 191, "type": "mousemove", "message_id": 1235}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 55, "x": 191, "type": "mousemove", "message_id": 1236}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 191, "type": "mousemove", "message_id": 1237}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 64, "x": 191, "type": "mousemove", "message_id": 1238}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 69, "x": 192, "type": "mousemove", "message_id": 1239}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 77, "x": 194, "type": "mouseover", "message_id": 1240}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 77, "x": 194, "type": "mouseover", "message_id": 1241}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 77, "x": 194, "type": "mousemove", "message_id": 1242}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 84, "x": 197, "type": "mousemove", "message_id": 1243}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 97, "x": 205, "type": "mousemove", "message_id": 1244}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 216, "type": "mousemove", "message_id": 1245}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 127, "x": 229, "type": "mousemove", "message_id": 1246}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 144, "x": 241, "type": "mousemove", "message_id": 1247}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 161, "x": 250, "type": "mousemove", "message_id": 1248}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 176, "x": 254, "type": "mousemove", "message_id": 1249}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 188, "x": 254, "type": "mouseover", "message_id": 1251}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 188, "x": 254, "type": "mouseover", "message_id": 1250}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 188, "x": 254, "type": "mousemove", "message_id": 1252}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 200, "x": 253, "type": "mousemove", "message_id": 1253}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 213, "x": 249, "type": "mouseover", "message_id": 1254}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 213, "x": 249, "type": "mouseover", "message_id": 1255}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 213, "x": 249, "type": "mousemove", "message_id": 1256}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 224, "x": 245, "type": "mousemove", "message_id": 1257}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 239, "x": 238, "type": "mousemove", "message_id": 1258}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 252, "x": 232, "type": "mousemove", "message_id": 1259}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 226, "type": "mousemove", "message_id": 1260}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 220, "type": "mousemove", "message_id": 1261}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 281, "x": 214, "type": "mousemove", "message_id": 1262}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 209, "type": "mousemove", "message_id": 1263}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 294, "x": 206, "type": "mousemove", "message_id": 1264}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 205, "type": "mouseover", "message_id": 1265}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 205, "type": "mouseover", "message_id": 1266}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 205, "type": "mousemove", "message_id": 1267}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 205, "type": "mousemove", "message_id": 1268}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 295, "x": 205, "type": "mousemove", "message_id": 1269}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 293, "x": 205, "type": "mousemove", "message_id": 1270}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 290, "x": 205, "type": "mousemove", "message_id": 1271}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 204, "type": "mousemove", "message_id": 1272}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 204, "type": "mousemove", "message_id": 1273}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 203, "type": "mousemove", "message_id": 1274}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 203, "type": "mousemove", "message_id": 1275}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 203, "type": "mousemove", "message_id": 1276}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1277}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1278}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 203, "type": "mousedown", "message_id": 1279}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1280}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1281}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 203, "type": "mouseup", "message_id": 1282}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 1283}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 202, "type": "mousemove", "message_id": 1284}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 201, "type": "mousemove", "message_id": 1285}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 200, "type": "mousemove", "message_id": 1286}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 200, "type": "mousemove", "message_id": 1287}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 200, "type": "mousemove", "message_id": 1288}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 200, "type": "mousemove", "message_id": 1289}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 200, "type": "mousemove", "message_id": 1290}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 200, "type": "mousemove", "message_id": 1291}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 200, "type": "mousemove", "message_id": 1292}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 200, "type": "mousemove", "message_id": 1293}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 200, "type": "mousemove", "message_id": 1295}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 200, "type": "mousemove", "message_id": 1294}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 200, "type": "mousemove", "message_id": 1296}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1297, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 200, "type": "mousemove", "message_id": 1299}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 200, "type": "mousemove", "message_id": 1300}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 203, "type": "mouseover", "message_id": 1301}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 203, "type": "mousemove", "message_id": 1303}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 203, "type": "mouseover", "message_id": 1302}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 209, "type": "mousemove", "message_id": 1304}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 290, "x": 222, "type": "mouseover", "message_id": 1305}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 290, "x": 222, "type": "mouseover", "message_id": 1306}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 291, "x": 241, "type": "mousemove", "message_id": 1308}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 290, "x": 222, "type": "mousemove", "message_id": 1307}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 291, "x": 270, "type": "mouseover", "message_id": 1309}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 291, "x": 270, "type": "mouseover", "message_id": 1310}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 290, "x": 312, "type": "mousemove", "message_id": 1312}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 290, "x": 353, "type": "mouseover", "message_id": 1313}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 291, "x": 270, "type": "mousemove", "message_id": 1311}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 290, "x": 353, "type": "mouseover", "message_id": 1314}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 290, "x": 353, "type": "mousemove", "message_id": 1315}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 440, "type": "mousemove", "message_id": 1317}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 404, "type": "mousemove", "message_id": 1316}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 489, "type": "mousemove", "message_id": 1318}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 526, "type": "mousemove", "message_id": 1319}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 545, "type": "mousemove", "message_id": 1320}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 568, "type": "mousemove", "message_id": 1321}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 584, "type": "mousemove", "message_id": 1322}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 594, "type": "mouseover", "message_id": 1323}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 594, "type": "mouseover", "message_id": 1324}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 594, "type": "mousemove", "message_id": 1325}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 598, "type": "mousemove", "message_id": 1326}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 601, "type": "mousemove", "message_id": 1327}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 602, "type": "mouseover", "message_id": 1329}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 602, "type": "mouseover", "message_id": 1328}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 602, "type": "mousemove", "message_id": 1330}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 603, "type": "mousemove", "message_id": 1331}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 605, "type": "mouseover", "message_id": 1332}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 605, "type": "mouseover", "message_id": 1333}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 605, "type": "mousemove", "message_id": 1334}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 609, "type": "mousemove", "message_id": 1335}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 617, "type": "mousemove", "message_id": 1336}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 624, "type": "mousemove", "message_id": 1337}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 635, "type": "mousemove", "message_id": 1338}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 645, "type": "mousemove", "message_id": 1339}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 652, "type": "mousemove", "message_id": 1340}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 655, "type": "mousemove", "message_id": 1341}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 656, "type": "mouseover", "message_id": 1342}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 656, "type": "mousemove", "message_id": 1344}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 656, "type": "mouseover", "message_id": 1343}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 656, "type": "mousedown", "message_id": 1345}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 656, "type": "mouseup", "message_id": 1346}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 655, "type": "mousemove", "message_id": 1347}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 655, "type": "mousemove", "message_id": 1348}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 655, "type": "mousemove", "message_id": 1349}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 654, "type": "mousemove", "message_id": 1350}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 654, "type": "mousemove", "message_id": 1351}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 654, "type": "mousemove", "message_id": 1352}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 654, "type": "mousemove", "message_id": 1353}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 653, "type": "mousemove", "message_id": 1354}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 653, "type": "mousemove", "message_id": 1355}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 653, "type": "mousemove", "message_id": 1356}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 653, "type": "mousemove", "message_id": 1357}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1358, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1360, "altKey": false, "metaKey": false, "key": "l", "ctrlKey": false, "type": "keydown", "keyCode": 76}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 653, "type": "mousedown", "message_id": 1361}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 653, "type": "mouseup", "message_id": 1362}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 648, "type": "mouseover", "message_id": 1364}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 648, "type": "mouseover", "message_id": 1365}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 648, "type": "mousemove", "message_id": 1366}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 635, "type": "mousemove", "message_id": 1367}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 610, "type": "mouseover", "message_id": 1369}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 610, "type": "mouseover", "message_id": 1368}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 610, "type": "mousemove", "message_id": 1370}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 281, "x": 580, "type": "mouseover", "message_id": 1371}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 281, "x": 580, "type": "mouseover", "message_id": 1372}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 281, "x": 580, "type": "mousemove", "message_id": 1373}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 546, "type": "mousemove", "message_id": 1374}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 276, "x": 521, "type": "mousemove", "message_id": 1375}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 487, "type": "mouseover", "message_id": 1376}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 487, "type": "mouseover", "message_id": 1377}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 487, "type": "mousemove", "message_id": 1378}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 459, "type": "mousemove", "message_id": 1379}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 433, "type": "mousemove", "message_id": 1380}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 418, "type": "mouseover", "message_id": 1381}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 418, "type": "mouseover", "message_id": 1382}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 418, "type": "mousemove", "message_id": 1383}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 403, "type": "mousemove", "message_id": 1384}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 395, "type": "mousemove", "message_id": 1385}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 392, "type": "mousemove", "message_id": 1386}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 390, "type": "mousemove", "message_id": 1387}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 389, "type": "mouseover", "message_id": 1388}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 389, "type": "mouseover", "message_id": 1389}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 389, "type": "mousemove", "message_id": 1390}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 389, "type": "mousemove", "message_id": 1391}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 387, "type": "mouseover", "message_id": 1392}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 387, "type": "mouseover", "message_id": 1393}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 387, "type": "mousemove", "message_id": 1394}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 384, "type": "mousemove", "message_id": 1395}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 380, "type": "mousemove", "message_id": 1396}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 376, "type": "mousemove", "message_id": 1397}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 373, "type": "mousemove", "message_id": 1398}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 371, "type": "mousemove", "message_id": 1399}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 275, "x": 367, "type": "mousemove", "message_id": 1400}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 276, "x": 363, "type": "mousemove", "message_id": 1401}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 357, "type": "mousemove", "message_id": 1402}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 351, "type": "mousemove", "message_id": 1403}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 344, "type": "mousemove", "message_id": 1404}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 337, "type": "mousemove", "message_id": 1405}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 332, "type": "mousemove", "message_id": 1406}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 329, "type": "mousemove", "message_id": 1407}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 327, "type": "mousemove", "message_id": 1408}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 326, "type": "mouseover", "message_id": 1409}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 326, "type": "mouseover", "message_id": 1410}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 326, "type": "mousemove", "message_id": 1411}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 325, "type": "mousemove", "message_id": 1412}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 324, "type": "mousemove", "message_id": 1413}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 323, "type": "mousemove", "message_id": 1414}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 321, "type": "mouseover", "message_id": 1415}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 321, "type": "mouseover", "message_id": 1416}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 321, "type": "mousemove", "message_id": 1417}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 320, "type": "mouseover", "message_id": 1418}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 320, "type": "mouseover", "message_id": 1419}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 320, "type": "mousemove", "message_id": 1420}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 318, "type": "mouseover", "message_id": 1421}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 318, "type": "mouseover", "message_id": 1422}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 318, "type": "mousemove", "message_id": 1423}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 317, "type": "mouseover", "message_id": 1424}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 317, "type": "mouseover", "message_id": 1425}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 317, "type": "mousemove", "message_id": 1426}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 317, "type": "mousedown", "message_id": 1427}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 316, "type": "mousemove", "message_id": 1428}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 316, "type": "mouseup", "message_id": 1429}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 316, "type": "mousemove", "message_id": 1434}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 315, "type": "mousemove", "message_id": 1435}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 313, "type": "mouseover", "message_id": 1436}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 313, "type": "mouseover", "message_id": 1437}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 313, "type": "mousemove", "message_id": 1438}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 311, "type": "mousemove", "message_id": 1439}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 310, "type": "mouseover", "message_id": 1440}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 310, "type": "mouseover", "message_id": 1441}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 310, "type": "mousemove", "message_id": 1442}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 309, "type": "mousemove", "message_id": 1443}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 281, "x": 308, "type": "mousemove", "message_id": 1444}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 281, "x": 307, "type": "mousemove", "message_id": 1445}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 304, "type": "mouseover", "message_id": 1446}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 304, "type": "mouseover", "message_id": 1447}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 304, "type": "mousemove", "message_id": 1448}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 300, "type": "mousemove", "message_id": 1449}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 296, "type": "mousemove", "message_id": 1450}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 291, "type": "mousemove", "message_id": 1451}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 288, "type": "mousemove", "message_id": 1452}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 287, "type": "mouseover", "message_id": 1453}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 287, "type": "mouseover", "message_id": 1454}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 287, "type": "mousemove", "message_id": 1455}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 286, "type": "mousemove", "message_id": 1456}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 284, "type": "mouseover", "message_id": 1457}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 284, "type": "mouseover", "message_id": 1458}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 284, "type": "mousemove", "message_id": 1459}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 283, "type": "mouseover", "message_id": 1460}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 283, "type": "mouseover", "message_id": 1461}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 283, "type": "mousemove", "message_id": 1462}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 280, "type": "mouseover", "message_id": 1463}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 280, "type": "mouseover", "message_id": 1464}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 280, "type": "mousemove", "message_id": 1465}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 274, "type": "mousemove", "message_id": 1467}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 277, "type": "mousemove", "message_id": 1466}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 272, "type": "mousemove", "message_id": 1468}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 270, "type": "mousemove", "message_id": 1469}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 269, "type": "mouseover", "message_id": 1470}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 269, "type": "mouseover", "message_id": 1471}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 269, "type": "mousemove", "message_id": 1472}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 268, "type": "mousemove", "message_id": 1473}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 268, "type": "mousemove", "message_id": 1474}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 268, "type": "mousemove", "message_id": 1475}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 268, "type": "mousemove", "message_id": 1476}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 268, "type": "mousemove", "message_id": 1477}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 268, "type": "mousemove", "message_id": 1478}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 268, "type": "mousemove", "message_id": 1479}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 281, "x": 268, "type": "mousemove", "message_id": 1480}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 281, "x": 268, "type": "mousemove", "message_id": 1481}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 268, "type": "mousemove", "message_id": 1482}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 268, "type": "mousemove", "message_id": 1483}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 268, "type": "mousedown", "message_id": 1484}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 268, "type": "mouseup", "message_id": 1486}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 269, "type": "mousemove", "message_id": 1487}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 270, "type": "mousemove", "message_id": 1488}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 270, "type": "mousemove", "message_id": 1489}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 271, "type": "mousemove", "message_id": 1490}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 271, "type": "mousemove", "message_id": 1491}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 271, "type": "mousemove", "message_id": 1492}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 271, "type": "mousemove", "message_id": 1493}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 271, "type": "mousedown", "message_id": 1494}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 271, "type": "mouseup", "message_id": 1497}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1498, "altKey": false, "metaKey": false, "key": "1", "ctrlKey": false, "type": "keydown", "keyCode": 49}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 271, "type": "mousemove", "message_id": 1500}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 273, "type": "mouseover", "message_id": 1501}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 273, "type": "mousemove", "message_id": 1503}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 273, "type": "mouseover", "message_id": 1502}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 276, "type": "mousemove", "message_id": 1504}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 278, "type": "mousemove", "message_id": 1505}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 281, "type": "mousemove", "message_id": 1506}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 283, "type": "mousemove", "message_id": 1507}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 287, "type": "mousemove", "message_id": 1508}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 294, "type": "mousemove", "message_id": 1509}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 306, "type": "mousemove", "message_id": 1510}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 326, "type": "mouseover", "message_id": 1511}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 326, "type": "mouseover", "message_id": 1512}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 326, "type": "mousemove", "message_id": 1513}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 275, "x": 355, "type": "mouseover", "message_id": 1515}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 275, "x": 355, "type": "mouseover", "message_id": 1514}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 275, "x": 355, "type": "mousemove", "message_id": 1516}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 395, "type": "mousemove", "message_id": 1517}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 443, "type": "mousemove", "message_id": 1518}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 475, "type": "mousemove", "message_id": 1519}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 259, "x": 521, "type": "mouseover", "message_id": 1520}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 259, "x": 521, "type": "mouseover", "message_id": 1521}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 259, "x": 521, "type": "mousemove", "message_id": 1522}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 565, "type": "mouseover", "message_id": 1523}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 565, "type": "mouseover", "message_id": 1524}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 565, "type": "mousemove", "message_id": 1525}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 252, "x": 603, "type": "mouseover", "message_id": 1526}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 252, "x": 603, "type": "mousemove", "message_id": 1528}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 252, "x": 603, "type": "mouseover", "message_id": 1527}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 626, "type": "mousemove", "message_id": 1529}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 650, "type": "mousemove", "message_id": 1530}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 664, "type": "mouseover", "message_id": 1531}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 664, "type": "mouseover", "message_id": 1532}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 664, "type": "mousemove", "message_id": 1533}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 671, "type": "mousemove", "message_id": 1534}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 675, "type": "mousemove", "message_id": 1535}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 678, "type": "mousemove", "message_id": 1536}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 679, "type": "mouseover", "message_id": 1537}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 679, "type": "mouseover", "message_id": 1538}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 679, "type": "mousemove", "message_id": 1539}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 680, "type": "mousemove", "message_id": 1540}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 681, "type": "mousemove", "message_id": 1541}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 681, "type": "mousemove", "message_id": 1542}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 682, "type": "mousemove", "message_id": 1543}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 682, "type": "mousedown", "message_id": 1544}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 682, "type": "mouseup", "message_id": 1547}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 682, "type": "mousedown", "message_id": 1548}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 682, "type": "mouseup", "message_id": 1551}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1552, "altKey": false, "metaKey": false, "key": "2", "ctrlKey": false, "type": "keydown", "keyCode": 50}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 681, "type": "mousemove", "message_id": 1554}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 680, "type": "mousemove", "message_id": 1555}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 678, "type": "mouseover", "message_id": 1556}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 678, "type": "mouseover", "message_id": 1557}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 678, "type": "mousemove", "message_id": 1558}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 252, "x": 674, "type": "mousemove", "message_id": 1559}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 669, "type": "mouseover", "message_id": 1560}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 669, "type": "mouseover", "message_id": 1561}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 669, "type": "mousemove", "message_id": 1562}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 664, "type": "mouseover", "message_id": 1563}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 664, "type": "mouseover", "message_id": 1564}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 664, "type": "mousemove", "message_id": 1565}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 655, "type": "mousemove", "message_id": 1566}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 643, "type": "mousemove", "message_id": 1567}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 626, "type": "mouseover", "message_id": 1568}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 626, "type": "mouseover", "message_id": 1569}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 611, "type": "mouseover", "message_id": 1571}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 626, "type": "mousemove", "message_id": 1570}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 611, "type": "mouseover", "message_id": 1572}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 611, "type": "mousemove", "message_id": 1573}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 598, "type": "mousemove", "message_id": 1574}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 590, "type": "mousemove", "message_id": 1575}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 584, "type": "mousemove", "message_id": 1576}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 580, "type": "mousemove", "message_id": 1577}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 574, "type": "mousemove", "message_id": 1578}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 253, "x": 566, "type": "mousemove", "message_id": 1579}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 555, "type": "mouseover", "message_id": 1580}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 555, "type": "mouseover", "message_id": 1581}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 555, "type": "mousemove", "message_id": 1582}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 247, "x": 542, "type": "mousemove", "message_id": 1583}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 244, "x": 529, "type": "mouseover", "message_id": 1584}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 244, "x": 529, "type": "mouseover", "message_id": 1585}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 244, "x": 529, "type": "mousemove", "message_id": 1586}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 241, "x": 516, "type": "mouseover", "message_id": 1587}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 241, "x": 516, "type": "mouseover", "message_id": 1588}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 241, "x": 516, "type": "mousemove", "message_id": 1589}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 238, "x": 503, "type": "mouseover", "message_id": 1590}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 238, "x": 503, "type": "mouseover", "message_id": 1591}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 238, "x": 503, "type": "mousemove", "message_id": 1592}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 237, "x": 493, "type": "mouseover", "message_id": 1593}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 237, "x": 493, "type": "mouseover", "message_id": 1594}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 237, "x": 493, "type": "mousemove", "message_id": 1595}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 236, "x": 486, "type": "mousemove", "message_id": 1596}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 235, "x": 484, "type": "mousemove", "message_id": 1597}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 234, "x": 482, "type": "mousemove", "message_id": 1598}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 233, "x": 481, "type": "mouseover", "message_id": 1599}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 233, "x": 481, "type": "mouseover", "message_id": 1600}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 233, "x": 481, "type": "mousemove", "message_id": 1601}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 233, "x": 481, "type": "mousemove", "message_id": 1602}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 233, "x": 481, "type": "mousemove", "message_id": 1603}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 233, "x": 481, "type": "mousedown", "message_id": 1604}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 233, "x": 481, "type": "mouseup", "message_id": 1606}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 233, "x": 481, "type": "mousemove", "message_id": 1607}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 234, "x": 481, "type": "mousemove", "message_id": 1608}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 234, "x": 481, "type": "mousemove", "message_id": 1609}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 235, "x": 481, "type": "mousemove", "message_id": 1610}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 236, "x": 481, "type": "mousemove", "message_id": 1611}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 238, "x": 479, "type": "mouseover", "message_id": 1612}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 238, "x": 479, "type": "mouseover", "message_id": 1613}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 240, "x": 476, "type": "mousemove", "message_id": 1615}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 238, "x": 479, "type": "mousemove", "message_id": 1614}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 243, "x": 473, "type": "mousemove", "message_id": 1616}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 246, "x": 469, "type": "mousemove", "message_id": 1617}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 250, "x": 464, "type": "mousemove", "message_id": 1618}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 256, "x": 459, "type": "mousemove", "message_id": 1619}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 261, "x": 454, "type": "mousemove", "message_id": 1620}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 449, "type": "mousemove", "message_id": 1621}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 445, "type": "mousemove", "message_id": 1622}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 442, "type": "mousemove", "message_id": 1623}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 440, "type": "mouseover", "message_id": 1624}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 440, "type": "mouseover", "message_id": 1625}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 440, "type": "mouseover", "message_id": 1627}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 440, "type": "mousemove", "message_id": 1626}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 440, "type": "mouseover", "message_id": 1628}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 440, "type": "mousemove", "message_id": 1629}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 440, "type": "mousemove", "message_id": 1630}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 440, "type": "mousemove", "message_id": 1631}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 440, "type": "mousemove", "message_id": 1632}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 439, "type": "mousemove", "message_id": 1633}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 439, "type": "mousemove", "message_id": 1634}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 439, "type": "mousemove", "message_id": 1635}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 268, "x": 439, "type": "mousemove", "message_id": 1636}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 267, "x": 440, "type": "mousemove", "message_id": 1637}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 440, "type": "mousemove", "message_id": 1638}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 440, "type": "mousemove", "message_id": 1639}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 440, "type": "mousemove", "message_id": 1640}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 440, "type": "mousemove", "message_id": 1641}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 440, "type": "mousemove", "message_id": 1642}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1643}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 1644}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 1645}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 1646}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 1647}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 1648}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 1649}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1650}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 1651}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 1652}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 1653}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 1654}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1655}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1656}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1657}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 440, "type": "mousemove", "message_id": 1658}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1659}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 1660}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1661}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1663}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1662}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1664}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 439, "type": "mousemove", "message_id": 1665}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1666}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 439, "type": "mousemove", "message_id": 1667}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 439, "type": "mousemove", "message_id": 1668}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1669}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 1670}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1671}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1672}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1673}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1674}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1675}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 439, "type": "mousemove", "message_id": 1676}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1677}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 439, "type": "mousemove", "message_id": 1678}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1679}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 439, "type": "mousemove", "message_id": 1680}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 1681}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1682}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 1683}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 1684}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 1685}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 1686}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 1687}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 440, "type": "mousemove", "message_id": 1688}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 443, "type": "mouseover", "message_id": 1689}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 443, "type": "mouseover", "message_id": 1690}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 443, "type": "mousemove", "message_id": 1691}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 448, "type": "mousemove", "message_id": 1692}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 454, "type": "mousemove", "message_id": 1693}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 460, "type": "mousemove", "message_id": 1694}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 468, "type": "mousemove", "message_id": 1695}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 478, "type": "mousemove", "message_id": 1696}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 492, "type": "mousemove", "message_id": 1697}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 510, "type": "mouseover", "message_id": 1698}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 510, "type": "mousemove", "message_id": 1700}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 510, "type": "mouseover", "message_id": 1699}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 523, "type": "mouseover", "message_id": 1701}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 523, "type": "mouseover", "message_id": 1702}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 523, "type": "mousemove", "message_id": 1703}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 535, "type": "mousemove", "message_id": 1704}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 542, "type": "mousemove", "message_id": 1705}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 267, "x": 546, "type": "mousemove", "message_id": 1706}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 267, "x": 549, "type": "mousemove", "message_id": 1707}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 267, "x": 549, "type": "mouseover", "message_id": 1708}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 267, "x": 549, "type": "mouseover", "message_id": 1709}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 267, "x": 549, "type": "mousemove", "message_id": 1710}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 267, "x": 550, "type": "mousemove", "message_id": 1711}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 268, "x": 550, "type": "mousemove", "message_id": 1712}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 268, "x": 550, "type": "mousemove", "message_id": 1713}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 268, "x": 551, "type": "mousemove", "message_id": 1714}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 268, "x": 552, "type": "mousemove", "message_id": 1715}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 555, "type": "mouseover", "message_id": 1716}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 555, "type": "mouseover", "message_id": 1717}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 555, "type": "mousemove", "message_id": 1718}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 555, "type": "mouseover", "message_id": 1719}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 555, "type": "mouseover", "message_id": 1720}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 555, "type": "mousedown", "message_id": 1721}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 561, "type": "mouseover", "message_id": 1723}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 561, "type": "mouseover", "message_id": 1724}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 561, "type": "mousemove", "message_id": 1725}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 569, "type": "mousemove", "message_id": 1726}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 578, "type": "mousemove", "message_id": 1728}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 589, "type": "mousemove", "message_id": 1730}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 602, "type": "mousemove", "message_id": 1732}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 613, "type": "mousemove", "message_id": 1734}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 624, "type": "mousemove", "message_id": 1736}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 633, "type": "mousemove", "message_id": 1738}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 642, "type": "mousemove", "message_id": 1740}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 649, "type": "mousemove", "message_id": 1742}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 653, "type": "mousemove", "message_id": 1744}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 655, "type": "mousemove", "message_id": 1746}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 656, "type": "mouseover", "message_id": 1748}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 656, "type": "mouseover", "message_id": 1749}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 656, "type": "mousemove", "message_id": 1750}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 657, "type": "mousemove", "message_id": 1752}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 657, "type": "mousemove", "message_id": 1754}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 658, "type": "mousemove", "message_id": 1756}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 659, "type": "mousemove", "message_id": 1758}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 660, "type": "mousemove", "message_id": 1760}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 661, "type": "mousemove", "message_id": 1762}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 662, "type": "mousemove", "message_id": 1764}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 662, "type": "mousemove", "message_id": 1766}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 662, "type": "mouseup", "message_id": 1768}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 662, "type": "mousemove", "message_id": 1769}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 661, "type": "mousemove", "message_id": 1770}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 658, "type": "mouseover", "message_id": 1771}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 658, "type": "mouseover", "message_id": 1772}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 658, "type": "mousemove", "message_id": 1773}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 655, "type": "mousemove", "message_id": 1774}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 651, "type": "mousemove", "message_id": 1775}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 642, "type": "mousemove", "message_id": 1776}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 268, "x": 627, "type": "mousemove", "message_id": 1779}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 268, "x": 627, "type": "mouseover", "message_id": 1777}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 268, "x": 627, "type": "mouseover", "message_id": 1778}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 612, "type": "mouseover", "message_id": 1780}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 612, "type": "mouseover", "message_id": 1781}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 612, "type": "mousemove", "message_id": 1782}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 593, "type": "mouseover", "message_id": 1783}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 593, "type": "mouseover", "message_id": 1784}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 593, "type": "mousemove", "message_id": 1785}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 574, "type": "mouseover", "message_id": 1786}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 574, "type": "mouseover", "message_id": 1787}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 574, "type": "mousemove", "message_id": 1788}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 242, "x": 549, "type": "mousemove", "message_id": 1790}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 248, "x": 559, "type": "mousemove", "message_id": 1789}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 238, "x": 542, "type": "mousemove", "message_id": 1791}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 234, "x": 537, "type": "mousemove", "message_id": 1792}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 230, "x": 531, "type": "mousemove", "message_id": 1793}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 226, "x": 526, "type": "mousemove", "message_id": 1794}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 223, "x": 521, "type": "mousemove", "message_id": 1795}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 221, "x": 520, "type": "mouseover", "message_id": 1796}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 221, "x": 520, "type": "mouseover", "message_id": 1797}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 221, "x": 520, "type": "mousemove", "message_id": 1798}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 220, "x": 519, "type": "mousemove", "message_id": 1799}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 519, "type": "mousemove", "message_id": 1800}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 519, "type": "mousemove", "message_id": 1801}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 519, "type": "mousemove", "message_id": 1802}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 519, "type": "mousedown", "message_id": 1803}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 519, "type": "mouseup", "message_id": 1805}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 519, "type": "mousemove", "message_id": 1806}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 518, "type": "mousemove", "message_id": 1807}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 518, "type": "mousemove", "message_id": 1808}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 518, "type": "mousemove", "message_id": 1809}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 518, "type": "mousemove", "message_id": 1810}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 518, "type": "mousemove", "message_id": 1811}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 218, "x": 517, "type": "mousemove", "message_id": 1812}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 217, "x": 516, "type": "mousemove", "message_id": 1813}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 215, "x": 514, "type": "mouseover", "message_id": 1814}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 215, "x": 514, "type": "mouseover", "message_id": 1815}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 214, "x": 513, "type": "mouseover", "message_id": 1817}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 215, "x": 514, "type": "mousemove", "message_id": 1816}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 214, "x": 513, "type": "mouseover", "message_id": 1818}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 214, "x": 513, "type": "mousemove", "message_id": 1819}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 212, "x": 511, "type": "mouseover", "message_id": 1820}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 212, "x": 511, "type": "mouseover", "message_id": 1821}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 212, "x": 511, "type": "mousemove", "message_id": 1822}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 211, "x": 508, "type": "mouseover", "message_id": 1823}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 211, "x": 508, "type": "mouseover", "message_id": 1824}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 211, "x": 508, "type": "mousemove", "message_id": 1825}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 209, "x": 507, "type": "mouseover", "message_id": 1826}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 209, "x": 507, "type": "mouseover", "message_id": 1827}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 209, "x": 507, "type": "mousemove", "message_id": 1828}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 208, "x": 506, "type": "mousemove", "message_id": 1829}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 208, "x": 505, "type": "mousemove", "message_id": 1830}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 207, "x": 505, "type": "mousemove", "message_id": 1831}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 206, "x": 505, "type": "mousemove", "message_id": 1832}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 205, "x": 505, "type": "mousemove", "message_id": 1833}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 205, "x": 505, "type": "mousemove", "message_id": 1834}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 204, "x": 505, "type": "mousemove", "message_id": 1835}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 204, "x": 504, "type": "mousemove", "message_id": 1836}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 204, "x": 504, "type": "mousemove", "message_id": 1837}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 205, "x": 504, "type": "mousemove", "message_id": 1838}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 205, "x": 504, "type": "mousedown", "message_id": 1839}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 206, "x": 502, "type": "mouseover", "message_id": 1840}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 206, "x": 502, "type": "mouseover", "message_id": 1841}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 206, "x": 502, "type": "mousemove", "message_id": 1842}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 209, "x": 500, "type": "mouseover", "message_id": 1843}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 209, "x": 500, "type": "mouseover", "message_id": 1844}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 209, "x": 500, "type": "mousemove", "message_id": 1845}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 217, "x": 493, "type": "mousemove", "message_id": 1847}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 212, "x": 497, "type": "mousemove", "message_id": 1846}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 222, "x": 487, "type": "mousemove", "message_id": 1848}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 229, "x": 480, "type": "mousemove", "message_id": 1849}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 235, "x": 475, "type": "mousemove", "message_id": 1850}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 241, "x": 470, "type": "mousemove", "message_id": 1851}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 248, "x": 466, "type": "mousemove", "message_id": 1852}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 462, "type": "mousemove", "message_id": 1853}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 458, "type": "mousemove", "message_id": 1854}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 454, "type": "mousemove", "message_id": 1855}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 451, "type": "mousemove", "message_id": 1856}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 449, "type": "mouseover", "message_id": 1857}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 449, "type": "mousemove", "message_id": 1859}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 449, "type": "mouseover", "message_id": 1858}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 449, "type": "mouseover", "message_id": 1860}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 449, "type": "mouseover", "message_id": 1861}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 449, "type": "mousemove", "message_id": 1862}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 449, "type": "mousemove", "message_id": 1863}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 449, "type": "mouseup", "message_id": 1864}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 449, "type": "mousemove", "message_id": 1865}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 449, "type": "mousemove", "message_id": 1866}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 448, "type": "mousemove", "message_id": 1867}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 447, "type": "mousemove", "message_id": 1868}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 445, "type": "mouseover", "message_id": 1869}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 445, "type": "mouseover", "message_id": 1870}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 445, "type": "mousemove", "message_id": 1871}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 443, "type": "mousemove", "message_id": 1872}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 268, "x": 439, "type": "mousemove", "message_id": 1873}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 433, "type": "mouseover", "message_id": 1874}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 433, "type": "mouseover", "message_id": 1875}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 433, "type": "mousemove", "message_id": 1876}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 426, "type": "mouseover", "message_id": 1877}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 426, "type": "mouseover", "message_id": 1878}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 426, "type": "mousemove", "message_id": 1879}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 417, "type": "mousemove", "message_id": 1880}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 411, "type": "mouseover", "message_id": 1881}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 411, "type": "mouseover", "message_id": 1882}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 411, "type": "mousemove", "message_id": 1883}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 261, "x": 407, "type": "mouseover", "message_id": 1884}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 261, "x": 407, "type": "mouseover", "message_id": 1885}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 261, "x": 407, "type": "mousemove", "message_id": 1886}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 406, "type": "mouseover", "message_id": 1887}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 406, "type": "mouseover", "message_id": 1888}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 406, "type": "mousemove", "message_id": 1889}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 407, "type": "mousemove", "message_id": 1890}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 407, "type": "mousemove", "message_id": 1891}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 407, "type": "mousemove", "message_id": 1892}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 408, "type": "mousemove", "message_id": 1893}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 408, "type": "mousemove", "message_id": 1894}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 409, "type": "mousemove", "message_id": 1895}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 409, "type": "mousemove", "message_id": 1896}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 259, "x": 409, "type": "mousemove", "message_id": 1897}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 258, "x": 409, "type": "mousemove", "message_id": 1898}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 257, "x": 409, "type": "mousemove", "message_id": 1899}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 408, "type": "mousemove", "message_id": 1900}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 407, "type": "mousemove", "message_id": 1901}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 252, "x": 405, "type": "mouseover", "message_id": 1902}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 252, "x": 405, "type": "mouseover", "message_id": 1903}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 252, "x": 405, "type": "mousemove", "message_id": 1904}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 250, "x": 404, "type": "mouseover", "message_id": 1906}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 250, "x": 404, "type": "mouseover", "message_id": 1905}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 250, "x": 404, "type": "mousemove", "message_id": 1907}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 248, "x": 402, "type": "mouseover", "message_id": 1908}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 248, "x": 402, "type": "mouseover", "message_id": 1909}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 248, "x": 402, "type": "mousemove", "message_id": 1910}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 247, "x": 401, "type": "mouseover", "message_id": 1911}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 247, "x": 401, "type": "mouseover", "message_id": 1912}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 247, "x": 401, "type": "mousemove", "message_id": 1913}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 246, "x": 400, "type": "mousemove", "message_id": 1914}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 244, "x": 399, "type": "mousemove", "message_id": 1915}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 243, "x": 398, "type": "mousemove", "message_id": 1916}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 243, "x": 398, "type": "mousemove", "message_id": 1917}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 243, "x": 397, "type": "mousemove", "message_id": 1918}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 241, "x": 396, "type": "mousemove", "message_id": 1919}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 238, "x": 392, "type": "mouseover", "message_id": 1920}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 238, "x": 392, "type": "mouseover", "message_id": 1921}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 238, "x": 392, "type": "mousemove", "message_id": 1922}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 233, "x": 387, "type": "mousemove", "message_id": 1923}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 226, "x": 379, "type": "mousemove", "message_id": 1924}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 216, "x": 366, "type": "mousemove", "message_id": 1925}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 204, "x": 347, "type": "mousemove", "message_id": 1926}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 193, "x": 329, "type": "mousemove", "message_id": 1927}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 178, "x": 301, "type": "mousemove", "message_id": 1928}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 161, "x": 270, "type": "mousemove", "message_id": 1929}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 147, "x": 239, "type": "mousemove", "message_id": 1930}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 132, "x": 206, "type": "mousemove", "message_id": 1931}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 119, "x": 177, "type": "mousemove", "message_id": 1932}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 106, "x": 149, "type": "mousemove", "message_id": 1933}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 93, "x": 126, "type": "mousemove", "message_id": 1934}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 82, "x": 109, "type": "mousemove", "message_id": 1935}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 73, "x": 96, "type": "mousemove", "message_id": 1936}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 68, "x": 91, "type": "mousemove", "message_id": 1937}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 63, "x": 87, "type": "mousemove", "message_id": 1938}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 85, "type": "mouseover", "message_id": 1939}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 85, "type": "mouseover", "message_id": 1940}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 85, "type": "mousemove", "message_id": 1941}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 84, "type": "mouseover", "message_id": 1943}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 84, "type": "mouseover", "message_id": 1942}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 84, "type": "mousemove", "message_id": 1944}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 82, "type": "mousemove", "message_id": 1946}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 55, "x": 83, "type": "mousemove", "message_id": 1945}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 80, "type": "mouseover", "message_id": 1948}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 80, "type": "mouseover", "message_id": 1947}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 80, "type": "mousemove", "message_id": 1949}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 79, "type": "mouseover", "message_id": 1951}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 79, "type": "mouseover", "message_id": 1950}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 79, "type": "mousemove", "message_id": 1952}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 78, "type": "mousemove", "message_id": 1953}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 78, "type": "mousemove", "message_id": 1954}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 79, "type": "mousemove", "message_id": 1955}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 79, "type": "mousemove", "message_id": 1956}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 79, "type": "mousemove", "message_id": 1957}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 78, "type": "mousemove", "message_id": 1958}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 75, "type": "mouseover", "message_id": 1959}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 75, "type": "mouseover", "message_id": 1960}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 75, "type": "mousemove", "message_id": 1961}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 71, "type": "mousemove", "message_id": 1962}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 66, "type": "mousemove", "message_id": 1963}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 63, "type": "mousemove", "message_id": 1964}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 61, "type": "mousemove", "message_id": 1965}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 60, "type": "mouseover", "message_id": 1966}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 60, "type": "mouseover", "message_id": 1967}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 60, "type": "mousemove", "message_id": 1968}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 60, "type": "mousemove", "message_id": 1969}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 59, "type": "mousemove", "message_id": 1970}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 58, "type": "mousemove", "message_id": 1971}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 58, "type": "mousemove", "message_id": 1972}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 57, "type": "mousemove", "message_id": 1973}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 56, "type": "mousemove", "message_id": 1974}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 55, "type": "mousemove", "message_id": 1975}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 54, "type": "mousemove", "message_id": 1976}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 53, "type": "mousemove", "message_id": 1977}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 47, "x": 52, "type": "mousemove", "message_id": 1978}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 47, "x": 51, "type": "mousemove", "message_id": 1979}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 46, "x": 50, "type": "mousemove", "message_id": 1980}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 46, "x": 50, "type": "mousemove", "message_id": 1981}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 46, "x": 50, "type": "mousemove", "message_id": 1982}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 46, "x": 50, "type": "mousemove", "message_id": 1983}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 46, "x": 49, "type": "mousemove", "message_id": 1984}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 45, "x": 48, "type": "mousemove", "message_id": 1985}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 45, "x": 48, "type": "mousemove", "message_id": 1986}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 45, "x": 48, "type": "mousemove", "message_id": 1987}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 45, "x": 47, "type": "mousemove", "message_id": 1988}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 45, "x": 47, "type": "mousedown", "message_id": 1989}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 44, "x": 47, "type": "mousemove", "message_id": 1990}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 44, "x": 47, "type": "mouseup", "message_id": 1991}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 43, "x": 46, "type": "mousemove", "message_id": 1993}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 42, "x": 45, "type": "mousemove", "message_id": 1994}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 42, "x": 45, "type": "mousemove", "message_id": 1995}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 42, "x": 45, "type": "mousemove", "message_id": 1996}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 42, "x": 46, "type": "mousemove", "message_id": 1997}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 42, "x": 46, "type": "mousemove", "message_id": 1998}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 42, "x": 46, "type": "mousemove", "message_id": 1999}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 43, "x": 47, "type": "mousemove", "message_id": 2000}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 43, "x": 48, "type": "mousemove", "message_id": 2001}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 43, "x": 48, "type": "mousemove", "message_id": 2002}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 43, "x": 49, "type": "mousemove", "message_id": 2003}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 43, "x": 49, "type": "mousemove", "message_id": 2004}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 44, "x": 50, "type": "mousemove", "message_id": 2005}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 44, "x": 51, "type": "mousemove", "message_id": 2006}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 44, "x": 52, "type": "mousemove", "message_id": 2007}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 45, "x": 54, "type": "mouseover", "message_id": 2008}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 45, "x": 54, "type": "mouseover", "message_id": 2009}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 45, "x": 54, "type": "mousemove", "message_id": 2010}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 47, "x": 60, "type": "mousemove", "message_id": 2012}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 46, "x": 57, "type": "mousemove", "message_id": 2011}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 62, "type": "mousemove", "message_id": 2013}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 62, "type": "mouseover", "message_id": 2014}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 62, "type": "mousemove", "message_id": 2016}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 62, "type": "mouseover", "message_id": 2015}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 63, "type": "mousemove", "message_id": 2017}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 63, "type": "mousemove", "message_id": 2018}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 64, "type": "mousemove", "message_id": 2019}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 64, "type": "mousemove", "message_id": 2020}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 65, "type": "mousemove", "message_id": 2021}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 65, "type": "mousemove", "message_id": 2022}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 65, "type": "mousemove", "message_id": 2023}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 65, "type": "mousemove", "message_id": 2024}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 65, "type": "mousemove", "message_id": 2025}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 65, "type": "mousemove", "message_id": 2026}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 65, "type": "mousemove", "message_id": 2027}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 66, "type": "mousemove", "message_id": 2028}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 67, "type": "mousemove", "message_id": 2029}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 69, "type": "mouseover", "message_id": 2030}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 69, "type": "mouseover", "message_id": 2031}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 69, "type": "mousemove", "message_id": 2032}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 72, "type": "mouseover", "message_id": 2033}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 72, "type": "mouseover", "message_id": 2034}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 72, "type": "mousemove", "message_id": 2035}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 60, "x": 76, "type": "mouseover", "message_id": 2036}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 60, "x": 76, "type": "mouseover", "message_id": 2037}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 60, "x": 76, "type": "mousemove", "message_id": 2038}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 64, "x": 81, "type": "mousemove", "message_id": 2039}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 70, "x": 92, "type": "mousemove", "message_id": 2040}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 77, "x": 106, "type": "mousemove", "message_id": 2041}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 85, "x": 127, "type": "mousemove", "message_id": 2042}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 94, "x": 150, "type": "mousemove", "message_id": 2043}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 100, "x": 171, "type": "mousemove", "message_id": 2044}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 104, "x": 188, "type": "mousemove", "message_id": 2045}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 107, "x": 200, "type": "mousemove", "message_id": 2046}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 108, "x": 208, "type": "mouseover", "message_id": 2047}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 108, "x": 208, "type": "mouseover", "message_id": 2048}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 108, "x": 208, "type": "mousemove", "message_id": 2049}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 110, "x": 216, "type": "mouseover", "message_id": 2050}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 110, "x": 216, "type": "mouseover", "message_id": 2051}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 110, "x": 216, "type": "mousemove", "message_id": 2052}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 222, "type": "mouseover", "message_id": 2053}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 222, "type": "mouseover", "message_id": 2054}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 222, "type": "mousemove", "message_id": 2055}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 226, "type": "mousemove", "message_id": 2056}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 228, "type": "mousemove", "message_id": 2057}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 229, "type": "mouseover", "message_id": 2058}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 229, "type": "mouseover", "message_id": 2059}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 229, "type": "mousemove", "message_id": 2060}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 229, "type": "mousemove", "message_id": 2061}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 229, "type": "mousemove", "message_id": 2062}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 229, "type": "mousedown", "message_id": 2063}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 229, "type": "mouseup", "message_id": 2064}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 229, "type": "mousemove", "message_id": 2065}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 227, "type": "mouseover", "message_id": 2066}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 227, "type": "mousemove", "message_id": 2068}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 227, "type": "mouseover", "message_id": 2067}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 110, "x": 223, "type": "mousemove", "message_id": 2069}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 108, "x": 216, "type": "mouseover", "message_id": 2070}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 108, "x": 216, "type": "mouseover", "message_id": 2071}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 108, "x": 216, "type": "mousemove", "message_id": 2072}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 103, "x": 203, "type": "mousemove", "message_id": 2074}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 105, "x": 209, "type": "mousemove", "message_id": 2073}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 100, "x": 196, "type": "mousemove", "message_id": 2075}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 96, "x": 188, "type": "mousemove", "message_id": 2076}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 93, "x": 180, "type": "mousemove", "message_id": 2077}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 91, "x": 175, "type": "mousemove", "message_id": 2078}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 87, "x": 169, "type": "mousemove", "message_id": 2079}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 84, "x": 162, "type": "mousemove", "message_id": 2080}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 81, "x": 157, "type": "mousemove", "message_id": 2081}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 78, "x": 152, "type": "mousemove", "message_id": 2082}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 75, "x": 146, "type": "mousemove", "message_id": 2083}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 72, "x": 142, "type": "mousemove", "message_id": 2084}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 68, "x": 138, "type": "mousemove", "message_id": 2086}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 70, "x": 140, "type": "mousemove", "message_id": 2085}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 66, "x": 137, "type": "mouseover", "message_id": 2087}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 66, "x": 137, "type": "mousemove", "message_id": 2089}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 66, "x": 137, "type": "mouseover", "message_id": 2088}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 63, "x": 136, "type": "mousemove", "message_id": 2090}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 62, "x": 136, "type": "mousemove", "message_id": 2091}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 135, "type": "mousemove", "message_id": 2092}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 58, "x": 135, "type": "mousemove", "message_id": 2093}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 134, "type": "mousemove", "message_id": 2094}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 134, "type": "mousemove", "message_id": 2095}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 55, "x": 134, "type": "mousemove", "message_id": 2096}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 133, "type": "mousemove", "message_id": 2097}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 132, "type": "mousemove", "message_id": 2098}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 131, "type": "mousemove", "message_id": 2099}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 130, "type": "mousemove", "message_id": 2100}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 130, "type": "mousemove", "message_id": 2101}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 129, "type": "mousemove", "message_id": 2102}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 129, "type": "mousemove", "message_id": 2103}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 129, "type": "mousemove", "message_id": 2104}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 129, "type": "mousemove", "message_id": 2105}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 129, "type": "mousemove", "message_id": 2106}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 129, "type": "mousedown", "message_id": 2107}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 129, "type": "mouseup", "message_id": 2108}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 129, "type": "mousemove", "message_id": 2110}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 129, "type": "mousemove", "message_id": 2111}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 129, "type": "mousemove", "message_id": 2112}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 130, "type": "mousemove", "message_id": 2113}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 131, "type": "mousemove", "message_id": 2114}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 132, "type": "mousemove", "message_id": 2115}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 132, "type": "mousemove", "message_id": 2116}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 132, "type": "mousemove", "message_id": 2117}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 132, "type": "mousemove", "message_id": 2118}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 133, "type": "mousemove", "message_id": 2119}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 133, "type": "mousemove", "message_id": 2120}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 55, "x": 134, "type": "mousemove", "message_id": 2121}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 55, "x": 136, "type": "mousemove", "message_id": 2124}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 55, "x": 136, "type": "mouseover", "message_id": 2123}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 55, "x": 136, "type": "mouseover", "message_id": 2122}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 137, "type": "mouseover", "message_id": 2125}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 137, "type": "mouseover", "message_id": 2126}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 137, "type": "mousemove", "message_id": 2127}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 137, "type": "mousemove", "message_id": 2128}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 137, "type": "mousemove", "message_id": 2129}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 137, "type": "mousemove", "message_id": 2130}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 138, "type": "mousemove", "message_id": 2131}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 139, "type": "mousemove", "message_id": 2132}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 141, "type": "mouseover", "message_id": 2133}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 141, "type": "mouseover", "message_id": 2134}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 58, "x": 143, "type": "mousemove", "message_id": 2136}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 141, "type": "mousemove", "message_id": 2135}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 60, "x": 147, "type": "mouseover", "message_id": 2137}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 60, "x": 147, "type": "mouseover", "message_id": 2138}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 60, "x": 147, "type": "mousemove", "message_id": 2139}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 62, "x": 151, "type": "mousemove", "message_id": 2140}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 65, "x": 156, "type": "mousemove", "message_id": 2141}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 67, "x": 161, "type": "mousemove", "message_id": 2142}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 69, "x": 165, "type": "mousemove", "message_id": 2143}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 71, "x": 168, "type": "mousemove", "message_id": 2144}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 73, "x": 173, "type": "mousemove", "message_id": 2145}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 76, "x": 178, "type": "mousemove", "message_id": 2146}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 80, "x": 185, "type": "mousemove", "message_id": 2147}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 84, "x": 194, "type": "mousemove", "message_id": 2148}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 87, "x": 201, "type": "mousemove", "message_id": 2149}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 91, "x": 209, "type": "mousemove", "message_id": 2150}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 93, "x": 215, "type": "mousemove", "message_id": 2151}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 95, "x": 218, "type": "mousemove", "message_id": 2152}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 97, "x": 221, "type": "mousemove", "message_id": 2153}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 99, "x": 224, "type": "mousemove", "message_id": 2154}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 100, "x": 227, "type": "mouseover", "message_id": 2155}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 100, "x": 227, "type": "mouseover", "message_id": 2156}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 100, "x": 227, "type": "mousemove", "message_id": 2157}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 103, "x": 231, "type": "mouseover", "message_id": 2158}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 103, "x": 231, "type": "mouseover", "message_id": 2159}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 103, "x": 231, "type": "mousemove", "message_id": 2160}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 105, "x": 235, "type": "mousemove", "message_id": 2161}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 107, "x": 240, "type": "mousemove", "message_id": 2162}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 109, "x": 244, "type": "mousemove", "message_id": 2163}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 247, "type": "mousemove", "message_id": 2164}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 249, "type": "mouseover", "message_id": 2165}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 249, "type": "mouseover", "message_id": 2166}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 249, "type": "mousemove", "message_id": 2167}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 251, "type": "mousemove", "message_id": 2168}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 251, "type": "mouseover", "message_id": 2169}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 251, "type": "mouseover", "message_id": 2170}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 251, "type": "mousemove", "message_id": 2171}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 252, "type": "mousemove", "message_id": 2172}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 252, "type": "mousemove", "message_id": 2173}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 252, "type": "mousemove", "message_id": 2174}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 252, "type": "mousemove", "message_id": 2175}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 252, "type": "mousemove", "message_id": 2176}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 252, "type": "mousemove", "message_id": 2177}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 252, "type": "mousedown", "message_id": 2178}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 252, "type": "mouseup", "message_id": 2179}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 252, "type": "mousemove", "message_id": 2180}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 113, "x": 251, "type": "mousemove", "message_id": 2181}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 250, "type": "mousemove", "message_id": 2182}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 248, "type": "mouseover", "message_id": 2183}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 248, "type": "mouseover", "message_id": 2184}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 248, "type": "mousemove", "message_id": 2185}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 247, "type": "mouseover", "message_id": 2186}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 247, "type": "mousemove", "message_id": 2188}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 111, "x": 247, "type": "mouseover", "message_id": 2187}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 110, "x": 245, "type": "mouseover", "message_id": 2189}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 110, "x": 245, "type": "mouseover", "message_id": 2190}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 110, "x": 245, "type": "mousemove", "message_id": 2191}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 110, "x": 244, "type": "mouseover", "message_id": 2192}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 110, "x": 244, "type": "mouseover", "message_id": 2193}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 110, "x": 244, "type": "mousemove", "message_id": 2194}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 109, "x": 242, "type": "mouseover", "message_id": 2195}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 109, "x": 242, "type": "mouseover", "message_id": 2196}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 109, "x": 242, "type": "mousemove", "message_id": 2197}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 108, "x": 239, "type": "mousemove", "message_id": 2198}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 106, "x": 235, "type": "mouseover", "message_id": 2199}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 106, "x": 235, "type": "mouseover", "message_id": 2200}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 106, "x": 235, "type": "mousemove", "message_id": 2201}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 104, "x": 230, "type": "mousemove", "message_id": 2202}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 101, "x": 226, "type": "mousemove", "message_id": 2203}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 98, "x": 221, "type": "mousemove", "message_id": 2204}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 94, "x": 217, "type": "mousemove", "message_id": 2205}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 90, "x": 212, "type": "mousemove", "message_id": 2206}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 85, "x": 207, "type": "mousemove", "message_id": 2207}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 81, "x": 202, "type": "mousemove", "message_id": 2208}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 78, "x": 199, "type": "mousemove", "message_id": 2209}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 74, "x": 196, "type": "mousemove", "message_id": 2210}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 70, "x": 193, "type": "mousemove", "message_id": 2211}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 66, "x": 191, "type": "mousemove", "message_id": 2212}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 63, "x": 189, "type": "mousemove", "message_id": 2213}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 186, "type": "mouseover", "message_id": 2214}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 186, "type": "mousemove", "message_id": 2216}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 186, "type": "mouseover", "message_id": 2215}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 55, "x": 183, "type": "mousemove", "message_id": 2217}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 182, "type": "mousemove", "message_id": 2220}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 182, "type": "mouseover", "message_id": 2219}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 182, "type": "mouseover", "message_id": 2218}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 181, "type": "mousemove", "message_id": 2221}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 180, "type": "mousemove", "message_id": 2222}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 180, "type": "mousemove", "message_id": 2223}
diff --git a/recordings/test_edit_labels.replay b/recordings/test_edit_labels.replay
new file mode 100644
index 0000000000..cd6b14d435
--- /dev/null
+++ b/recordings/test_edit_labels.replay
@@ -0,0 +1,1468 @@
+{"panX": -140.17260837070137, "panY": -107.64288529823517, "scale": 1.6599999999999966, "sender": 3697, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 48, "x": 190, "type": "mousemove", "message_id": 1901}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 49, "x": 191, "type": "mousemove", "message_id": 1902}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 51, "x": 192, "type": "mousemove", "message_id": 1903}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 53, "x": 193, "type": "mousemove", "message_id": 1904}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 57, "x": 195, "type": "mouseover", "message_id": 1905}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 57, "x": 195, "type": "mousemove", "message_id": 1907}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 57, "x": 195, "type": "mouseover", "message_id": 1906}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 62, "x": 197, "type": "mouseover", "message_id": 1908}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 62, "x": 197, "type": "mousemove", "message_id": 1910}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 62, "x": 197, "type": "mouseover", "message_id": 1909}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 72, "x": 202, "type": "mousemove", "message_id": 1911}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 86, "x": 209, "type": "mousemove", "message_id": 1912}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 104, "x": 216, "type": "mousemove", "message_id": 1913}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 123, "x": 221, "type": "mousemove", "message_id": 1914}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 144, "x": 223, "type": "mousemove", "message_id": 1915}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 167, "x": 223, "type": "mousemove", "message_id": 1916}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 192, "x": 224, "type": "mousemove", "message_id": 1917}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 219, "x": 223, "type": "mousemove", "message_id": 1918}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 238, "x": 222, "type": "mousemove", "message_id": 1919}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 262, "x": 219, "type": "mousemove", "message_id": 1920}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 279, "x": 214, "type": "mousemove", "message_id": 1921}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 208, "type": "mousemove", "message_id": 1922}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 203, "type": "mousemove", "message_id": 1923}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 199, "type": "mousemove", "message_id": 1924}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 196, "type": "mousemove", "message_id": 1925}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 309, "x": 195, "type": "mouseover", "message_id": 1927}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 309, "x": 195, "type": "mouseover", "message_id": 1926}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 309, "x": 195, "type": "mousemove", "message_id": 1928}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 194, "type": "mousemove", "message_id": 1929}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 194, "type": "mousemove", "message_id": 1930}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 195, "type": "mousemove", "message_id": 1931}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 195, "type": "mousemove", "message_id": 1932}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 195, "type": "mousemove", "message_id": 1933}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 196, "type": "mousemove", "message_id": 1934}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 197, "type": "mousemove", "message_id": 1935}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 197, "type": "mousemove", "message_id": 1936}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 197, "type": "mousemove", "message_id": 1937}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 197, "type": "mousemove", "message_id": 1938}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 197, "type": "mousemove", "message_id": 1939}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 197, "type": "mousemove", "message_id": 1940}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 197, "type": "mousemove", "message_id": 1941}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 197, "type": "mousemove", "message_id": 1942}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 197, "type": "mousedown", "message_id": 1943}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 197, "type": "mouseup", "message_id": 1944}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1945, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 198, "type": "mousemove", "message_id": 1947}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 202, "type": "mousemove", "message_id": 1950}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 202, "type": "mouseover", "message_id": 1948}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 202, "type": "mouseover", "message_id": 1949}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 210, "type": "mousemove", "message_id": 1951}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 220, "type": "mousemove", "message_id": 1952}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 233, "type": "mousemove", "message_id": 1953}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 245, "type": "mousemove", "message_id": 1954}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 270, "type": "mouseover", "message_id": 1955}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 270, "type": "mouseover", "message_id": 1956}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 270, "type": "mousemove", "message_id": 1957}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 307, "type": "mouseover", "message_id": 1958}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 307, "type": "mouseover", "message_id": 1959}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 307, "type": "mousemove", "message_id": 1960}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 321, "x": 358, "type": "mousemove", "message_id": 1961}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 407, "type": "mousemove", "message_id": 1962}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 433, "type": "mousemove", "message_id": 1963}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 327, "x": 460, "type": "mousemove", "message_id": 1964}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 477, "type": "mousemove", "message_id": 1965}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 484, "type": "mouseover", "message_id": 1966}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 484, "type": "mouseover", "message_id": 1967}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 484, "type": "mousemove", "message_id": 1968}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 490, "type": "mousemove", "message_id": 1969}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 491, "type": "mouseover", "message_id": 1970}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 491, "type": "mouseover", "message_id": 1971}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 491, "type": "mousemove", "message_id": 1972}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 491, "type": "mousemove", "message_id": 1973}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 491, "type": "mousemove", "message_id": 1974}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 491, "type": "mousemove", "message_id": 1975}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 493, "type": "mouseover", "message_id": 1976}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 493, "type": "mouseover", "message_id": 1977}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 493, "type": "mousemove", "message_id": 1978}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 495, "type": "mousemove", "message_id": 1979}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 497, "type": "mousemove", "message_id": 1980}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 502, "type": "mousemove", "message_id": 1981}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 507, "type": "mousemove", "message_id": 1982}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 512, "type": "mousemove", "message_id": 1983}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 517, "type": "mousemove", "message_id": 1984}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 521, "type": "mousemove", "message_id": 1985}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 522, "type": "mouseover", "message_id": 1986}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 522, "type": "mouseover", "message_id": 1987}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 522, "type": "mousemove", "message_id": 1988}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 523, "type": "mousemove", "message_id": 1989}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 525, "type": "mouseover", "message_id": 1990}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 525, "type": "mouseover", "message_id": 1991}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 525, "type": "mousemove", "message_id": 1992}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 527, "type": "mousemove", "message_id": 1993}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 529, "type": "mousemove", "message_id": 1994}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 530, "type": "mouseover", "message_id": 1995}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 530, "type": "mouseover", "message_id": 1996}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 530, "type": "mousemove", "message_id": 1997}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 531, "type": "mousemove", "message_id": 1998}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 532, "type": "mousemove", "message_id": 1999}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 532, "type": "mousemove", "message_id": 2000}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 533, "type": "mousemove", "message_id": 2001}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 533, "type": "mousemove", "message_id": 2002}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 533, "type": "mousemove", "message_id": 2003}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 533, "type": "mousedown", "message_id": 2004}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 533, "type": "mousemove", "message_id": 2005}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 533, "type": "mousemove", "message_id": 2006}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 533, "type": "mouseup", "message_id": 2007}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2008, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 533, "type": "mousemove", "message_id": 2010}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 533, "type": "mousemove", "message_id": 2011}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 530, "type": "mouseover", "message_id": 2012}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 530, "type": "mousemove", "message_id": 2014}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 530, "type": "mouseover", "message_id": 2013}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 525, "type": "mousemove", "message_id": 2015}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 516, "type": "mousemove", "message_id": 2016}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 501, "type": "mousemove", "message_id": 2017}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 478, "type": "mouseover", "message_id": 2018}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 478, "type": "mouseover", "message_id": 2019}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 446, "type": "mouseover", "message_id": 2021}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 326, "x": 478, "type": "mousemove", "message_id": 2020}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 446, "type": "mouseover", "message_id": 2022}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 325, "x": 446, "type": "mousemove", "message_id": 2023}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 324, "x": 415, "type": "mousemove", "message_id": 2024}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 323, "x": 376, "type": "mousemove", "message_id": 2025}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 322, "x": 336, "type": "mousemove", "message_id": 2026}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 298, "type": "mousemove", "message_id": 2027}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 275, "type": "mouseover", "message_id": 2028}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 275, "type": "mouseover", "message_id": 2029}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 248, "type": "mouseover", "message_id": 2031}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 275, "type": "mousemove", "message_id": 2030}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 248, "type": "mouseover", "message_id": 2032}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 248, "type": "mousemove", "message_id": 2033}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 232, "type": "mouseover", "message_id": 2034}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 232, "type": "mouseover", "message_id": 2035}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 232, "type": "mousemove", "message_id": 2036}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 225, "type": "mouseover", "message_id": 2038}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 225, "type": "mouseover", "message_id": 2037}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 225, "type": "mousemove", "message_id": 2039}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 221, "type": "mousemove", "message_id": 2040}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 220, "type": "mouseover", "message_id": 2041}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 220, "type": "mouseover", "message_id": 2042}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 220, "type": "mousemove", "message_id": 2043}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 220, "type": "mousemove", "message_id": 2044}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 219, "type": "mousemove", "message_id": 2045}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 219, "type": "mousemove", "message_id": 2046}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 219, "type": "mousemove", "message_id": 2047}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 218, "type": "mousemove", "message_id": 2048}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 218, "type": "mousemove", "message_id": 2049}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 218, "type": "mousemove", "message_id": 2050}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 218, "type": "mousemove", "message_id": 2051}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 218, "type": "mousedown", "message_id": 2052}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 218, "type": "mouseup", "message_id": 2054}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 218, "type": "mousedown", "message_id": 2055}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 218, "type": "mouseup", "message_id": 2058}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 218, "type": "mousemove", "message_id": 2059}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2060, "altKey": false, "metaKey": false, "key": "1", "ctrlKey": false, "type": "keydown", "keyCode": 49}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 218, "type": "mousemove", "message_id": 2062}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 222, "type": "mouseover", "message_id": 2063}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 222, "type": "mouseover", "message_id": 2064}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 222, "type": "mousemove", "message_id": 2065}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 228, "type": "mousemove", "message_id": 2066}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 242, "type": "mousemove", "message_id": 2067}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 261, "type": "mouseover", "message_id": 2068}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 261, "type": "mouseover", "message_id": 2069}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 278, "type": "mousemove", "message_id": 2071}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 306, "type": "mouseover", "message_id": 2072}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 306, "type": "mouseover", "message_id": 2073}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 261, "type": "mousemove", "message_id": 2070}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 306, "type": "mousemove", "message_id": 2074}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 336, "type": "mousemove", "message_id": 2075}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 366, "type": "mousemove", "message_id": 2076}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 396, "type": "mousemove", "message_id": 2077}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 412, "type": "mousemove", "message_id": 2078}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 426, "type": "mouseover", "message_id": 2080}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 426, "type": "mousemove", "message_id": 2081}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 426, "type": "mouseover", "message_id": 2079}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 432, "type": "mousemove", "message_id": 2082}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 437, "type": "mousemove", "message_id": 2083}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 439, "type": "mousemove", "message_id": 2084}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 440, "type": "mouseover", "message_id": 2085}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 440, "type": "mouseover", "message_id": 2086}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 440, "type": "mousemove", "message_id": 2087}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 441, "type": "mousemove", "message_id": 2088}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 442, "type": "mousemove", "message_id": 2089}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 443, "type": "mousemove", "message_id": 2090}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 444, "type": "mousemove", "message_id": 2091}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 445, "type": "mousemove", "message_id": 2092}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 447, "type": "mouseover", "message_id": 2093}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 447, "type": "mouseover", "message_id": 2094}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 447, "type": "mousemove", "message_id": 2095}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 448, "type": "mouseover", "message_id": 2096}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 448, "type": "mouseover", "message_id": 2097}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 448, "type": "mousemove", "message_id": 2098}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 448, "type": "mousemove", "message_id": 2099}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 448, "type": "mousedown", "message_id": 2100}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 448, "type": "mouseup", "message_id": 2102}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 449, "type": "mousemove", "message_id": 2103}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 449, "type": "mousemove", "message_id": 2104}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 449, "type": "mousemove", "message_id": 2105}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 449, "type": "mousemove", "message_id": 2106}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 449, "type": "mousedown", "message_id": 2107}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 449, "type": "mousemove", "message_id": 2108}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 449, "type": "mouseup", "message_id": 2109}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 450, "type": "mousemove", "message_id": 2110}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 450, "type": "mousemove", "message_id": 2111}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 452, "type": "mouseover", "message_id": 2112}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 452, "type": "mouseover", "message_id": 2113}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 452, "type": "mousemove", "message_id": 2114}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 456, "type": "mousemove", "message_id": 2115}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 463, "type": "mousemove", "message_id": 2116}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 473, "type": "mousemove", "message_id": 2117}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 484, "type": "mousemove", "message_id": 2118}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 495, "type": "mouseover", "message_id": 2119}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 495, "type": "mouseover", "message_id": 2120}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 495, "type": "mousemove", "message_id": 2121}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 501, "type": "mouseover", "message_id": 2122}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 501, "type": "mouseover", "message_id": 2123}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 501, "type": "mousemove", "message_id": 2124}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 321, "x": 506, "type": "mousemove", "message_id": 2125}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 321, "x": 510, "type": "mousemove", "message_id": 2126}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 514, "type": "mousemove", "message_id": 2127}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 517, "type": "mousemove", "message_id": 2128}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 517, "type": "mouseover", "message_id": 2129}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 517, "type": "mouseover", "message_id": 2130}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 517, "type": "mousemove", "message_id": 2131}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 518, "type": "mousemove", "message_id": 2132}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 518, "type": "mousemove", "message_id": 2133}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 518, "type": "mousedown", "message_id": 2134}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 518, "type": "mouseup", "message_id": 2136}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 518, "type": "mousedown", "message_id": 2137}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 518, "type": "mouseup", "message_id": 2140}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2141, "altKey": false, "metaKey": false, "key": "2", "ctrlKey": false, "type": "keydown", "keyCode": 50}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 320, "x": 518, "type": "mousemove", "message_id": 2143}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 519, "type": "mousemove", "message_id": 2144}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 319, "x": 520, "type": "mousemove", "message_id": 2145}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 521, "type": "mousemove", "message_id": 2146}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 318, "x": 522, "type": "mousemove", "message_id": 2147}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 522, "type": "mousemove", "message_id": 2148}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 521, "type": "mousemove", "message_id": 2149}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 521, "type": "mousemove", "message_id": 2150}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 521, "type": "mousemove", "message_id": 2151}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 521, "type": "mousemove", "message_id": 2152}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 521, "type": "mousemove", "message_id": 2153}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 520, "type": "mousemove", "message_id": 2154}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 519, "type": "mousemove", "message_id": 2155}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 516, "type": "mouseover", "message_id": 2156}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 516, "type": "mouseover", "message_id": 2157}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 516, "type": "mousemove", "message_id": 2158}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 513, "type": "mousemove", "message_id": 2159}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 508, "type": "mousemove", "message_id": 2160}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 499, "type": "mousemove", "message_id": 2161}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 486, "type": "mouseover", "message_id": 2162}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 486, "type": "mouseover", "message_id": 2163}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 486, "type": "mousemove", "message_id": 2164}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 310, "x": 469, "type": "mouseover", "message_id": 2165}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 310, "x": 469, "type": "mouseover", "message_id": 2166}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 310, "x": 469, "type": "mousemove", "message_id": 2167}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 455, "type": "mouseover", "message_id": 2169}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 455, "type": "mouseover", "message_id": 2168}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 455, "type": "mousemove", "message_id": 2170}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 441, "type": "mouseover", "message_id": 2171}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 441, "type": "mouseover", "message_id": 2172}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 441, "type": "mousemove", "message_id": 2173}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 303, "x": 431, "type": "mouseover", "message_id": 2174}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 303, "x": 431, "type": "mouseover", "message_id": 2175}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 303, "x": 431, "type": "mousemove", "message_id": 2176}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 427, "type": "mousemove", "message_id": 2177}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 422, "type": "mousemove", "message_id": 2179}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 425, "type": "mousemove", "message_id": 2178}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 419, "type": "mousemove", "message_id": 2180}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 415, "type": "mousemove", "message_id": 2181}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 409, "type": "mousemove", "message_id": 2182}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 405, "type": "mousemove", "message_id": 2183}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 402, "type": "mousemove", "message_id": 2184}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 400, "type": "mousemove", "message_id": 2185}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 399, "type": "mouseover", "message_id": 2186}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 399, "type": "mouseover", "message_id": 2187}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 399, "type": "mousemove", "message_id": 2188}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 399, "type": "mousemove", "message_id": 2189}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 399, "type": "mousedown", "message_id": 2190}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 399, "type": "mouseup", "message_id": 2192}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2193, "altKey": false, "metaKey": false, "key": "l", "ctrlKey": false, "type": "keydown", "keyCode": 76}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 399, "type": "mousemove", "message_id": 2194}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 398, "type": "mousemove", "message_id": 2195}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 393, "type": "mouseover", "message_id": 2196}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 393, "type": "mouseover", "message_id": 2197}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 393, "type": "mousemove", "message_id": 2198}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 385, "type": "mousemove", "message_id": 2199}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 377, "type": "mousemove", "message_id": 2200}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 363, "type": "mousemove", "message_id": 2201}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 344, "type": "mouseover", "message_id": 2202}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 344, "type": "mouseover", "message_id": 2203}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 323, "type": "mousemove", "message_id": 2205}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 344, "type": "mousemove", "message_id": 2204}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 296, "type": "mousemove", "message_id": 2206}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 303, "x": 275, "type": "mouseover", "message_id": 2208}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 303, "x": 275, "type": "mouseover", "message_id": 2207}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 303, "x": 275, "type": "mousemove", "message_id": 2209}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 243, "type": "mousemove", "message_id": 2210}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 215, "type": "mouseover", "message_id": 2211}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 215, "type": "mouseover", "message_id": 2212}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 215, "type": "mousemove", "message_id": 2213}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 201, "type": "mouseover", "message_id": 2214}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 201, "type": "mouseover", "message_id": 2215}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 201, "type": "mousemove", "message_id": 2216}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 190, "type": "mousemove", "message_id": 2217}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 185, "type": "mousemove", "message_id": 2218}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 183, "type": "mousemove", "message_id": 2219}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 183, "type": "mouseover", "message_id": 2220}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 183, "type": "mouseover", "message_id": 2221}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 183, "type": "mousemove", "message_id": 2222}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 183, "type": "mousemove", "message_id": 2223}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 183, "type": "mousemove", "message_id": 2224}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 183, "type": "mousemove", "message_id": 2225}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 183, "type": "mousemove", "message_id": 2226}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 182, "type": "mousemove", "message_id": 2227}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 182, "type": "mousedown", "message_id": 2228}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 182, "type": "mousemove", "message_id": 2229}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 182, "type": "mousemove", "message_id": 2230}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 183, "type": "mousemove", "message_id": 2233}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 182, "type": "mouseup", "message_id": 2231}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 187, "type": "mouseover", "message_id": 2234}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 187, "type": "mouseover", "message_id": 2235}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 187, "type": "mousemove", "message_id": 2236}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 195, "type": "mousemove", "message_id": 2237}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 205, "type": "mousemove", "message_id": 2238}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 217, "type": "mousemove", "message_id": 2239}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 234, "type": "mouseover", "message_id": 2240}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 234, "type": "mousemove", "message_id": 2242}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 234, "type": "mouseover", "message_id": 2241}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 254, "type": "mouseover", "message_id": 2243}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 254, "type": "mouseover", "message_id": 2244}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 254, "type": "mousemove", "message_id": 2245}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 280, "type": "mousemove", "message_id": 2246}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 301, "type": "mouseover", "message_id": 2247}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 301, "type": "mouseover", "message_id": 2248}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 301, "type": "mousemove", "message_id": 2249}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 321, "type": "mousemove", "message_id": 2250}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 353, "type": "mousemove", "message_id": 2251}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 383, "type": "mousemove", "message_id": 2252}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 401, "type": "mousemove", "message_id": 2253}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 422, "type": "mousemove", "message_id": 2254}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 436, "type": "mouseover", "message_id": 2255}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 436, "type": "mouseover", "message_id": 2256}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 436, "type": "mousemove", "message_id": 2257}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 442, "type": "mousemove", "message_id": 2258}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 442, "type": "mouseover", "message_id": 2259}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 442, "type": "mouseover", "message_id": 2260}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 442, "type": "mousemove", "message_id": 2261}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 443, "type": "mousemove", "message_id": 2262}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 443, "type": "mousemove", "message_id": 2263}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 445, "type": "mouseover", "message_id": 2264}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 445, "type": "mouseover", "message_id": 2265}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 445, "type": "mousemove", "message_id": 2266}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 447, "type": "mousemove", "message_id": 2267}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 451, "type": "mousemove", "message_id": 2268}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 308, "x": 455, "type": "mousemove", "message_id": 2269}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 308, "x": 458, "type": "mousemove", "message_id": 2270}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 308, "x": 461, "type": "mousemove", "message_id": 2271}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 308, "x": 463, "type": "mousemove", "message_id": 2272}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 308, "x": 465, "type": "mousemove", "message_id": 2273}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 309, "x": 468, "type": "mousemove", "message_id": 2274}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 309, "x": 471, "type": "mousemove", "message_id": 2275}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 310, "x": 476, "type": "mousemove", "message_id": 2276}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 310, "x": 483, "type": "mousemove", "message_id": 2277}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 311, "x": 490, "type": "mousemove", "message_id": 2278}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 311, "x": 498, "type": "mousemove", "message_id": 2279}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 311, "x": 511, "type": "mousemove", "message_id": 2280}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 523, "type": "mousemove", "message_id": 2281}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 531, "type": "mousemove", "message_id": 2282}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 539, "type": "mousemove", "message_id": 2283}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 542, "type": "mousemove", "message_id": 2284}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 543, "type": "mouseover", "message_id": 2285}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 543, "type": "mouseover", "message_id": 2286}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 543, "type": "mousemove", "message_id": 2287}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 544, "type": "mousemove", "message_id": 2288}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 545, "type": "mousemove", "message_id": 2289}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 546, "type": "mousemove", "message_id": 2290}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 546, "type": "mousemove", "message_id": 2291}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 546, "type": "mousemove", "message_id": 2292}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 546, "type": "mousedown", "message_id": 2293}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 546, "type": "mousemove", "message_id": 2294}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 546, "type": "mousemove", "message_id": 2295}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 546, "type": "mouseup", "message_id": 2296}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 547, "type": "mousemove", "message_id": 2301}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 547, "type": "mousemove", "message_id": 2302}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 550, "type": "mouseover", "message_id": 2303}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 550, "type": "mouseover", "message_id": 2304}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 550, "type": "mousemove", "message_id": 2305}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 550, "type": "mouseover", "message_id": 2306}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 550, "type": "mouseover", "message_id": 2307}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 550, "type": "mousemove", "message_id": 2308}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 550, "type": "mousemove", "message_id": 2309}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 550, "type": "mousemove", "message_id": 2310}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 550, "type": "mousemove", "message_id": 2311}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 549, "type": "mousemove", "message_id": 2312}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 549, "type": "mousemove", "message_id": 2313}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 549, "type": "mousemove", "message_id": 2314}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 548, "type": "mousemove", "message_id": 2315}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 548, "type": "mousemove", "message_id": 2316}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 548, "type": "mousemove", "message_id": 2317}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 548, "type": "mousemove", "message_id": 2318}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 547, "type": "mousemove", "message_id": 2319}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 547, "type": "mousemove", "message_id": 2320}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 547, "type": "mousemove", "message_id": 2321}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 546, "type": "mousemove", "message_id": 2322}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 543, "type": "mouseover", "message_id": 2323}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 543, "type": "mouseover", "message_id": 2324}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 543, "type": "mousemove", "message_id": 2325}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 538, "type": "mousemove", "message_id": 2326}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 310, "x": 529, "type": "mouseover", "message_id": 2327}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 310, "x": 529, "type": "mouseover", "message_id": 2328}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 309, "x": 525, "type": "mouseover", "message_id": 2330}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 310, "x": 529, "type": "mousemove", "message_id": 2329}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 309, "x": 525, "type": "mouseover", "message_id": 2331}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 309, "x": 525, "type": "mousemove", "message_id": 2332}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 309, "x": 525, "type": "mouseover", "message_id": 2333}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 309, "x": 525, "type": "mouseover", "message_id": 2334}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 309, "x": 525, "type": "mousemove", "message_id": 2335}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 308, "x": 527, "type": "mouseover", "message_id": 2336}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 308, "x": 527, "type": "mouseover", "message_id": 2337}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 308, "x": 527, "type": "mousemove", "message_id": 2338}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 527, "type": "mouseover", "message_id": 2339}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 527, "type": "mouseover", "message_id": 2340}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 526, "type": "mousemove", "message_id": 2342}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 527, "type": "mousemove", "message_id": 2341}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 525, "type": "mousemove", "message_id": 2343}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 525, "type": "mousemove", "message_id": 2344}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 525, "type": "mousemove", "message_id": 2345}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 525, "type": "mousemove", "message_id": 2346}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 525, "type": "mousemove", "message_id": 2347}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 525, "type": "mousemove", "message_id": 2348}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 525, "type": "mousemove", "message_id": 2349}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 525, "type": "mousemove", "message_id": 2350}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 526, "type": "mousemove", "message_id": 2353}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 525, "type": "mousedown", "message_id": 2351}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 529, "type": "mouseover", "message_id": 2354}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 529, "type": "mousemove", "message_id": 2356}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 529, "type": "mouseover", "message_id": 2355}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 534, "type": "mouseover", "message_id": 2358}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 534, "type": "mouseover", "message_id": 2359}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 534, "type": "mousemove", "message_id": 2360}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 539, "type": "mouseover", "message_id": 2362}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 539, "type": "mouseover", "message_id": 2363}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 539, "type": "mousemove", "message_id": 2364}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 548, "type": "mouseover", "message_id": 2366}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 548, "type": "mouseover", "message_id": 2367}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 548, "type": "mousemove", "message_id": 2368}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 287, "x": 559, "type": "mousemove", "message_id": 2370}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 283, "x": 572, "type": "mouseover", "message_id": 2372}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 283, "x": 572, "type": "mouseover", "message_id": 2373}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 283, "x": 572, "type": "mousemove", "message_id": 2374}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 279, "x": 588, "type": "mousemove", "message_id": 2376}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 276, "x": 604, "type": "mousemove", "message_id": 2378}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 274, "x": 616, "type": "mousemove", "message_id": 2380}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 625, "type": "mouseover", "message_id": 2382}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 625, "type": "mouseover", "message_id": 2383}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 625, "type": "mousemove", "message_id": 2384}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 271, "x": 630, "type": "mouseover", "message_id": 2386}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 271, "x": 630, "type": "mouseover", "message_id": 2387}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 271, "x": 630, "type": "mousemove", "message_id": 2388}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 270, "x": 632, "type": "mousemove", "message_id": 2390}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 270, "x": 633, "type": "mouseover", "message_id": 2392}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 270, "x": 633, "type": "mouseover", "message_id": 2393}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 270, "x": 633, "type": "mousemove", "message_id": 2394}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 270, "x": 633, "type": "mousemove", "message_id": 2396}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 270, "x": 633, "type": "mousemove", "message_id": 2398}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 270, "x": 634, "type": "mousemove", "message_id": 2400}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 270, "x": 633, "type": "mousemove", "message_id": 2402}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 271, "x": 632, "type": "mousemove", "message_id": 2404}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 271, "x": 631, "type": "mousemove", "message_id": 2406}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 271, "x": 630, "type": "mousemove", "message_id": 2408}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 629, "type": "mousemove", "message_id": 2410}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 628, "type": "mousemove", "message_id": 2412}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 627, "type": "mousemove", "message_id": 2414}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 625, "type": "mouseover", "message_id": 2416}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 625, "type": "mouseover", "message_id": 2417}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 625, "type": "mousemove", "message_id": 2418}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 624, "type": "mouseover", "message_id": 2420}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 624, "type": "mouseover", "message_id": 2421}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 624, "type": "mousemove", "message_id": 2422}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 624, "type": "mousemove", "message_id": 2424}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 624, "type": "mousemove", "message_id": 2426}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 625, "type": "mousemove", "message_id": 2428}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 625, "type": "mouseup", "message_id": 2430}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 627, "type": "mouseover", "message_id": 2431}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 627, "type": "mouseover", "message_id": 2432}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 627, "type": "mousemove", "message_id": 2433}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 627, "type": "mouseover", "message_id": 2435}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 627, "type": "mouseover", "message_id": 2434}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 627, "type": "mousemove", "message_id": 2436}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 627, "type": "mousemove", "message_id": 2438}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 628, "type": "mousemove", "message_id": 2437}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 626, "type": "mousemove", "message_id": 2439}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 274, "x": 625, "type": "mousemove", "message_id": 2440}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 275, "x": 622, "type": "mouseover", "message_id": 2441}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 275, "x": 622, "type": "mouseover", "message_id": 2442}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 275, "x": 622, "type": "mousemove", "message_id": 2443}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 276, "x": 617, "type": "mousemove", "message_id": 2444}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 278, "x": 607, "type": "mouseover", "message_id": 2445}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 278, "x": 607, "type": "mouseover", "message_id": 2446}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 278, "x": 607, "type": "mousemove", "message_id": 2447}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 281, "x": 591, "type": "mousemove", "message_id": 2448}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 285, "x": 567, "type": "mouseover", "message_id": 2449}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 285, "x": 567, "type": "mouseover", "message_id": 2450}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 285, "x": 567, "type": "mousemove", "message_id": 2451}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 540, "type": "mouseover", "message_id": 2453}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 540, "type": "mouseover", "message_id": 2452}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 540, "type": "mousemove", "message_id": 2454}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 518, "type": "mouseover", "message_id": 2455}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 518, "type": "mouseover", "message_id": 2456}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 518, "type": "mousemove", "message_id": 2457}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 475, "type": "mousemove", "message_id": 2459}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 500, "type": "mousemove", "message_id": 2458}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 453, "type": "mousemove", "message_id": 2460}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 436, "type": "mousemove", "message_id": 2461}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 428, "type": "mouseover", "message_id": 2462}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 428, "type": "mouseover", "message_id": 2463}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 428, "type": "mousemove", "message_id": 2464}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 421, "type": "mousemove", "message_id": 2465}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 417, "type": "mousemove", "message_id": 2466}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 416, "type": "mouseover", "message_id": 2467}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 416, "type": "mouseover", "message_id": 2468}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 416, "type": "mousemove", "message_id": 2469}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 416, "type": "mousemove", "message_id": 2470}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 416, "type": "mousemove", "message_id": 2471}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 416, "type": "mousemove", "message_id": 2472}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 415, "type": "mousemove", "message_id": 2473}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 414, "type": "mousemove", "message_id": 2474}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 413, "type": "mousemove", "message_id": 2475}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 411, "type": "mouseover", "message_id": 2476}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 411, "type": "mouseover", "message_id": 2477}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 411, "type": "mousemove", "message_id": 2478}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 409, "type": "mousemove", "message_id": 2479}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 408, "type": "mouseover", "message_id": 2480}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 408, "type": "mouseover", "message_id": 2481}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 408, "type": "mousemove", "message_id": 2482}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 407, "type": "mousemove", "message_id": 2484}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 408, "type": "mousemove", "message_id": 2483}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 406, "type": "mousemove", "message_id": 2485}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 404, "type": "mousemove", "message_id": 2488}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 404, "type": "mouseover", "message_id": 2486}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 404, "type": "mouseover", "message_id": 2487}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 303, "x": 401, "type": "mouseover", "message_id": 2489}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 303, "x": 401, "type": "mouseover", "message_id": 2490}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 396, "type": "mouseover", "message_id": 2492}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 303, "x": 401, "type": "mousemove", "message_id": 2491}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 396, "type": "mouseover", "message_id": 2493}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 304, "x": 396, "type": "mousemove", "message_id": 2494}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 389, "type": "mousemove", "message_id": 2495}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 382, "type": "mousemove", "message_id": 2496}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 375, "type": "mousemove", "message_id": 2497}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 367, "type": "mousemove", "message_id": 2498}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 359, "type": "mousemove", "message_id": 2499}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 351, "type": "mousemove", "message_id": 2500}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 344, "type": "mousemove", "message_id": 2501}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 336, "type": "mousemove", "message_id": 2502}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 332, "type": "mousemove", "message_id": 2503}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 328, "type": "mouseover", "message_id": 2507}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 330, "type": "mousemove", "message_id": 2504}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 328, "type": "mousemove", "message_id": 2505}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 328, "type": "mousemove", "message_id": 2508}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 328, "type": "mouseover", "message_id": 2506}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 328, "type": "mousemove", "message_id": 2509}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 328, "type": "mousemove", "message_id": 2510}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 327, "type": "mousemove", "message_id": 2511}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 326, "type": "mousemove", "message_id": 2512}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 326, "type": "mousemove", "message_id": 2513}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 326, "type": "mousemove", "message_id": 2514}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 325, "type": "mousemove", "message_id": 2515}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 323, "type": "mouseover", "message_id": 2516}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 323, "type": "mouseover", "message_id": 2517}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 323, "type": "mousemove", "message_id": 2518}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 321, "type": "mousemove", "message_id": 2519}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 319, "type": "mousemove", "message_id": 2520}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 317, "type": "mousemove", "message_id": 2521}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 316, "type": "mouseover", "message_id": 2522}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 316, "type": "mouseover", "message_id": 2523}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 305, "x": 316, "type": "mousemove", "message_id": 2524}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 315, "type": "mousemove", "message_id": 2525}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 315, "type": "mousemove", "message_id": 2526}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 314, "type": "mousemove", "message_id": 2527}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 314, "type": "mousemove", "message_id": 2528}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 314, "type": "mousemove", "message_id": 2529}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 313, "type": "mousemove", "message_id": 2530}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 312, "type": "mousemove", "message_id": 2531}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 312, "type": "mousemove", "message_id": 2532}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 312, "type": "mousemove", "message_id": 2533}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 312, "type": "mousemove", "message_id": 2534}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 313, "type": "mousemove", "message_id": 2535}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 313, "type": "mousemove", "message_id": 2536}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 313, "type": "mousemove", "message_id": 2537}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 313, "type": "mousemove", "message_id": 2538}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 313, "type": "mousemove", "message_id": 2539}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 314, "type": "mousemove", "message_id": 2540}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 314, "type": "mousemove", "message_id": 2541}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 313, "type": "mousemove", "message_id": 2542}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 313, "type": "mousemove", "message_id": 2543}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 312, "type": "mousemove", "message_id": 2544}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 311, "type": "mousemove", "message_id": 2545}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 309, "type": "mouseover", "message_id": 2546}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 309, "type": "mouseover", "message_id": 2547}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 307, "x": 309, "type": "mousemove", "message_id": 2548}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 308, "x": 308, "type": "mouseover", "message_id": 2549}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 308, "x": 308, "type": "mouseover", "message_id": 2550}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 308, "x": 308, "type": "mousemove", "message_id": 2551}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 310, "x": 305, "type": "mouseover", "message_id": 2553}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 310, "x": 305, "type": "mouseover", "message_id": 2552}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 310, "x": 305, "type": "mousemove", "message_id": 2554}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 302, "type": "mousemove", "message_id": 2555}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 301, "type": "mouseover", "message_id": 2556}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 301, "type": "mouseover", "message_id": 2557}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 301, "type": "mousemove", "message_id": 2558}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 299, "type": "mouseover", "message_id": 2559}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 299, "type": "mouseover", "message_id": 2560}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 299, "type": "mousemove", "message_id": 2561}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 298, "type": "mouseover", "message_id": 2563}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 298, "type": "mouseover", "message_id": 2562}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 298, "type": "mousemove", "message_id": 2564}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 297, "type": "mousemove", "message_id": 2565}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 295, "type": "mousemove", "message_id": 2567}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 296, "type": "mousemove", "message_id": 2566}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 294, "type": "mousemove", "message_id": 2568}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 293, "type": "mousemove", "message_id": 2569}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 293, "type": "mousemove", "message_id": 2571}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 293, "type": "mousemove", "message_id": 2570}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 292, "type": "mousemove", "message_id": 2572}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 292, "type": "mousemove", "message_id": 2573}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 2574}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 7, "delta": 7, "type": "wheel", "message_id": 2575}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 292, "type": "mousemove", "message_id": 2576}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 10, "delta": 10, "type": "wheel", "message_id": 2577}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 8, "delta": 8, "type": "wheel", "message_id": 2578}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 9, "delta": 9, "type": "wheel", "message_id": 2579}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 7, "delta": 7, "type": "wheel", "message_id": 2580}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 292, "type": "mousemove", "message_id": 2581}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 6, "delta": 6, "type": "wheel", "message_id": 2582}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 292, "type": "mousemove", "message_id": 2583}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 10, "delta": 10, "type": "wheel", "message_id": 2584}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 8, "delta": 8, "type": "wheel", "message_id": 2586}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 293, "type": "mousemove", "message_id": 2585}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 317, "x": 293, "type": "mousemove", "message_id": 2587}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 6, "delta": 6, "type": "wheel", "message_id": 2588}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 5, "delta": 5, "type": "wheel", "message_id": 2589}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 2590}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 2591}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 2592}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 2593}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 2594}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 2595}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 293, "type": "mousemove", "message_id": 2596}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 293, "type": "mousemove", "message_id": 2597}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 316, "x": 293, "type": "mousemove", "message_id": 2598}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 293, "type": "mousemove", "message_id": 2599}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 2600}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 2602}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 293, "type": "mousemove", "message_id": 2601}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 294, "type": "mousemove", "message_id": 2603}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 2604}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 294, "type": "mousemove", "message_id": 2605}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 294, "type": "mousemove", "message_id": 2606}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 2607}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 2609}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 294, "type": "mousemove", "message_id": 2608}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 294, "type": "mousemove", "message_id": 2610}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 2611}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 294, "type": "mousemove", "message_id": 2612}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 294, "type": "mousemove", "message_id": 2613}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 315, "x": 295, "type": "mousemove", "message_id": 2614}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 296, "type": "mousemove", "message_id": 2615}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 297, "type": "mousemove", "message_id": 2616}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 313, "x": 298, "type": "mousemove", "message_id": 2617}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 312, "x": 299, "type": "mousemove", "message_id": 2618}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 309, "x": 300, "type": "mousemove", "message_id": 2619}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 302, "type": "mouseover", "message_id": 2620}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 302, "type": "mouseover", "message_id": 2621}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 302, "type": "mousemove", "message_id": 2622}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 303, "type": "mouseover", "message_id": 2623}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 303, "type": "mouseover", "message_id": 2624}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 303, "type": "mousemove", "message_id": 2625}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 303, "type": "mousemove", "message_id": 2626}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 302, "type": "mousemove", "message_id": 2627}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 302, "type": "mousemove", "message_id": 2628}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 302, "type": "mousemove", "message_id": 2629}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 302, "type": "mousemove", "message_id": 2630}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 302, "type": "mousemove", "message_id": 2631}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 302, "type": "mousemove", "message_id": 2632}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 302, "type": "mousemove", "message_id": 2633}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 301, "type": "mousemove", "message_id": 2634}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 301, "type": "mousemove", "message_id": 2635}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 301, "type": "mousemove", "message_id": 2636}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 300, "type": "mousemove", "message_id": 2637}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 300, "type": "mousemove", "message_id": 2638}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 299, "type": "mousemove", "message_id": 2639}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 297, "type": "mouseover", "message_id": 2640}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 297, "type": "mouseover", "message_id": 2641}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 297, "type": "mousemove", "message_id": 2642}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 295, "type": "mousemove", "message_id": 2643}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 295, "type": "mouseover", "message_id": 2644}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 295, "type": "mouseover", "message_id": 2645}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 295, "type": "mousemove", "message_id": 2647}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 295, "type": "mousemove", "message_id": 2646}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 295, "type": "mousemove", "message_id": 2648}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 295, "type": "mousedown", "message_id": 2649}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 295, "type": "mousemove", "message_id": 2651}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 296, "type": "mousemove", "message_id": 2652}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 297, "type": "mousemove", "message_id": 2653}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 298, "type": "mousemove", "message_id": 2654}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 298, "type": "mouseup", "message_id": 2655}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 299, "type": "mousemove", "message_id": 2656}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 299, "type": "mousemove", "message_id": 2657}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 299, "type": "mousemove", "message_id": 2658}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 298, "type": "mousemove", "message_id": 2659}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 296, "type": "mouseover", "message_id": 2661}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 296, "type": "mouseover", "message_id": 2660}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 296, "type": "mousemove", "message_id": 2662}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 293, "type": "mousemove", "message_id": 2663}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 292, "type": "mouseover", "message_id": 2664}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 292, "type": "mouseover", "message_id": 2665}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 292, "type": "mousemove", "message_id": 2666}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 291, "type": "mousemove", "message_id": 2667}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 290, "type": "mousemove", "message_id": 2668}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 289, "type": "mousemove", "message_id": 2669}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 288, "type": "mousemove", "message_id": 2670}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 287, "type": "mousemove", "message_id": 2671}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 287, "type": "mousemove", "message_id": 2672}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 287, "type": "mousemove", "message_id": 2673}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 287, "type": "mousemove", "message_id": 2674}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 287, "type": "mousemove", "message_id": 2675}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 288, "type": "mousemove", "message_id": 2676}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 288, "type": "mousemove", "message_id": 2677}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 288, "type": "mousedown", "message_id": 2678}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 288, "type": "mouseup", "message_id": 2679}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 288, "type": "mousemove", "message_id": 2680}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 289, "type": "mousemove", "message_id": 2681}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 290, "type": "mousemove", "message_id": 2682}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 291, "type": "mousemove", "message_id": 2683}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2684, "altKey": false, "metaKey": false, "key": "a", "ctrlKey": false, "type": "keydown", "keyCode": 65}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 291, "type": "mousemove", "message_id": 2686}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 292, "type": "mousemove", "message_id": 2687}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 292, "type": "mousemove", "message_id": 2688}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 293, "type": "mousemove", "message_id": 2689}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 294, "type": "mousemove", "message_id": 2690}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 295, "type": "mousemove", "message_id": 2691}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 297, "type": "mouseover", "message_id": 2693}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 297, "type": "mouseover", "message_id": 2692}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 297, "type": "mousemove", "message_id": 2694}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 300, "type": "mousemove", "message_id": 2695}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 303, "type": "mousemove", "message_id": 2696}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 308, "type": "mouseover", "message_id": 2697}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 308, "type": "mouseover", "message_id": 2698}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 308, "type": "mousemove", "message_id": 2699}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 314, "type": "mouseover", "message_id": 2700}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 314, "type": "mouseover", "message_id": 2701}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 314, "type": "mousemove", "message_id": 2702}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 322, "type": "mouseover", "message_id": 2703}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 322, "type": "mouseover", "message_id": 2704}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 322, "type": "mousemove", "message_id": 2705}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 330, "type": "mousemove", "message_id": 2706}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 286, "x": 342, "type": "mouseover", "message_id": 2708}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 286, "x": 342, "type": "mouseover", "message_id": 2707}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 286, "x": 342, "type": "mousemove", "message_id": 2709}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 284, "x": 355, "type": "mousemove", "message_id": 2710}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 281, "x": 366, "type": "mousemove", "message_id": 2711}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 278, "x": 376, "type": "mousemove", "message_id": 2712}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 276, "x": 384, "type": "mousemove", "message_id": 2713}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 274, "x": 391, "type": "mousemove", "message_id": 2714}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 397, "type": "mousemove", "message_id": 2715}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 271, "x": 402, "type": "mouseover", "message_id": 2716}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 271, "x": 402, "type": "mouseover", "message_id": 2717}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 270, "x": 405, "type": "mousemove", "message_id": 2719}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 271, "x": 402, "type": "mousemove", "message_id": 2718}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 269, "x": 407, "type": "mousemove", "message_id": 2720}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 269, "x": 408, "type": "mouseover", "message_id": 2721}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 269, "x": 408, "type": "mouseover", "message_id": 2722}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 269, "x": 408, "type": "mousemove", "message_id": 2723}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 269, "x": 408, "type": "mousemove", "message_id": 2724}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 269, "x": 408, "type": "mousedown", "message_id": 2725}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 268, "x": 408, "type": "mousemove", "message_id": 2726}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 268, "x": 410, "type": "mouseover", "message_id": 2727}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 268, "x": 410, "type": "mouseover", "message_id": 2728}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 268, "x": 410, "type": "mouseover", "message_id": 2730}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 268, "x": 410, "type": "mousemove", "message_id": 2729}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 268, "x": 410, "type": "mouseover", "message_id": 2731}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 268, "x": 410, "type": "mouseup", "message_id": 2732}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 268, "x": 415, "type": "mouseover", "message_id": 2733}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 268, "x": 415, "type": "mouseover", "message_id": 2734}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 268, "x": 415, "type": "mousemove", "message_id": 2735}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 269, "x": 420, "type": "mousemove", "message_id": 2736}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 270, "x": 430, "type": "mousemove", "message_id": 2737}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 271, "x": 442, "type": "mousemove", "message_id": 2738}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 272, "x": 451, "type": "mousemove", "message_id": 2739}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 459, "type": "mousemove", "message_id": 2740}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 274, "x": 466, "type": "mousemove", "message_id": 2741}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 275, "x": 474, "type": "mousemove", "message_id": 2742}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 275, "x": 484, "type": "mousemove", "message_id": 2743}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 277, "x": 495, "type": "mouseover", "message_id": 2745}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 277, "x": 495, "type": "mouseover", "message_id": 2744}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 277, "x": 495, "type": "mousemove", "message_id": 2746}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 278, "x": 508, "type": "mouseover", "message_id": 2747}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 278, "x": 508, "type": "mouseover", "message_id": 2748}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 278, "x": 508, "type": "mousemove", "message_id": 2749}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 279, "x": 522, "type": "mousemove", "message_id": 2750}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 280, "x": 533, "type": "mousemove", "message_id": 2751}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 282, "x": 548, "type": "mouseover", "message_id": 2752}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 282, "x": 548, "type": "mouseover", "message_id": 2753}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 282, "x": 548, "type": "mousemove", "message_id": 2754}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 284, "x": 563, "type": "mousemove", "message_id": 2755}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 286, "x": 582, "type": "mousemove", "message_id": 2756}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 600, "type": "mousemove", "message_id": 2757}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 613, "type": "mousemove", "message_id": 2758}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 621, "type": "mouseover", "message_id": 2759}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 621, "type": "mouseover", "message_id": 2760}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 621, "type": "mousemove", "message_id": 2761}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 626, "type": "mousemove", "message_id": 2762}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 628, "type": "mousemove", "message_id": 2763}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 629, "type": "mouseover", "message_id": 2764}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 629, "type": "mouseover", "message_id": 2765}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 629, "type": "mousemove", "message_id": 2766}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 629, "type": "mousemove", "message_id": 2767}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 630, "type": "mousemove", "message_id": 2768}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 632, "type": "mouseover", "message_id": 2769}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 632, "type": "mousemove", "message_id": 2771}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 636, "type": "mousemove", "message_id": 2772}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 632, "type": "mouseover", "message_id": 2770}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 644, "type": "mouseover", "message_id": 2773}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 644, "type": "mouseover", "message_id": 2774}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 644, "type": "mousemove", "message_id": 2775}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 652, "type": "mousemove", "message_id": 2776}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 659, "type": "mousemove", "message_id": 2777}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 663, "type": "mouseover", "message_id": 2778}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 663, "type": "mouseover", "message_id": 2779}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 663, "type": "mousemove", "message_id": 2780}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 665, "type": "mousemove", "message_id": 2781}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 666, "type": "mouseover", "message_id": 2782}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 666, "type": "mouseover", "message_id": 2783}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 666, "type": "mousemove", "message_id": 2784}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 666, "type": "mousemove", "message_id": 2785}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 666, "type": "mousemove", "message_id": 2786}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 663, "type": "mouseover", "message_id": 2787}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 663, "type": "mouseover", "message_id": 2788}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 663, "type": "mousemove", "message_id": 2789}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 301, "x": 660, "type": "mousemove", "message_id": 2790}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 657, "type": "mousemove", "message_id": 2791}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 654, "type": "mousemove", "message_id": 2792}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 652, "type": "mousemove", "message_id": 2793}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 651, "type": "mouseover", "message_id": 2794}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 651, "type": "mouseover", "message_id": 2795}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 300, "x": 651, "type": "mousemove", "message_id": 2796}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 650, "type": "mousemove", "message_id": 2797}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 647, "type": "mouseover", "message_id": 2798}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 647, "type": "mouseover", "message_id": 2799}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 647, "type": "mousemove", "message_id": 2800}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 645, "type": "mousemove", "message_id": 2801}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 644, "type": "mouseover", "message_id": 2802}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 644, "type": "mouseover", "message_id": 2803}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 644, "type": "mousemove", "message_id": 2804}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 643, "type": "mousemove", "message_id": 2805}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 643, "type": "mousemove", "message_id": 2806}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 642, "type": "mousemove", "message_id": 2807}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 642, "type": "mousemove", "message_id": 2808}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 641, "type": "mousemove", "message_id": 2809}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 641, "type": "mousemove", "message_id": 2810}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 641, "type": "mousedown", "message_id": 2811}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 641, "type": "mousemove", "message_id": 2812}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 641, "type": "mouseup", "message_id": 2813}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 641, "type": "mousedown", "message_id": 2814}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 641, "type": "mousemove", "message_id": 2815}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 641, "type": "mouseup", "message_id": 2816}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 640, "type": "mousemove", "message_id": 2817}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 640, "type": "mousemove", "message_id": 2818}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 639, "type": "mousemove", "message_id": 2819}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 639, "type": "mousemove", "message_id": 2820}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 638, "type": "mousemove", "message_id": 2821}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 638, "type": "mousemove", "message_id": 2822}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 638, "type": "mousemove", "message_id": 2823}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 638, "type": "mousemove", "message_id": 2824}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 638, "type": "mousemove", "message_id": 2825}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 637, "type": "mousemove", "message_id": 2826}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 637, "type": "mousemove", "message_id": 2827}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 637, "type": "mousemove", "message_id": 2828}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 637, "type": "mousemove", "message_id": 2829}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 637, "type": "mousemove", "message_id": 2830}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 636, "type": "mousemove", "message_id": 2831}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 636, "type": "mousemove", "message_id": 2832}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 636, "type": "mousemove", "message_id": 2833}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 636, "type": "mousemove", "message_id": 2834}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 635, "type": "mousemove", "message_id": 2836}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 636, "type": "mousedown", "message_id": 2835}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 635, "type": "mousemove", "message_id": 2837}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 634, "type": "mousemove", "message_id": 2838}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 634, "type": "mouseup", "message_id": 2839}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 635, "type": "mousemove", "message_id": 2840}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 636, "type": "mousemove", "message_id": 2841}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 637, "type": "mousemove", "message_id": 2842}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 637, "type": "mousemove", "message_id": 2843}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 639, "type": "mouseover", "message_id": 2844}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 639, "type": "mouseover", "message_id": 2845}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 639, "type": "mousemove", "message_id": 2846}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 641, "type": "mousemove", "message_id": 2847}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 644, "type": "mousemove", "message_id": 2848}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 649, "type": "mousemove", "message_id": 2849}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 656, "type": "mousemove", "message_id": 2850}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 662, "type": "mousemove", "message_id": 2851}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 666, "type": "mousemove", "message_id": 2852}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 669, "type": "mousemove", "message_id": 2853}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 672, "type": "mousemove", "message_id": 2854}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 675, "type": "mousemove", "message_id": 2855}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 678, "type": "mousemove", "message_id": 2856}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 681, "type": "mousemove", "message_id": 2857}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 682, "type": "mouseover", "message_id": 2858}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 683, "type": "mousemove", "message_id": 2861}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 682, "type": "mouseover", "message_id": 2859}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 682, "type": "mousemove", "message_id": 2860}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 684, "type": "mousemove", "message_id": 2862}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 685, "type": "mousemove", "message_id": 2863}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 685, "type": "mousemove", "message_id": 2864}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 686, "type": "mousemove", "message_id": 2865}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 686, "type": "mousedown", "message_id": 2866}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 686, "type": "mouseup", "message_id": 2867}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 686, "type": "mousemove", "message_id": 2868}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 686, "type": "mousemove", "message_id": 2869}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 686, "type": "mousemove", "message_id": 2870}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 686, "type": "mousemove", "message_id": 2871}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 687, "type": "mousemove", "message_id": 2872}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2873, "altKey": false, "metaKey": false, "key": "a", "ctrlKey": false, "type": "keydown", "keyCode": 65}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 287, "x": 686, "type": "mousemove", "message_id": 2875}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 286, "x": 683, "type": "mouseover", "message_id": 2877}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 286, "x": 683, "type": "mouseover", "message_id": 2876}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 286, "x": 683, "type": "mousemove", "message_id": 2878}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 283, "x": 678, "type": "mouseover", "message_id": 2879}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 283, "x": 678, "type": "mouseover", "message_id": 2880}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 283, "x": 678, "type": "mousemove", "message_id": 2881}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 278, "x": 671, "type": "mouseover", "message_id": 2882}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 278, "x": 671, "type": "mousemove", "message_id": 2884}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 278, "x": 671, "type": "mouseover", "message_id": 2883}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 663, "type": "mouseover", "message_id": 2885}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 663, "type": "mouseover", "message_id": 2886}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 273, "x": 663, "type": "mousemove", "message_id": 2887}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 267, "x": 651, "type": "mousemove", "message_id": 2888}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 255, "x": 625, "type": "mousemove", "message_id": 2890}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 252, "x": 616, "type": "mousemove", "message_id": 2891}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 261, "x": 638, "type": "mousemove", "message_id": 2889}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 247, "x": 605, "type": "mousemove", "message_id": 2892}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 244, "x": 596, "type": "mousemove", "message_id": 2893}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 242, "x": 591, "type": "mousemove", "message_id": 2894}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 588, "type": "mouseover", "message_id": 2895}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 588, "type": "mouseover", "message_id": 2896}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 588, "type": "mousemove", "message_id": 2897}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 588, "type": "mouseover", "message_id": 2898}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 588, "type": "mouseover", "message_id": 2899}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 588, "type": "mousemove", "message_id": 2900}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 588, "type": "mousedown", "message_id": 2901}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 588, "type": "mouseup", "message_id": 2902}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 587, "type": "mousemove", "message_id": 2903}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 242, "x": 584, "type": "mouseover", "message_id": 2904}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 242, "x": 584, "type": "mouseover", "message_id": 2905}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 242, "x": 584, "type": "mousemove", "message_id": 2906}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 243, "x": 579, "type": "mousemove", "message_id": 2907}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 247, "x": 571, "type": "mouseover", "message_id": 2908}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 247, "x": 571, "type": "mouseover", "message_id": 2909}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 251, "x": 561, "type": "mousemove", "message_id": 2911}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 247, "x": 571, "type": "mousemove", "message_id": 2910}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 260, "x": 547, "type": "mousemove", "message_id": 2912}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 268, "x": 534, "type": "mousemove", "message_id": 2913}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 276, "x": 522, "type": "mousemove", "message_id": 2914}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 282, "x": 515, "type": "mousemove", "message_id": 2915}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 286, "x": 510, "type": "mousemove", "message_id": 2916}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 288, "x": 507, "type": "mousemove", "message_id": 2917}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 506, "type": "mouseover", "message_id": 2918}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 506, "type": "mousemove", "message_id": 2920}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 506, "type": "mouseover", "message_id": 2919}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 504, "type": "mouseover", "message_id": 2921}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 504, "type": "mouseover", "message_id": 2922}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 290, "x": 504, "type": "mousemove", "message_id": 2923}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 503, "type": "mouseover", "message_id": 2924}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 503, "type": "mouseover", "message_id": 2925}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 291, "x": 503, "type": "mousemove", "message_id": 2926}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 502, "type": "mousemove", "message_id": 2927}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 500, "type": "mouseover", "message_id": 2928}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 500, "type": "mousemove", "message_id": 2930}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 500, "type": "mouseover", "message_id": 2929}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 499, "type": "mouseover", "message_id": 2931}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 499, "type": "mouseover", "message_id": 2932}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 293, "x": 499, "type": "mousemove", "message_id": 2933}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 497, "type": "mouseover", "message_id": 2934}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 497, "type": "mouseover", "message_id": 2935}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 497, "type": "mousemove", "message_id": 2936}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 496, "type": "mouseover", "message_id": 2937}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 496, "type": "mouseover", "message_id": 2938}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 295, "x": 496, "type": "mousemove", "message_id": 2939}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 494, "type": "mouseover", "message_id": 2940}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 494, "type": "mouseover", "message_id": 2941}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 494, "type": "mousemove", "message_id": 2942}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 493, "type": "mouseover", "message_id": 2944}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 493, "type": "mouseover", "message_id": 2943}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 493, "type": "mousemove", "message_id": 2945}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 491, "type": "mousemove", "message_id": 2947}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 296, "x": 492, "type": "mousemove", "message_id": 2946}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 490, "type": "mousemove", "message_id": 2948}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 297, "x": 489, "type": "mousemove", "message_id": 2949}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 488, "type": "mousemove", "message_id": 2950}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 487, "type": "mousemove", "message_id": 2951}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 486, "type": "mousemove", "message_id": 2952}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 486, "type": "mousemove", "message_id": 2953}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 486, "type": "mousemove", "message_id": 2954}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 486, "type": "mousedown", "message_id": 2955}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 486, "type": "mouseup", "message_id": 2957}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 486, "type": "mousedown", "message_id": 2958}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 299, "x": 486, "type": "mouseup", "message_id": 2961}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2962, "altKey": false, "metaKey": false, "key": "1", "ctrlKey": false, "type": "keydown", "keyCode": 49}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2964, "altKey": false, "metaKey": false, "key": " ", "ctrlKey": false, "type": "keydown", "keyCode": 32}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2966, "altKey": false, "metaKey": false, "key": "Backspace", "ctrlKey": false, "type": "keydown", "keyCode": 8}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2968, "altKey": false, "metaKey": false, "key": "1", "ctrlKey": false, "type": "keydown", "keyCode": 49}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2970, "altKey": false, "metaKey": false, "key": "-", "ctrlKey": false, "type": "keydown", "keyCode": 189}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2972, "altKey": false, "metaKey": false, "key": "t", "ctrlKey": false, "type": "keydown", "keyCode": 84}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2974, "altKey": false, "metaKey": false, "key": "o", "ctrlKey": false, "type": "keydown", "keyCode": 79}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2976, "altKey": false, "metaKey": false, "key": "-", "ctrlKey": false, "type": "keydown", "keyCode": 189}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2978, "altKey": false, "metaKey": false, "key": "2", "ctrlKey": false, "type": "keydown", "keyCode": 50}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 424, "type": "mouseover", "message_id": 2980}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 424, "type": "mousemove", "message_id": 2982}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 424, "type": "mouseover", "message_id": 2981}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 294, "x": 408, "type": "mousemove", "message_id": 2983}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 292, "x": 400, "type": "mousemove", "message_id": 2984}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 399, "type": "mouseover", "message_id": 2985}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 399, "type": "mouseover", "message_id": 2986}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 399, "type": "mousemove", "message_id": 2987}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 285, "x": 401, "type": "mouseover", "message_id": 2989}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 285, "x": 401, "type": "mouseover", "message_id": 2988}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 285, "x": 401, "type": "mousemove", "message_id": 2990}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 277, "x": 405, "type": "mousemove", "message_id": 2991}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 270, "x": 409, "type": "mousemove", "message_id": 2992}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 265, "x": 411, "type": "mousemove", "message_id": 2993}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 258, "x": 415, "type": "mousemove", "message_id": 2994}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 244, "x": 422, "type": "mousemove", "message_id": 2996}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 251, "x": 419, "type": "mousemove", "message_id": 2995}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 423, "type": "mouseover", "message_id": 2998}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 423, "type": "mouseover", "message_id": 2997}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 423, "type": "mousemove", "message_id": 2999}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 236, "x": 425, "type": "mouseover", "message_id": 3000}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 236, "x": 425, "type": "mouseover", "message_id": 3001}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 236, "x": 425, "type": "mousemove", "message_id": 3002}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 231, "x": 427, "type": "mousemove", "message_id": 3003}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 228, "x": 428, "type": "mouseover", "message_id": 3004}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 228, "x": 428, "type": "mouseover", "message_id": 3005}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 228, "x": 428, "type": "mousemove", "message_id": 3006}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 224, "x": 430, "type": "mouseover", "message_id": 3007}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 224, "x": 430, "type": "mouseover", "message_id": 3008}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 224, "x": 430, "type": "mousemove", "message_id": 3009}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 220, "x": 432, "type": "mousemove", "message_id": 3010}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 216, "x": 433, "type": "mouseover", "message_id": 3011}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 216, "x": 433, "type": "mouseover", "message_id": 3012}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 216, "x": 433, "type": "mousemove", "message_id": 3013}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 214, "x": 434, "type": "mousemove", "message_id": 3014}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 211, "x": 434, "type": "mousemove", "message_id": 3015}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 209, "x": 434, "type": "mousemove", "message_id": 3016}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 208, "x": 434, "type": "mousemove", "message_id": 3017}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 208, "x": 434, "type": "mousedown", "message_id": 3018}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 208, "x": 434, "type": "mousemove", "message_id": 3020}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 208, "x": 434, "type": "mousemove", "message_id": 3021}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 208, "x": 434, "type": "mouseup", "message_id": 3022}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 208, "x": 434, "type": "mousemove", "message_id": 3023}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 208, "x": 434, "type": "mousemove", "message_id": 3024}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 208, "x": 434, "type": "mousemove", "message_id": 3025}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 209, "x": 434, "type": "mousemove", "message_id": 3026}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 209, "x": 434, "type": "mousemove", "message_id": 3027}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 210, "x": 435, "type": "mousemove", "message_id": 3028}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 210, "x": 436, "type": "mousemove", "message_id": 3029}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 211, "x": 437, "type": "mousemove", "message_id": 3030}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 211, "x": 439, "type": "mouseover", "message_id": 3032}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 211, "x": 439, "type": "mouseover", "message_id": 3031}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 211, "x": 439, "type": "mousemove", "message_id": 3033}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 211, "x": 440, "type": "mouseover", "message_id": 3034}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 211, "x": 440, "type": "mouseover", "message_id": 3035}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 211, "x": 440, "type": "mousemove", "message_id": 3036}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 441, "type": "mousemove", "message_id": 3037}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 441, "type": "mousemove", "message_id": 3038}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 441, "type": "mousemove", "message_id": 3039}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 442, "type": "mousemove", "message_id": 3040}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 442, "type": "mousemove", "message_id": 3041}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 442, "type": "mousemove", "message_id": 3042}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 443, "type": "mousemove", "message_id": 3043}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 443, "type": "mousemove", "message_id": 3044}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3045}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3046}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3047}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3048}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3049}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3050}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3051}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3052}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3053}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3054}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3055}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3056}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3057}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 443, "type": "mousemove", "message_id": 3058}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3059}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3060}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3061}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3062}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3063}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3064}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3065}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3066}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3067}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3068}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 3069}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3070}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3071}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3072}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3073}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3074}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3075}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3076}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3077}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3078}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3079}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3080}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3081}
+{"originalEvent": {"metaKey": false}, "sender": 3697, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3082}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 443, "type": "mousemove", "message_id": 3083}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 443, "type": "mousemove", "message_id": 3084}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 444, "type": "mousemove", "message_id": 3085}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 444, "type": "mousemove", "message_id": 3086}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 213, "x": 446, "type": "mouseover", "message_id": 3087}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 213, "x": 446, "type": "mouseover", "message_id": 3088}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 213, "x": 446, "type": "mousemove", "message_id": 3089}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 213, "x": 448, "type": "mousemove", "message_id": 3090}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 213, "x": 451, "type": "mousemove", "message_id": 3091}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 213, "x": 454, "type": "mousemove", "message_id": 3092}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 213, "x": 458, "type": "mousemove", "message_id": 3093}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 214, "x": 463, "type": "mousemove", "message_id": 3094}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 213, "x": 469, "type": "mousemove", "message_id": 3095}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 213, "x": 474, "type": "mousemove", "message_id": 3096}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 212, "x": 479, "type": "mousemove", "message_id": 3097}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 211, "x": 483, "type": "mousemove", "message_id": 3098}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 210, "x": 488, "type": "mousemove", "message_id": 3099}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 209, "x": 494, "type": "mousemove", "message_id": 3100}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 208, "x": 500, "type": "mousemove", "message_id": 3101}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 207, "x": 504, "type": "mousemove", "message_id": 3102}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 206, "x": 507, "type": "mousemove", "message_id": 3103}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 206, "x": 509, "type": "mousemove", "message_id": 3104}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 206, "x": 510, "type": "mouseover", "message_id": 3105}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 206, "x": 510, "type": "mousemove", "message_id": 3107}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 206, "x": 510, "type": "mouseover", "message_id": 3106}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 205, "x": 510, "type": "mousemove", "message_id": 3108}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 205, "x": 510, "type": "mousemove", "message_id": 3109}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 205, "x": 510, "type": "mousemove", "message_id": 3110}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 205, "x": 510, "type": "mousedown", "message_id": 3111}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 205, "x": 510, "type": "mousemove", "message_id": 3112}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 206, "x": 509, "type": "mousemove", "message_id": 3113}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 208, "x": 508, "type": "mousemove", "message_id": 3114}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 209, "x": 506, "type": "mouseover", "message_id": 3115}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 209, "x": 506, "type": "mousemove", "message_id": 3117}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 209, "x": 506, "type": "mouseover", "message_id": 3116}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 211, "x": 504, "type": "mouseover", "message_id": 3118}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 211, "x": 504, "type": "mouseover", "message_id": 3119}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 213, "x": 502, "type": "mousemove", "message_id": 3121}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 211, "x": 504, "type": "mousemove", "message_id": 3120}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 215, "x": 500, "type": "mousemove", "message_id": 3122}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 219, "x": 497, "type": "mousemove", "message_id": 3123}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 222, "x": 494, "type": "mousemove", "message_id": 3124}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 225, "x": 490, "type": "mousemove", "message_id": 3125}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 229, "x": 487, "type": "mousemove", "message_id": 3126}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 233, "x": 483, "type": "mousemove", "message_id": 3127}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 237, "x": 480, "type": "mousemove", "message_id": 3128}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 240, "x": 477, "type": "mousemove", "message_id": 3129}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 242, "x": 475, "type": "mousemove", "message_id": 3130}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 243, "x": 474, "type": "mouseover", "message_id": 3131}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 243, "x": 474, "type": "mousemove", "message_id": 3133}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 243, "x": 474, "type": "mouseover", "message_id": 3132}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 244, "x": 473, "type": "mousemove", "message_id": 3134}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 245, "x": 473, "type": "mousemove", "message_id": 3135}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 245, "x": 472, "type": "mousemove", "message_id": 3136}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 245, "x": 472, "type": "mousemove", "message_id": 3137}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 246, "x": 472, "type": "mousemove", "message_id": 3138}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 246, "x": 471, "type": "mousemove", "message_id": 3139}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 246, "x": 471, "type": "mousemove", "message_id": 3140}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 246, "x": 471, "type": "mousemove", "message_id": 3141}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 246, "x": 471, "type": "mouseup", "message_id": 3142}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 246, "x": 471, "type": "mousemove", "message_id": 3143}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 246, "x": 470, "type": "mousemove", "message_id": 3144}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 246, "x": 468, "type": "mouseover", "message_id": 3145}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 246, "x": 468, "type": "mouseover", "message_id": 3146}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 246, "x": 468, "type": "mousemove", "message_id": 3147}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 247, "x": 465, "type": "mousemove", "message_id": 3148}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 247, "x": 459, "type": "mousemove", "message_id": 3149}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 248, "x": 454, "type": "mousemove", "message_id": 3150}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 248, "x": 448, "type": "mousemove", "message_id": 3151}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 249, "x": 443, "type": "mousemove", "message_id": 3152}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 249, "x": 439, "type": "mousemove", "message_id": 3153}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 250, "x": 436, "type": "mousemove", "message_id": 3154}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 251, "x": 434, "type": "mousemove", "message_id": 3155}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 251, "x": 433, "type": "mouseover", "message_id": 3156}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 251, "x": 433, "type": "mousemove", "message_id": 3158}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 251, "x": 433, "type": "mouseover", "message_id": 3157}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 251, "x": 433, "type": "mousemove", "message_id": 3159}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 251, "x": 433, "type": "mousemove", "message_id": 3160}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 251, "x": 433, "type": "mousemove", "message_id": 3161}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 252, "x": 433, "type": "mousemove", "message_id": 3162}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 252, "x": 435, "type": "mouseover", "message_id": 3163}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 252, "x": 435, "type": "mouseover", "message_id": 3164}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 252, "x": 435, "type": "mousemove", "message_id": 3165}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 253, "x": 437, "type": "mousemove", "message_id": 3166}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 254, "x": 439, "type": "mousemove", "message_id": 3167}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 255, "x": 441, "type": "mousemove", "message_id": 3168}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 256, "x": 444, "type": "mousemove", "message_id": 3169}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 258, "x": 447, "type": "mouseover", "message_id": 3170}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 258, "x": 447, "type": "mouseover", "message_id": 3171}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 258, "x": 447, "type": "mousemove", "message_id": 3172}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 259, "x": 450, "type": "mouseover", "message_id": 3173}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 259, "x": 450, "type": "mouseover", "message_id": 3174}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 259, "x": 450, "type": "mousemove", "message_id": 3175}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 259, "x": 453, "type": "mousemove", "message_id": 3176}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 260, "x": 455, "type": "mousemove", "message_id": 3177}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 261, "x": 459, "type": "mousemove", "message_id": 3178}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 262, "x": 465, "type": "mousemove", "message_id": 3179}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 262, "x": 474, "type": "mousemove", "message_id": 3180}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 263, "x": 485, "type": "mousemove", "message_id": 3181}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 263, "x": 491, "type": "mousemove", "message_id": 3182}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 262, "x": 498, "type": "mousemove", "message_id": 3183}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 262, "x": 501, "type": "mousemove", "message_id": 3184}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 261, "x": 502, "type": "mouseover", "message_id": 3185}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 261, "x": 502, "type": "mousemove", "message_id": 3187}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 261, "x": 502, "type": "mouseover", "message_id": 3186}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 259, "x": 503, "type": "mousemove", "message_id": 3188}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 258, "x": 502, "type": "mousemove", "message_id": 3189}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 256, "x": 502, "type": "mousemove", "message_id": 3190}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 254, "x": 500, "type": "mouseover", "message_id": 3191}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 254, "x": 500, "type": "mouseover", "message_id": 3192}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 254, "x": 500, "type": "mousemove", "message_id": 3193}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 252, "x": 498, "type": "mousemove", "message_id": 3194}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 249, "x": 496, "type": "mousemove", "message_id": 3195}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 246, "x": 493, "type": "mousemove", "message_id": 3196}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 244, "x": 490, "type": "mousemove", "message_id": 3197}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 241, "x": 486, "type": "mousemove", "message_id": 3198}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 239, "x": 482, "type": "mousemove", "message_id": 3199}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 237, "x": 477, "type": "mousemove", "message_id": 3200}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 236, "x": 473, "type": "mouseover", "message_id": 3201}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 236, "x": 473, "type": "mouseover", "message_id": 3202}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 236, "x": 473, "type": "mousemove", "message_id": 3203}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 235, "x": 469, "type": "mousemove", "message_id": 3204}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 234, "x": 468, "type": "mouseover", "message_id": 3205}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 234, "x": 468, "type": "mouseover", "message_id": 3206}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 234, "x": 468, "type": "mousemove", "message_id": 3207}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 233, "x": 467, "type": "mousemove", "message_id": 3208}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 233, "x": 467, "type": "mousemove", "message_id": 3209}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 233, "x": 468, "type": "mousemove", "message_id": 3210}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 233, "x": 468, "type": "mousemove", "message_id": 3211}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 232, "x": 468, "type": "mousemove", "message_id": 3212}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 232, "x": 468, "type": "mousemove", "message_id": 3213}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 232, "x": 469, "type": "mousemove", "message_id": 3214}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 232, "x": 469, "type": "mousemove", "message_id": 3215}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 232, "x": 469, "type": "mousedown", "message_id": 3216}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 232, "x": 469, "type": "mouseup", "message_id": 3217}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 232, "x": 469, "type": "mousemove", "message_id": 3218}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 3219, "altKey": false, "metaKey": false, "key": "d", "ctrlKey": false, "type": "keydown", "keyCode": 68}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 232, "x": 468, "type": "mousemove", "message_id": 3220}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 231, "x": 466, "type": "mouseover", "message_id": 3221}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 231, "x": 466, "type": "mouseover", "message_id": 3222}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 231, "x": 466, "type": "mousemove", "message_id": 3223}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 231, "x": 464, "type": "mousemove", "message_id": 3224}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 231, "x": 462, "type": "mousemove", "message_id": 3225}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 460, "type": "mousemove", "message_id": 3226}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 460, "type": "mouseover", "message_id": 3227}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 460, "type": "mouseover", "message_id": 3228}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 460, "type": "mousemove", "message_id": 3229}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 459, "type": "mousemove", "message_id": 3230}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 459, "type": "mousemove", "message_id": 3231}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 459, "type": "mousemove", "message_id": 3232}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 459, "type": "mousemove", "message_id": 3233}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 458, "type": "mousemove", "message_id": 3234}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 458, "type": "mousemove", "message_id": 3235}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 458, "type": "mousemove", "message_id": 3236}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 457, "type": "mousemove", "message_id": 3237}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 456, "type": "mousemove", "message_id": 3238}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 455, "type": "mousemove", "message_id": 3239}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 453, "type": "mouseover", "message_id": 3240}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 453, "type": "mouseover", "message_id": 3241}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 230, "x": 453, "type": "mousemove", "message_id": 3242}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 229, "x": 450, "type": "mousemove", "message_id": 3243}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 229, "x": 446, "type": "mousemove", "message_id": 3244}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 229, "x": 444, "type": "mousemove", "message_id": 3245}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 228, "x": 442, "type": "mousemove", "message_id": 3246}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 227, "x": 440, "type": "mousemove", "message_id": 3247}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 226, "x": 437, "type": "mousemove", "message_id": 3248}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 223, "x": 433, "type": "mouseover", "message_id": 3249}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 223, "x": 433, "type": "mouseover", "message_id": 3250}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 223, "x": 433, "type": "mousemove", "message_id": 3251}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 221, "x": 429, "type": "mousemove", "message_id": 3252}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 219, "x": 424, "type": "mousemove", "message_id": 3253}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 217, "x": 418, "type": "mousemove", "message_id": 3254}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 215, "x": 411, "type": "mousemove", "message_id": 3255}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 214, "x": 405, "type": "mouseover", "message_id": 3256}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 214, "x": 405, "type": "mouseover", "message_id": 3257}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 214, "x": 405, "type": "mousemove", "message_id": 3258}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 213, "x": 397, "type": "mousemove", "message_id": 3259}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 213, "x": 387, "type": "mousemove", "message_id": 3260}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 214, "x": 376, "type": "mousemove", "message_id": 3261}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 216, "x": 363, "type": "mouseover", "message_id": 3262}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 216, "x": 363, "type": "mouseover", "message_id": 3263}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 216, "x": 363, "type": "mousemove", "message_id": 3264}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 220, "x": 349, "type": "mousemove", "message_id": 3265}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 223, "x": 334, "type": "mousemove", "message_id": 3266}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 228, "x": 320, "type": "mousemove", "message_id": 3267}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 231, "x": 309, "type": "mousemove", "message_id": 3268}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 236, "x": 301, "type": "mousemove", "message_id": 3269}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 245, "x": 294, "type": "mouseover", "message_id": 3271}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 240, "x": 297, "type": "mousemove", "message_id": 3270}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 245, "x": 294, "type": "mouseover", "message_id": 3272}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 252, "x": 294, "type": "mouseover", "message_id": 3274}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 245, "x": 294, "type": "mousemove", "message_id": 3273}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 252, "x": 294, "type": "mouseover", "message_id": 3275}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 252, "x": 294, "type": "mousemove", "message_id": 3276}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 261, "x": 294, "type": "mousemove", "message_id": 3277}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 271, "x": 295, "type": "mousemove", "message_id": 3278}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 280, "x": 296, "type": "mousemove", "message_id": 3279}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 289, "x": 296, "type": "mousemove", "message_id": 3280}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 298, "x": 295, "type": "mousemove", "message_id": 3281}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 293, "type": "mouseover", "message_id": 3282}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 293, "type": "mouseover", "message_id": 3283}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 306, "x": 293, "type": "mousemove", "message_id": 3284}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 293, "type": "mouseover", "message_id": 3286}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 293, "type": "mouseover", "message_id": 3285}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 314, "x": 293, "type": "mousemove", "message_id": 3287}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 322, "x": 293, "type": "mousemove", "message_id": 3288}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 329, "x": 293, "type": "mousemove", "message_id": 3289}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 336, "x": 296, "type": "mouseover", "message_id": 3290}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 336, "x": 296, "type": "mouseover", "message_id": 3291}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 336, "x": 296, "type": "mousemove", "message_id": 3292}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 344, "x": 301, "type": "mouseover", "message_id": 3293}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 344, "x": 301, "type": "mouseover", "message_id": 3294}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 344, "x": 301, "type": "mousemove", "message_id": 3295}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 356, "x": 313, "type": "mousemove", "message_id": 3297}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 351, "x": 307, "type": "mousemove", "message_id": 3296}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 361, "x": 319, "type": "mousemove", "message_id": 3298}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 365, "x": 323, "type": "mousemove", "message_id": 3299}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 369, "x": 327, "type": "mousemove", "message_id": 3300}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 372, "x": 330, "type": "mouseover", "message_id": 3301}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 372, "x": 330, "type": "mouseover", "message_id": 3302}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 372, "x": 330, "type": "mousemove", "message_id": 3303}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 376, "x": 334, "type": "mouseover", "message_id": 3304}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 376, "x": 334, "type": "mouseover", "message_id": 3305}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 376, "x": 334, "type": "mousemove", "message_id": 3306}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 384, "x": 345, "type": "mousemove", "message_id": 3308}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 380, "x": 340, "type": "mousemove", "message_id": 3307}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 389, "x": 352, "type": "mousemove", "message_id": 3309}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 394, "x": 358, "type": "mousemove", "message_id": 3310}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 397, "x": 363, "type": "mouseover", "message_id": 3311}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 397, "x": 363, "type": "mouseover", "message_id": 3312}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 397, "x": 363, "type": "mousemove", "message_id": 3313}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 400, "x": 368, "type": "mousemove", "message_id": 3314}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 403, "x": 374, "type": "mousemove", "message_id": 3315}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 406, "x": 379, "type": "mousemove", "message_id": 3316}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 409, "x": 385, "type": "mousemove", "message_id": 3317}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 412, "x": 390, "type": "mousemove", "message_id": 3318}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 396, "type": "mousemove", "message_id": 3319}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 401, "type": "mouseover", "message_id": 3320}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 401, "type": "mouseover", "message_id": 3321}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 401, "type": "mousemove", "message_id": 3322}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 405, "type": "mousemove", "message_id": 3323}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 409, "type": "mousemove", "message_id": 3324}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 414, "type": "mousemove", "message_id": 3325}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 416, "x": 418, "type": "mousemove", "message_id": 3326}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 416, "x": 422, "type": "mousemove", "message_id": 3327}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 416, "x": 425, "type": "mousemove", "message_id": 3328}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 416, "x": 427, "type": "mousemove", "message_id": 3329}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 429, "type": "mousemove", "message_id": 3330}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 431, "type": "mousemove", "message_id": 3331}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 432, "type": "mouseover", "message_id": 3332}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 432, "type": "mouseover", "message_id": 3333}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 432, "type": "mousemove", "message_id": 3334}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 432, "type": "mousemove", "message_id": 3335}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 433, "type": "mousemove", "message_id": 3336}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 433, "type": "mousemove", "message_id": 3337}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 433, "type": "mousemove", "message_id": 3338}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 434, "type": "mousemove", "message_id": 3339}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 434, "type": "mousemove", "message_id": 3340}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 434, "type": "mousemove", "message_id": 3341}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 434, "type": "mousemove", "message_id": 3342}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 434, "type": "mousedown", "message_id": 3343}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 434, "type": "mouseup", "message_id": 3344}
+{"sender": 3697, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 3345, "altKey": false, "metaKey": false, "key": "d", "ctrlKey": false, "type": "keydown", "keyCode": 68}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 434, "type": "mousemove", "message_id": 3346}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 434, "type": "mousemove", "message_id": 3347}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 433, "type": "mousemove", "message_id": 3348}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 433, "type": "mousemove", "message_id": 3349}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 433, "type": "mousemove", "message_id": 3350}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 414, "x": 432, "type": "mousemove", "message_id": 3351}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 432, "type": "mousemove", "message_id": 3352}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 432, "type": "mousemove", "message_id": 3353}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 432, "type": "mousemove", "message_id": 3354}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 415, "x": 432, "type": "mousemove", "message_id": 3355}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 413, "x": 432, "type": "mousemove", "message_id": 3356}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 406, "x": 431, "type": "mousemove", "message_id": 3357}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 390, "x": 427, "type": "mouseover", "message_id": 3358}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 390, "x": 427, "type": "mouseover", "message_id": 3359}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 390, "x": 427, "type": "mousemove", "message_id": 3360}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 376, "x": 423, "type": "mousemove", "message_id": 3361}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 352, "x": 417, "type": "mousemove", "message_id": 3362}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 328, "x": 411, "type": "mousemove", "message_id": 3363}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 406, "type": "mouseover", "message_id": 3364}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 406, "type": "mouseover", "message_id": 3365}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 302, "x": 406, "type": "mousemove", "message_id": 3366}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 283, "x": 403, "type": "mousemove", "message_id": 3367}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 254, "x": 400, "type": "mouseover", "message_id": 3368}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 254, "x": 400, "type": "mouseover", "message_id": 3369}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 254, "x": 400, "type": "mousemove", "message_id": 3370}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 222, "x": 396, "type": "mousemove", "message_id": 3371}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 188, "x": 390, "type": "mousemove", "message_id": 3372}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 166, "x": 383, "type": "mousemove", "message_id": 3373}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 140, "x": 371, "type": "mousemove", "message_id": 3374}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 126, "x": 363, "type": "mousemove", "message_id": 3375}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 122, "x": 359, "type": "mousemove", "message_id": 3376}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 355, "type": "mousemove", "message_id": 3377}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 353, "type": "mouseover", "message_id": 3378}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 353, "type": "mouseover", "message_id": 3379}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 353, "type": "mousemove", "message_id": 3380}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 350, "type": "mousemove", "message_id": 3381}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 347, "type": "mousemove", "message_id": 3382}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 342, "type": "mousemove", "message_id": 3383}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 335, "type": "mousemove", "message_id": 3384}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 328, "type": "mousemove", "message_id": 3385}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 324, "type": "mousemove", "message_id": 3386}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 320, "type": "mousemove", "message_id": 3387}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 317, "type": "mousemove", "message_id": 3388}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 315, "type": "mousemove", "message_id": 3389}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 310, "type": "mousemove", "message_id": 3390}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 120, "x": 303, "type": "mousemove", "message_id": 3391}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 118, "x": 293, "type": "mouseover", "message_id": 3392}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 118, "x": 293, "type": "mouseover", "message_id": 3393}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 118, "x": 293, "type": "mousemove", "message_id": 3394}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 116, "x": 285, "type": "mousemove", "message_id": 3395}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 113, "x": 272, "type": "mousemove", "message_id": 3396}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 110, "x": 262, "type": "mousemove", "message_id": 3397}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 107, "x": 254, "type": "mousemove", "message_id": 3398}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 104, "x": 250, "type": "mousemove", "message_id": 3399}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 101, "x": 245, "type": "mousemove", "message_id": 3400}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 97, "x": 240, "type": "mousemove", "message_id": 3401}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 93, "x": 235, "type": "mousemove", "message_id": 3402}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 90, "x": 232, "type": "mousemove", "message_id": 3403}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 86, "x": 227, "type": "mousemove", "message_id": 3404}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 81, "x": 221, "type": "mousemove", "message_id": 3405}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 78, "x": 217, "type": "mousemove", "message_id": 3406}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 73, "x": 211, "type": "mousemove", "message_id": 3407}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 69, "x": 207, "type": "mousemove", "message_id": 3408}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 66, "x": 205, "type": "mousemove", "message_id": 3409}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 63, "x": 203, "type": "mousemove", "message_id": 3410}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 60, "x": 202, "type": "mouseover", "message_id": 3411}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 60, "x": 202, "type": "mouseover", "message_id": 3412}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 60, "x": 202, "type": "mousemove", "message_id": 3413}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 56, "x": 200, "type": "mouseover", "message_id": 3414}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 56, "x": 200, "type": "mouseover", "message_id": 3415}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 56, "x": 200, "type": "mousemove", "message_id": 3416}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 53, "x": 199, "type": "mouseover", "message_id": 3417}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 53, "x": 199, "type": "mouseover", "message_id": 3418}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 53, "x": 199, "type": "mousemove", "message_id": 3419}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 50, "x": 198, "type": "mousemove", "message_id": 3420}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 48, "x": 197, "type": "mousemove", "message_id": 3421}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 47, "x": 196, "type": "mousemove", "message_id": 3422}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 46, "x": 196, "type": "mousemove", "message_id": 3423}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 45, "x": 196, "type": "mousemove", "message_id": 3424}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 45, "x": 196, "type": "mousemove", "message_id": 3425}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 45, "x": 196, "type": "mousemove", "message_id": 3426}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 44, "x": 196, "type": "mousemove", "message_id": 3427}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 44, "x": 195, "type": "mousemove", "message_id": 3428}
+{"sender": 3697, "msg_type": "MouseEvent", "y": 43, "x": 195, "type": "mousemove", "message_id": 3429}
diff --git a/recordings/test_edit_labels2.replay b/recordings/test_edit_labels2.replay
new file mode 100644
index 0000000000..ebd8ee097a
--- /dev/null
+++ b/recordings/test_edit_labels2.replay
@@ -0,0 +1,899 @@
+{"panX": 106.34787515973903, "panY": 282.9020124082514, "scale": 0.5800000000000001, "sender": 3914, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 46, "x": 187, "type": "mousemove", "message_id": 702}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 48, "x": 187, "type": "mousemove", "message_id": 703}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 51, "x": 187, "type": "mousemove", "message_id": 704}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 188, "type": "mousemove", "message_id": 705}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 57, "x": 190, "type": "mouseover", "message_id": 706}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 57, "x": 190, "type": "mouseover", "message_id": 707}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 57, "x": 190, "type": "mousemove", "message_id": 708}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 193, "type": "mouseover", "message_id": 709}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 193, "type": "mouseover", "message_id": 710}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 193, "type": "mousemove", "message_id": 711}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 65, "x": 196, "type": "mousemove", "message_id": 712}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 70, "x": 198, "type": "mousemove", "message_id": 713}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 73, "x": 200, "type": "mousemove", "message_id": 714}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 80, "x": 203, "type": "mousemove", "message_id": 715}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 204, "type": "mouseover", "message_id": 716}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 204, "type": "mouseover", "message_id": 717}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 204, "type": "mousemove", "message_id": 718}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 95, "x": 205, "type": "mousemove", "message_id": 719}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 104, "x": 207, "type": "mouseover", "message_id": 720}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 104, "x": 207, "type": "mouseover", "message_id": 721}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 104, "x": 207, "type": "mousemove", "message_id": 722}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 109, "x": 209, "type": "mousemove", "message_id": 723}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 117, "x": 211, "type": "mousemove", "message_id": 724}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 123, "x": 214, "type": "mousemove", "message_id": 725}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 130, "x": 217, "type": "mousemove", "message_id": 726}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 138, "x": 219, "type": "mousemove", "message_id": 727}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 144, "x": 220, "type": "mouseover", "message_id": 728}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 144, "x": 220, "type": "mouseover", "message_id": 729}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 144, "x": 220, "type": "mousemove", "message_id": 730}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 151, "x": 220, "type": "mousemove", "message_id": 731}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 158, "x": 220, "type": "mousemove", "message_id": 732}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 165, "x": 220, "type": "mousemove", "message_id": 733}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 173, "x": 220, "type": "mousemove", "message_id": 734}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 179, "x": 220, "type": "mousemove", "message_id": 735}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 187, "x": 220, "type": "mousemove", "message_id": 736}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 195, "x": 220, "type": "mousemove", "message_id": 737}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 202, "x": 218, "type": "mouseover", "message_id": 738}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 202, "x": 218, "type": "mouseover", "message_id": 739}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 202, "x": 218, "type": "mousemove", "message_id": 740}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 210, "x": 216, "type": "mousemove", "message_id": 741}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 216, "x": 214, "type": "mousemove", "message_id": 742}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 224, "x": 212, "type": "mousemove", "message_id": 743}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 233, "x": 210, "type": "mousemove", "message_id": 744}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 240, "x": 208, "type": "mousemove", "message_id": 745}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 247, "x": 208, "type": "mouseover", "message_id": 746}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 247, "x": 208, "type": "mouseover", "message_id": 747}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 247, "x": 208, "type": "mousemove", "message_id": 748}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 251, "x": 207, "type": "mousemove", "message_id": 749}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 256, "x": 207, "type": "mousemove", "message_id": 750}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 260, "x": 207, "type": "mousemove", "message_id": 751}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 263, "x": 207, "type": "mousemove", "message_id": 752}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 266, "x": 207, "type": "mousemove", "message_id": 753}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 268, "x": 207, "type": "mousemove", "message_id": 754}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 269, "x": 207, "type": "mousemove", "message_id": 755}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 272, "x": 206, "type": "mousemove", "message_id": 756}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 274, "x": 206, "type": "mousemove", "message_id": 757}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 205, "type": "mousemove", "message_id": 758}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 277, "x": 204, "type": "mousemove", "message_id": 759}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 279, "x": 204, "type": "mousemove", "message_id": 760}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 203, "type": "mousemove", "message_id": 761}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 284, "x": 202, "type": "mousemove", "message_id": 762}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 287, "x": 201, "type": "mousemove", "message_id": 763}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 290, "x": 200, "type": "mousemove", "message_id": 764}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 294, "x": 199, "type": "mousemove", "message_id": 765}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 199, "type": "mousemove", "message_id": 766}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 199, "type": "mousemove", "message_id": 767}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 302, "x": 199, "type": "mousemove", "message_id": 768}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 199, "type": "mousemove", "message_id": 769}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 199, "type": "mousemove", "message_id": 770}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 198, "type": "mousemove", "message_id": 771}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 196, "type": "mouseover", "message_id": 772}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 196, "type": "mouseover", "message_id": 773}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 196, "type": "mousemove", "message_id": 774}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 192, "type": "mousemove", "message_id": 775}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 189, "type": "mousemove", "message_id": 776}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 187, "type": "mousemove", "message_id": 777}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 185, "type": "mousemove", "message_id": 778}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 184, "type": "mouseover", "message_id": 779}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 184, "type": "mouseover", "message_id": 780}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 184, "type": "mousemove", "message_id": 781}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 183, "type": "mousemove", "message_id": 782}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 182, "type": "mousemove", "message_id": 783}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 181, "type": "mousemove", "message_id": 784}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 181, "type": "mousemove", "message_id": 785}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 181, "type": "mousemove", "message_id": 786}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 181, "type": "mousedown", "message_id": 787}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 181, "type": "mouseup", "message_id": 788}
+{"sender": 3914, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 789, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 182, "type": "mousemove", "message_id": 791}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 185, "type": "mouseover", "message_id": 792}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 185, "type": "mouseover", "message_id": 793}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 185, "type": "mousemove", "message_id": 794}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 190, "type": "mousemove", "message_id": 795}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 198, "type": "mousemove", "message_id": 796}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 207, "type": "mousemove", "message_id": 797}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 225, "type": "mouseover", "message_id": 798}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 225, "type": "mouseover", "message_id": 799}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 225, "type": "mousemove", "message_id": 800}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 249, "type": "mousemove", "message_id": 801}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 279, "type": "mousemove", "message_id": 802}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 311, "type": "mousemove", "message_id": 803}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 331, "type": "mousemove", "message_id": 804}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 301, "x": 354, "type": "mousemove", "message_id": 805}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 370, "type": "mousemove", "message_id": 806}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 383, "type": "mouseover", "message_id": 807}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 383, "type": "mousemove", "message_id": 809}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 383, "type": "mouseover", "message_id": 808}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 392, "type": "mousemove", "message_id": 810}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 397, "type": "mousemove", "message_id": 811}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 402, "type": "mousemove", "message_id": 812}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 405, "type": "mousemove", "message_id": 813}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 407, "type": "mousemove", "message_id": 814}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 408, "type": "mouseover", "message_id": 815}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 408, "type": "mouseover", "message_id": 816}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 408, "type": "mousemove", "message_id": 817}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 408, "type": "mousemove", "message_id": 818}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 408, "type": "mousemove", "message_id": 819}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 408, "type": "mousemove", "message_id": 820}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 408, "type": "mousemove", "message_id": 821}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 409, "type": "mousemove", "message_id": 822}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 409, "type": "mousemove", "message_id": 823}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 409, "type": "mousemove", "message_id": 824}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 410, "type": "mousemove", "message_id": 825}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 410, "type": "mousemove", "message_id": 826}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 410, "type": "mousemove", "message_id": 827}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 410, "type": "mousemove", "message_id": 829}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 410, "type": "mousemove", "message_id": 828}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 409, "type": "mousemove", "message_id": 830}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 408, "type": "mousemove", "message_id": 831}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 407, "type": "mousemove", "message_id": 832}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 407, "type": "mousemove", "message_id": 833}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 406, "type": "mousemove", "message_id": 834}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 406, "type": "mousemove", "message_id": 835}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 406, "type": "mousemove", "message_id": 836}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 405, "type": "mousemove", "message_id": 837}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 403, "type": "mouseover", "message_id": 838}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 403, "type": "mouseover", "message_id": 839}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 403, "type": "mousemove", "message_id": 840}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 402, "type": "mouseover", "message_id": 841}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 402, "type": "mouseover", "message_id": 842}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 402, "type": "mousemove", "message_id": 843}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 400, "type": "mouseover", "message_id": 844}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 400, "type": "mouseover", "message_id": 845}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 400, "type": "mousemove", "message_id": 846}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 399, "type": "mouseover", "message_id": 847}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 399, "type": "mousemove", "message_id": 849}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 399, "type": "mouseover", "message_id": 848}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 398, "type": "mousemove", "message_id": 850}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 398, "type": "mousemove", "message_id": 851}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 301, "x": 398, "type": "mousemove", "message_id": 852}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 301, "x": 397, "type": "mousemove", "message_id": 853}
+{"sender": 3914, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 854, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 301, "x": 397, "type": "mousemove", "message_id": 856}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 396, "type": "mousemove", "message_id": 857}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 394, "type": "mouseover", "message_id": 858}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 394, "type": "mouseover", "message_id": 859}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 394, "type": "mousemove", "message_id": 860}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 391, "type": "mousemove", "message_id": 861}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 386, "type": "mousemove", "message_id": 862}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 380, "type": "mousemove", "message_id": 863}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 372, "type": "mousemove", "message_id": 864}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 365, "type": "mousemove", "message_id": 865}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 358, "type": "mousemove", "message_id": 866}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 354, "type": "mousemove", "message_id": 867}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 351, "type": "mousemove", "message_id": 868}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 349, "type": "mousemove", "message_id": 869}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 347, "type": "mousemove", "message_id": 870}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 345, "type": "mousemove", "message_id": 871}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 344, "type": "mouseover", "message_id": 872}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 344, "type": "mouseover", "message_id": 873}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 344, "type": "mousemove", "message_id": 874}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 343, "type": "mousemove", "message_id": 875}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 343, "type": "mousemove", "message_id": 876}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 342, "type": "mousemove", "message_id": 877}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 342, "type": "mousemove", "message_id": 878}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 342, "type": "mousemove", "message_id": 879}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 342, "type": "mousemove", "message_id": 880}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 342, "type": "mousemove", "message_id": 881}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 342, "type": "mousemove", "message_id": 882}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 342, "type": "mousemove", "message_id": 883}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 342, "type": "mousemove", "message_id": 884}
+{"sender": 3914, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 885, "altKey": false, "metaKey": false, "key": "l", "ctrlKey": false, "type": "keydown", "keyCode": 76}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 341, "type": "mousemove", "message_id": 886}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 340, "type": "mousemove", "message_id": 887}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 338, "type": "mouseover", "message_id": 888}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 338, "type": "mouseover", "message_id": 889}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 338, "type": "mousemove", "message_id": 890}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 334, "type": "mousemove", "message_id": 891}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 328, "type": "mousemove", "message_id": 892}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 321, "type": "mousemove", "message_id": 893}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 311, "type": "mousemove", "message_id": 894}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 298, "type": "mousemove", "message_id": 895}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 283, "type": "mouseover", "message_id": 896}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 283, "type": "mouseover", "message_id": 897}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 283, "type": "mousemove", "message_id": 898}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 301, "x": 270, "type": "mouseover", "message_id": 899}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 301, "x": 270, "type": "mouseover", "message_id": 900}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 301, "x": 270, "type": "mousemove", "message_id": 901}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 260, "type": "mouseover", "message_id": 902}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 260, "type": "mouseover", "message_id": 903}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 260, "type": "mousemove", "message_id": 904}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 252, "type": "mouseover", "message_id": 905}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 252, "type": "mouseover", "message_id": 906}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 246, "type": "mousemove", "message_id": 908}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 252, "type": "mousemove", "message_id": 907}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 305, "x": 242, "type": "mousemove", "message_id": 909}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 305, "x": 238, "type": "mousemove", "message_id": 910}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 305, "x": 234, "type": "mousemove", "message_id": 911}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 231, "type": "mousemove", "message_id": 912}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 227, "type": "mousemove", "message_id": 913}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 224, "type": "mousemove", "message_id": 914}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 220, "type": "mousemove", "message_id": 915}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 218, "type": "mousemove", "message_id": 916}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 215, "type": "mousemove", "message_id": 917}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 214, "type": "mouseover", "message_id": 918}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 214, "type": "mouseover", "message_id": 919}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 214, "type": "mousemove", "message_id": 920}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 211, "type": "mouseover", "message_id": 921}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 211, "type": "mouseover", "message_id": 922}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 211, "type": "mousemove", "message_id": 923}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 209, "type": "mousemove", "message_id": 924}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 302, "x": 203, "type": "mousemove", "message_id": 926}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 302, "x": 206, "type": "mousemove", "message_id": 925}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 301, "x": 200, "type": "mousemove", "message_id": 927}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 301, "x": 197, "type": "mousemove", "message_id": 928}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 193, "type": "mousemove", "message_id": 929}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 190, "type": "mousemove", "message_id": 930}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 189, "type": "mouseover", "message_id": 931}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 189, "type": "mouseover", "message_id": 932}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 189, "type": "mousemove", "message_id": 933}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 188, "type": "mousemove", "message_id": 934}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 187, "type": "mousemove", "message_id": 935}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 187, "type": "mousemove", "message_id": 936}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 187, "type": "mousemove", "message_id": 937}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 186, "type": "mousemove", "message_id": 938}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 186, "type": "mousemove", "message_id": 939}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 186, "type": "mousedown", "message_id": 940}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 186, "type": "mouseup", "message_id": 941}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 186, "type": "mousemove", "message_id": 943}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 187, "type": "mousemove", "message_id": 944}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 189, "type": "mouseover", "message_id": 945}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 189, "type": "mouseover", "message_id": 946}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 189, "type": "mousemove", "message_id": 947}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 191, "type": "mousemove", "message_id": 948}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 195, "type": "mousemove", "message_id": 949}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 200, "type": "mousemove", "message_id": 950}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 208, "type": "mousemove", "message_id": 951}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 219, "type": "mousemove", "message_id": 952}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 232, "type": "mousemove", "message_id": 953}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 244, "type": "mousemove", "message_id": 954}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 255, "type": "mousemove", "message_id": 955}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 264, "type": "mousemove", "message_id": 956}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 272, "type": "mousemove", "message_id": 957}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 280, "type": "mousemove", "message_id": 958}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 290, "type": "mousemove", "message_id": 959}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 300, "type": "mousemove", "message_id": 960}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 311, "type": "mousemove", "message_id": 961}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 322, "type": "mousemove", "message_id": 962}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 331, "type": "mousemove", "message_id": 963}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 339, "type": "mousemove", "message_id": 964}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 347, "type": "mousemove", "message_id": 965}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 354, "type": "mousemove", "message_id": 966}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 359, "type": "mousemove", "message_id": 967}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 363, "type": "mousemove", "message_id": 968}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 367, "type": "mousemove", "message_id": 969}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 370, "type": "mousemove", "message_id": 970}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 373, "type": "mousemove", "message_id": 971}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 375, "type": "mousemove", "message_id": 972}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 377, "type": "mousemove", "message_id": 973}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 378, "type": "mousemove", "message_id": 976}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 378, "type": "mouseover", "message_id": 974}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 378, "type": "mouseover", "message_id": 975}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 379, "type": "mousemove", "message_id": 977}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 381, "type": "mouseover", "message_id": 978}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 381, "type": "mouseover", "message_id": 979}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 381, "type": "mousemove", "message_id": 980}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 382, "type": "mouseover", "message_id": 981}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 382, "type": "mouseover", "message_id": 982}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 382, "type": "mousemove", "message_id": 983}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 383, "type": "mousemove", "message_id": 984}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 384, "type": "mousemove", "message_id": 985}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 385, "type": "mousemove", "message_id": 986}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 386, "type": "mousemove", "message_id": 987}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 386, "type": "mousemove", "message_id": 988}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 387, "type": "mousemove", "message_id": 989}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 387, "type": "mousemove", "message_id": 990}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 387, "type": "mousemove", "message_id": 991}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 388, "type": "mousemove", "message_id": 992}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 389, "type": "mousemove", "message_id": 993}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 391, "type": "mouseover", "message_id": 995}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 391, "type": "mouseover", "message_id": 994}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 391, "type": "mousemove", "message_id": 996}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 393, "type": "mousemove", "message_id": 997}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 394, "type": "mouseover", "message_id": 998}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 394, "type": "mouseover", "message_id": 999}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 394, "type": "mousemove", "message_id": 1000}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 395, "type": "mousemove", "message_id": 1001}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 396, "type": "mousemove", "message_id": 1002}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 396, "type": "mousemove", "message_id": 1003}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 396, "type": "mousedown", "message_id": 1004}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 396, "type": "mouseup", "message_id": 1005}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 396, "type": "mousemove", "message_id": 1010}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 395, "type": "mousemove", "message_id": 1011}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 394, "type": "mousemove", "message_id": 1012}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 393, "type": "mousemove", "message_id": 1013}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 391, "type": "mouseover", "message_id": 1014}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 391, "type": "mouseover", "message_id": 1015}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 391, "type": "mousemove", "message_id": 1016}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 388, "type": "mousemove", "message_id": 1017}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 381, "type": "mousemove", "message_id": 1019}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 385, "type": "mousemove", "message_id": 1018}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 376, "type": "mousemove", "message_id": 1020}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 370, "type": "mousemove", "message_id": 1021}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 365, "type": "mousemove", "message_id": 1022}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 360, "type": "mousemove", "message_id": 1023}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 356, "type": "mousemove", "message_id": 1024}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 353, "type": "mousemove", "message_id": 1025}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 350, "type": "mousemove", "message_id": 1026}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 348, "type": "mousemove", "message_id": 1027}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 346, "type": "mousemove", "message_id": 1028}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 344, "type": "mousemove", "message_id": 1029}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 341, "type": "mousemove", "message_id": 1030}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 339, "type": "mousemove", "message_id": 1031}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 337, "type": "mousemove", "message_id": 1032}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 335, "type": "mousemove", "message_id": 1033}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 332, "type": "mousemove", "message_id": 1034}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 296, "x": 331, "type": "mouseover", "message_id": 1035}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 296, "x": 331, "type": "mouseover", "message_id": 1036}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 296, "x": 331, "type": "mousemove", "message_id": 1037}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 295, "x": 329, "type": "mouseover", "message_id": 1038}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 295, "x": 329, "type": "mouseover", "message_id": 1039}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 295, "x": 329, "type": "mousemove", "message_id": 1040}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 293, "x": 325, "type": "mousemove", "message_id": 1042}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 294, "x": 327, "type": "mousemove", "message_id": 1041}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 291, "x": 324, "type": "mouseover", "message_id": 1043}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 291, "x": 324, "type": "mouseover", "message_id": 1044}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 291, "x": 324, "type": "mousemove", "message_id": 1045}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 289, "x": 323, "type": "mousemove", "message_id": 1046}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 286, "x": 321, "type": "mouseover", "message_id": 1047}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 286, "x": 321, "type": "mouseover", "message_id": 1048}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 286, "x": 321, "type": "mousemove", "message_id": 1049}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 284, "x": 319, "type": "mousemove", "message_id": 1050}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 317, "type": "mousemove", "message_id": 1051}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 278, "x": 314, "type": "mousemove", "message_id": 1052}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 313, "type": "mouseover", "message_id": 1053}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 313, "type": "mouseover", "message_id": 1054}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 313, "type": "mousemove", "message_id": 1055}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 275, "x": 312, "type": "mousemove", "message_id": 1056}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 274, "x": 312, "type": "mousemove", "message_id": 1057}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 274, "x": 312, "type": "mousemove", "message_id": 1058}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 275, "x": 312, "type": "mousemove", "message_id": 1059}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 275, "x": 312, "type": "mousemove", "message_id": 1060}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 275, "x": 311, "type": "mousemove", "message_id": 1061}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 311, "type": "mousemove", "message_id": 1062}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 310, "type": "mousemove", "message_id": 1063}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 277, "x": 309, "type": "mousemove", "message_id": 1064}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 278, "x": 308, "type": "mousemove", "message_id": 1065}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 278, "x": 306, "type": "mouseover", "message_id": 1066}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 278, "x": 306, "type": "mouseover", "message_id": 1067}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 278, "x": 306, "type": "mousemove", "message_id": 1068}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 279, "x": 305, "type": "mouseover", "message_id": 1069}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 279, "x": 305, "type": "mouseover", "message_id": 1070}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 279, "x": 305, "type": "mousemove", "message_id": 1071}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 280, "x": 303, "type": "mouseover", "message_id": 1072}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 280, "x": 303, "type": "mouseover", "message_id": 1073}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 280, "x": 303, "type": "mousemove", "message_id": 1074}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 280, "x": 302, "type": "mouseover", "message_id": 1075}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 280, "x": 302, "type": "mouseover", "message_id": 1076}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 280, "x": 302, "type": "mousemove", "message_id": 1077}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 280, "x": 301, "type": "mousemove", "message_id": 1078}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 301, "type": "mousemove", "message_id": 1079}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 300, "type": "mousemove", "message_id": 1081}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 300, "type": "mousemove", "message_id": 1080}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 300, "type": "mousemove", "message_id": 1082}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 299, "type": "mousemove", "message_id": 1083}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 299, "type": "mousemove", "message_id": 1084}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 299, "type": "mousemove", "message_id": 1085}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 1086}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 1087}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 1088}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 6, "delta": 6, "type": "wheel", "message_id": 1089}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 1090}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 1091}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 7, "delta": 7, "type": "wheel", "message_id": 1092}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 1093}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 7, "delta": 7, "type": "wheel", "message_id": 1094}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 5, "delta": 5, "type": "wheel", "message_id": 1095}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 5, "delta": 5, "type": "wheel", "message_id": 1096}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 1097}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 6, "delta": 6, "type": "wheel", "message_id": 1098}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 1099}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 5, "delta": 5, "type": "wheel", "message_id": 1100}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 1101}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 1102}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 1103}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 1104}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 1105}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 1106}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 1107}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 1108}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 299, "type": "mousemove", "message_id": 1109}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 1110}
+{"sender": 3914, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1111, "altKey": false, "metaKey": false, "key": "i", "ctrlKey": false, "type": "keydown", "keyCode": 73}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 282, "x": 298, "type": "mousemove", "message_id": 1112}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 283, "x": 295, "type": "mouseover", "message_id": 1113}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 283, "x": 295, "type": "mouseover", "message_id": 1114}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 283, "x": 295, "type": "mousemove", "message_id": 1115}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 284, "x": 290, "type": "mousemove", "message_id": 1116}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 285, "x": 286, "type": "mousemove", "message_id": 1117}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 287, "x": 278, "type": "mouseover", "message_id": 1118}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 287, "x": 278, "type": "mouseover", "message_id": 1119}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 287, "x": 278, "type": "mousemove", "message_id": 1120}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 289, "x": 269, "type": "mousemove", "message_id": 1121}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 291, "x": 260, "type": "mousemove", "message_id": 1122}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 293, "x": 249, "type": "mousemove", "message_id": 1123}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 295, "x": 242, "type": "mouseover", "message_id": 1124}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 295, "x": 242, "type": "mouseover", "message_id": 1125}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 295, "x": 242, "type": "mousemove", "message_id": 1126}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 232, "type": "mouseover", "message_id": 1127}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 232, "type": "mouseover", "message_id": 1128}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 232, "type": "mousemove", "message_id": 1129}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 301, "x": 223, "type": "mousemove", "message_id": 1130}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 216, "type": "mouseover", "message_id": 1131}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 216, "type": "mouseover", "message_id": 1132}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 216, "type": "mousemove", "message_id": 1133}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 305, "x": 211, "type": "mousemove", "message_id": 1134}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 306, "x": 209, "type": "mouseover", "message_id": 1135}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 306, "x": 209, "type": "mouseover", "message_id": 1136}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 306, "x": 209, "type": "mousemove", "message_id": 1137}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 307, "x": 206, "type": "mousemove", "message_id": 1138}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 308, "x": 203, "type": "mousemove", "message_id": 1139}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 308, "x": 201, "type": "mousemove", "message_id": 1140}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 309, "x": 200, "type": "mouseover", "message_id": 1141}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 309, "x": 200, "type": "mouseover", "message_id": 1142}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 309, "x": 200, "type": "mousemove", "message_id": 1143}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 310, "x": 198, "type": "mouseover", "message_id": 1144}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 310, "x": 198, "type": "mouseover", "message_id": 1145}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 310, "x": 198, "type": "mousemove", "message_id": 1146}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 311, "x": 195, "type": "mousemove", "message_id": 1147}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 312, "x": 192, "type": "mousemove", "message_id": 1148}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 313, "x": 189, "type": "mousemove", "message_id": 1149}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 314, "x": 186, "type": "mousemove", "message_id": 1150}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 314, "x": 182, "type": "mousemove", "message_id": 1151}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 315, "x": 177, "type": "mousemove", "message_id": 1152}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 316, "x": 173, "type": "mousemove", "message_id": 1153}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 317, "x": 169, "type": "mousemove", "message_id": 1154}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 317, "x": 166, "type": "mousemove", "message_id": 1155}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 318, "x": 163, "type": "mousemove", "message_id": 1156}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 319, "x": 160, "type": "mousemove", "message_id": 1157}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 319, "x": 158, "type": "mousemove", "message_id": 1158}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 320, "x": 157, "type": "mouseover", "message_id": 1159}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 320, "x": 157, "type": "mouseover", "message_id": 1160}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 320, "x": 157, "type": "mousemove", "message_id": 1161}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 320, "x": 155, "type": "mouseover", "message_id": 1162}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 320, "x": 155, "type": "mouseover", "message_id": 1163}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 320, "x": 155, "type": "mousemove", "message_id": 1164}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 320, "x": 153, "type": "mousemove", "message_id": 1165}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 321, "x": 149, "type": "mousemove", "message_id": 1166}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 321, "x": 146, "type": "mousemove", "message_id": 1167}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 321, "x": 143, "type": "mousemove", "message_id": 1168}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 322, "x": 141, "type": "mousemove", "message_id": 1169}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 322, "x": 140, "type": "mouseover", "message_id": 1170}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 322, "x": 140, "type": "mouseover", "message_id": 1171}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 322, "x": 140, "type": "mousemove", "message_id": 1172}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 322, "x": 138, "type": "mouseover", "message_id": 1173}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 322, "x": 138, "type": "mousemove", "message_id": 1175}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 322, "x": 138, "type": "mouseover", "message_id": 1174}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 322, "x": 137, "type": "mouseover", "message_id": 1176}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 322, "x": 137, "type": "mouseover", "message_id": 1177}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 322, "x": 137, "type": "mousemove", "message_id": 1178}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 322, "x": 136, "type": "mousemove", "message_id": 1179}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 323, "x": 135, "type": "mousemove", "message_id": 1180}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 323, "x": 133, "type": "mouseover", "message_id": 1181}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 323, "x": 133, "type": "mouseover", "message_id": 1182}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 323, "x": 133, "type": "mousemove", "message_id": 1183}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 323, "x": 131, "type": "mousemove", "message_id": 1184}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 324, "x": 130, "type": "mouseover", "message_id": 1185}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 324, "x": 130, "type": "mouseover", "message_id": 1186}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 324, "x": 130, "type": "mousemove", "message_id": 1187}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 325, "x": 129, "type": "mousemove", "message_id": 1188}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 325, "x": 128, "type": "mousemove", "message_id": 1189}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 127, "type": "mousemove", "message_id": 1190}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 126, "type": "mousemove", "message_id": 1191}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 329, "x": 125, "type": "mousemove", "message_id": 1192}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 124, "type": "mousemove", "message_id": 1193}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 332, "x": 122, "type": "mouseover", "message_id": 1194}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 332, "x": 122, "type": "mouseover", "message_id": 1195}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 332, "x": 122, "type": "mousemove", "message_id": 1196}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 121, "type": "mouseover", "message_id": 1197}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 121, "type": "mouseover", "message_id": 1198}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 121, "type": "mousemove", "message_id": 1199}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 120, "type": "mousemove", "message_id": 1200}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 120, "type": "mousemove", "message_id": 1201}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 335, "x": 120, "type": "mousemove", "message_id": 1202}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 335, "x": 120, "type": "mousemove", "message_id": 1203}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 120, "type": "mousemove", "message_id": 1204}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 120, "type": "mousemove", "message_id": 1205}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 119, "type": "mousemove", "message_id": 1206}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 119, "type": "mousemove", "message_id": 1207}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 117, "type": "mouseover", "message_id": 1208}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 117, "type": "mousemove", "message_id": 1210}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 117, "type": "mouseover", "message_id": 1209}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 116, "type": "mouseover", "message_id": 1211}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 116, "type": "mouseover", "message_id": 1212}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 116, "type": "mousemove", "message_id": 1213}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 115, "type": "mousemove", "message_id": 1214}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 114, "type": "mousemove", "message_id": 1215}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 114, "type": "mousemove", "message_id": 1216}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 113, "type": "mousemove", "message_id": 1217}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 113, "type": "mousemove", "message_id": 1218}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 112, "type": "mousemove", "message_id": 1219}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 111, "type": "mousemove", "message_id": 1220}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 110, "type": "mousemove", "message_id": 1221}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 109, "type": "mousemove", "message_id": 1222}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 109, "type": "mousemove", "message_id": 1223}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 108, "type": "mousemove", "message_id": 1224}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 108, "type": "mousemove", "message_id": 1225}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 108, "type": "mousemove", "message_id": 1226}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 108, "type": "mousemove", "message_id": 1227}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 107, "type": "mousemove", "message_id": 1228}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 107, "type": "mousemove", "message_id": 1229}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 106, "type": "mousemove", "message_id": 1230}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 104, "type": "mouseover", "message_id": 1231}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 104, "type": "mouseover", "message_id": 1232}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 104, "type": "mousemove", "message_id": 1233}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 103, "type": "mouseover", "message_id": 1234}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 103, "type": "mouseover", "message_id": 1235}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 103, "type": "mousemove", "message_id": 1236}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 334, "x": 102, "type": "mousemove", "message_id": 1237}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 101, "type": "mousemove", "message_id": 1238}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 100, "type": "mousemove", "message_id": 1239}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 98, "type": "mouseover", "message_id": 1240}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 98, "type": "mouseover", "message_id": 1241}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 98, "type": "mousemove", "message_id": 1242}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 97, "type": "mouseover", "message_id": 1243}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 97, "type": "mouseover", "message_id": 1244}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 97, "type": "mousemove", "message_id": 1245}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 97, "type": "mousemove", "message_id": 1246}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 97, "type": "mousemove", "message_id": 1247}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 97, "type": "mousedown", "message_id": 1248}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 97, "type": "mouseup", "message_id": 1249}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 97, "type": "mousedown", "message_id": 1250}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 97, "type": "mouseup", "message_id": 1251}
+{"sender": 3914, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1252, "altKey": false, "metaKey": false, "key": "1", "ctrlKey": false, "type": "keydown", "keyCode": 49}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 99, "type": "mouseover", "message_id": 1255}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 99, "type": "mouseover", "message_id": 1254}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 333, "x": 99, "type": "mousemove", "message_id": 1256}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 106, "type": "mouseover", "message_id": 1257}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 106, "type": "mouseover", "message_id": 1258}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 106, "type": "mousemove", "message_id": 1259}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 119, "type": "mousemove", "message_id": 1260}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 321, "x": 130, "type": "mouseover", "message_id": 1261}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 321, "x": 130, "type": "mouseover", "message_id": 1262}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 321, "x": 130, "type": "mousemove", "message_id": 1263}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 310, "x": 148, "type": "mousemove", "message_id": 1264}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 165, "type": "mousemove", "message_id": 1265}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 289, "x": 179, "type": "mousemove", "message_id": 1266}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 282, "x": 189, "type": "mousemove", "message_id": 1267}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 278, "x": 193, "type": "mousemove", "message_id": 1268}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 277, "x": 195, "type": "mouseover", "message_id": 1270}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 277, "x": 195, "type": "mouseover", "message_id": 1269}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 277, "x": 195, "type": "mousemove", "message_id": 1271}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 195, "type": "mouseover", "message_id": 1272}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 195, "type": "mouseover", "message_id": 1273}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 195, "type": "mousemove", "message_id": 1274}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 195, "type": "mousedown", "message_id": 1275}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 195, "type": "mouseup", "message_id": 1276}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 196, "type": "mousemove", "message_id": 1277}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 277, "x": 197, "type": "mousemove", "message_id": 1278}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 277, "x": 200, "type": "mouseover", "message_id": 1279}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 277, "x": 200, "type": "mouseover", "message_id": 1280}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 277, "x": 200, "type": "mousemove", "message_id": 1281}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 278, "x": 203, "type": "mousemove", "message_id": 1282}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 279, "x": 209, "type": "mousemove", "message_id": 1283}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 217, "type": "mouseover", "message_id": 1284}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 217, "type": "mouseover", "message_id": 1285}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 281, "x": 217, "type": "mousemove", "message_id": 1286}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 283, "x": 227, "type": "mousemove", "message_id": 1287}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 287, "x": 241, "type": "mousemove", "message_id": 1288}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 290, "x": 256, "type": "mousemove", "message_id": 1289}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 293, "x": 273, "type": "mousemove", "message_id": 1290}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 296, "x": 290, "type": "mousemove", "message_id": 1291}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 299, "x": 307, "type": "mousemove", "message_id": 1292}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 302, "x": 321, "type": "mousemove", "message_id": 1293}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 329, "type": "mouseover", "message_id": 1294}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 329, "type": "mouseover", "message_id": 1295}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 329, "type": "mousemove", "message_id": 1296}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 305, "x": 336, "type": "mousemove", "message_id": 1298}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 333, "type": "mousemove", "message_id": 1297}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 305, "x": 338, "type": "mousemove", "message_id": 1299}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 305, "x": 339, "type": "mouseover", "message_id": 1300}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 305, "x": 339, "type": "mousemove", "message_id": 1302}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 305, "x": 339, "type": "mouseover", "message_id": 1301}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 306, "x": 339, "type": "mousemove", "message_id": 1303}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 306, "x": 340, "type": "mousemove", "message_id": 1304}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 307, "x": 341, "type": "mousemove", "message_id": 1305}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 308, "x": 342, "type": "mousemove", "message_id": 1306}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 309, "x": 343, "type": "mousemove", "message_id": 1307}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 310, "x": 344, "type": "mousemove", "message_id": 1308}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 311, "x": 346, "type": "mouseover", "message_id": 1309}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 311, "x": 346, "type": "mouseover", "message_id": 1310}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 311, "x": 346, "type": "mousemove", "message_id": 1311}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 312, "x": 348, "type": "mousemove", "message_id": 1312}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 314, "x": 351, "type": "mouseover", "message_id": 1313}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 314, "x": 351, "type": "mouseover", "message_id": 1314}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 314, "x": 351, "type": "mousemove", "message_id": 1315}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 316, "x": 356, "type": "mousemove", "message_id": 1316}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 319, "x": 362, "type": "mouseover", "message_id": 1317}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 319, "x": 362, "type": "mouseover", "message_id": 1318}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 319, "x": 362, "type": "mousemove", "message_id": 1319}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 321, "x": 369, "type": "mouseover", "message_id": 1320}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 321, "x": 369, "type": "mouseover", "message_id": 1321}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 321, "x": 369, "type": "mousemove", "message_id": 1322}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 324, "x": 376, "type": "mouseover", "message_id": 1323}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 324, "x": 376, "type": "mouseover", "message_id": 1324}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 324, "x": 376, "type": "mousemove", "message_id": 1325}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 382, "type": "mouseover", "message_id": 1327}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 382, "type": "mouseover", "message_id": 1326}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 386, "type": "mouseover", "message_id": 1329}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 382, "type": "mousemove", "message_id": 1328}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 386, "type": "mouseover", "message_id": 1330}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 386, "type": "mousemove", "message_id": 1331}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 389, "type": "mousemove", "message_id": 1332}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 390, "type": "mouseover", "message_id": 1333}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 390, "type": "mouseover", "message_id": 1334}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 390, "type": "mousemove", "message_id": 1335}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 328, "x": 393, "type": "mouseover", "message_id": 1336}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 328, "x": 393, "type": "mouseover", "message_id": 1337}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 328, "x": 393, "type": "mousemove", "message_id": 1338}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 329, "x": 397, "type": "mousemove", "message_id": 1339}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 329, "x": 401, "type": "mousemove", "message_id": 1340}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 329, "x": 404, "type": "mousemove", "message_id": 1341}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 408, "type": "mousemove", "message_id": 1342}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 410, "type": "mousemove", "message_id": 1343}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 412, "type": "mousemove", "message_id": 1344}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 415, "type": "mousemove", "message_id": 1345}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 419, "type": "mousemove", "message_id": 1346}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 423, "type": "mousemove", "message_id": 1347}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 428, "type": "mousemove", "message_id": 1348}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 435, "type": "mousemove", "message_id": 1349}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 332, "x": 442, "type": "mousemove", "message_id": 1350}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 332, "x": 447, "type": "mousemove", "message_id": 1351}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 450, "type": "mousemove", "message_id": 1352}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 451, "type": "mouseover", "message_id": 1353}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 451, "type": "mouseover", "message_id": 1354}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 451, "type": "mousemove", "message_id": 1355}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 453, "type": "mouseover", "message_id": 1356}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 453, "type": "mouseover", "message_id": 1357}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 453, "type": "mousemove", "message_id": 1358}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 454, "type": "mouseover", "message_id": 1359}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 454, "type": "mousemove", "message_id": 1361}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 454, "type": "mouseover", "message_id": 1360}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 455, "type": "mousemove", "message_id": 1362}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 456, "type": "mousemove", "message_id": 1363}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 458, "type": "mouseover", "message_id": 1364}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 458, "type": "mouseover", "message_id": 1365}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 460, "type": "mousemove", "message_id": 1367}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 458, "type": "mousemove", "message_id": 1366}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 463, "type": "mousemove", "message_id": 1368}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 464, "type": "mouseover", "message_id": 1369}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 464, "type": "mouseover", "message_id": 1370}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 464, "type": "mousemove", "message_id": 1371}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 465, "type": "mousemove", "message_id": 1372}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 465, "type": "mousemove", "message_id": 1373}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 465, "type": "mousemove", "message_id": 1374}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 465, "type": "mousemove", "message_id": 1375}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 464, "type": "mousemove", "message_id": 1376}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 462, "type": "mouseover", "message_id": 1377}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 462, "type": "mouseover", "message_id": 1378}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 462, "type": "mousemove", "message_id": 1379}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 459, "type": "mousemove", "message_id": 1380}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 457, "type": "mousemove", "message_id": 1381}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 455, "type": "mousemove", "message_id": 1382}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 454, "type": "mouseover", "message_id": 1383}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 454, "type": "mouseover", "message_id": 1384}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 454, "type": "mousemove", "message_id": 1385}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 453, "type": "mousemove", "message_id": 1386}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 453, "type": "mousemove", "message_id": 1387}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 453, "type": "mousemove", "message_id": 1388}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 453, "type": "mousedown", "message_id": 1389}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 453, "type": "mouseup", "message_id": 1390}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 453, "type": "mousedown", "message_id": 1391}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 453, "type": "mouseup", "message_id": 1392}
+{"sender": 3914, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1393, "altKey": false, "metaKey": false, "key": "2", "ctrlKey": false, "type": "keydown", "keyCode": 50}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 452, "type": "mousemove", "message_id": 1395}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 331, "x": 451, "type": "mousemove", "message_id": 1396}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 449, "type": "mouseover", "message_id": 1397}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 449, "type": "mouseover", "message_id": 1398}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 449, "type": "mousemove", "message_id": 1399}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 330, "x": 447, "type": "mousemove", "message_id": 1400}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 329, "x": 443, "type": "mousemove", "message_id": 1401}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 438, "type": "mouseover", "message_id": 1402}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 438, "type": "mouseover", "message_id": 1403}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 438, "type": "mousemove", "message_id": 1404}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 323, "x": 431, "type": "mousemove", "message_id": 1405}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 319, "x": 422, "type": "mouseover", "message_id": 1406}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 319, "x": 422, "type": "mouseover", "message_id": 1407}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 319, "x": 422, "type": "mousemove", "message_id": 1408}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 315, "x": 414, "type": "mousemove", "message_id": 1409}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 310, "x": 406, "type": "mousemove", "message_id": 1410}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 304, "x": 399, "type": "mousemove", "message_id": 1411}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 298, "x": 391, "type": "mousemove", "message_id": 1412}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 290, "x": 383, "type": "mousemove", "message_id": 1413}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 283, "x": 375, "type": "mousemove", "message_id": 1414}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 369, "type": "mousemove", "message_id": 1415}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 271, "x": 365, "type": "mousemove", "message_id": 1416}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 267, "x": 361, "type": "mousemove", "message_id": 1417}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 263, "x": 358, "type": "mousemove", "message_id": 1418}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 259, "x": 355, "type": "mousemove", "message_id": 1419}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 256, "x": 352, "type": "mousemove", "message_id": 1420}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 254, "x": 349, "type": "mouseover", "message_id": 1421}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 254, "x": 349, "type": "mouseover", "message_id": 1422}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 254, "x": 349, "type": "mousemove", "message_id": 1423}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 253, "x": 348, "type": "mouseover", "message_id": 1424}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 253, "x": 348, "type": "mouseover", "message_id": 1425}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 253, "x": 348, "type": "mousemove", "message_id": 1426}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 252, "x": 348, "type": "mousemove", "message_id": 1427}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 252, "x": 348, "type": "mousemove", "message_id": 1428}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 252, "x": 348, "type": "mousemove", "message_id": 1429}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 252, "x": 348, "type": "mousemove", "message_id": 1430}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 252, "x": 348, "type": "mousemove", "message_id": 1431}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 252, "x": 348, "type": "mousedown", "message_id": 1432}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 252, "x": 348, "type": "mousemove", "message_id": 1434}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 252, "x": 348, "type": "mouseup", "message_id": 1433}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 252, "x": 348, "type": "mousemove", "message_id": 1435}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 252, "x": 348, "type": "mousemove", "message_id": 1436}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 253, "x": 348, "type": "mousemove", "message_id": 1437}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 254, "x": 348, "type": "mousemove", "message_id": 1438}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 256, "x": 347, "type": "mousemove", "message_id": 1439}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 258, "x": 346, "type": "mousemove", "message_id": 1440}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 262, "x": 343, "type": "mouseover", "message_id": 1441}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 262, "x": 343, "type": "mouseover", "message_id": 1442}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 262, "x": 343, "type": "mousemove", "message_id": 1443}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 269, "x": 337, "type": "mousemove", "message_id": 1445}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 265, "x": 340, "type": "mousemove", "message_id": 1444}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 273, "x": 334, "type": "mousemove", "message_id": 1446}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 331, "type": "mousemove", "message_id": 1447}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 280, "x": 327, "type": "mousemove", "message_id": 1448}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 283, "x": 323, "type": "mousemove", "message_id": 1449}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 287, "x": 319, "type": "mousemove", "message_id": 1450}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 291, "x": 316, "type": "mousemove", "message_id": 1451}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 294, "x": 313, "type": "mousemove", "message_id": 1452}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 297, "x": 310, "type": "mousemove", "message_id": 1453}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 300, "x": 307, "type": "mousemove", "message_id": 1454}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 303, "x": 303, "type": "mousemove", "message_id": 1455}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 306, "x": 300, "type": "mousemove", "message_id": 1456}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 309, "x": 297, "type": "mousemove", "message_id": 1457}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 311, "x": 295, "type": "mouseover", "message_id": 1458}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 311, "x": 295, "type": "mouseover", "message_id": 1459}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 311, "x": 295, "type": "mousemove", "message_id": 1460}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 312, "x": 294, "type": "mouseover", "message_id": 1461}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 312, "x": 294, "type": "mouseover", "message_id": 1462}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 312, "x": 294, "type": "mousemove", "message_id": 1463}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 313, "x": 293, "type": "mousemove", "message_id": 1464}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 314, "x": 292, "type": "mousemove", "message_id": 1465}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 314, "x": 292, "type": "mousemove", "message_id": 1466}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 314, "x": 292, "type": "mousemove", "message_id": 1467}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 314, "x": 292, "type": "mousemove", "message_id": 1468}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 314, "x": 292, "type": "mousemove", "message_id": 1469}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 315, "x": 292, "type": "mousemove", "message_id": 1470}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 315, "x": 292, "type": "mousemove", "message_id": 1471}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 316, "x": 292, "type": "mousemove", "message_id": 1472}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 316, "x": 292, "type": "mousemove", "message_id": 1473}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 317, "x": 292, "type": "mousemove", "message_id": 1474}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 319, "x": 292, "type": "mousemove", "message_id": 1475}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 320, "x": 293, "type": "mousemove", "message_id": 1476}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 322, "x": 293, "type": "mousemove", "message_id": 1477}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 324, "x": 294, "type": "mousemove", "message_id": 1478}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 325, "x": 295, "type": "mousemove", "message_id": 1479}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 295, "type": "mousemove", "message_id": 1480}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 296, "type": "mousemove", "message_id": 1481}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 297, "type": "mousemove", "message_id": 1482}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 299, "type": "mouseover", "message_id": 1483}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 299, "type": "mouseover", "message_id": 1484}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 299, "type": "mousemove", "message_id": 1485}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 300, "type": "mouseover", "message_id": 1486}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 300, "type": "mouseover", "message_id": 1487}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 302, "type": "mouseover", "message_id": 1489}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 302, "type": "mouseover", "message_id": 1490}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 300, "type": "mousemove", "message_id": 1488}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 302, "type": "mousemove", "message_id": 1491}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 304, "type": "mousemove", "message_id": 1492}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 306, "type": "mousemove", "message_id": 1493}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 327, "x": 308, "type": "mousemove", "message_id": 1494}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 309, "type": "mouseover", "message_id": 1495}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 309, "type": "mouseover", "message_id": 1496}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 309, "type": "mousemove", "message_id": 1497}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 309, "type": "mousemove", "message_id": 1498}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 310, "type": "mousemove", "message_id": 1499}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 310, "type": "mousemove", "message_id": 1500}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 310, "type": "mousedown", "message_id": 1501}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 310, "type": "mouseup", "message_id": 1503}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 310, "type": "mousedown", "message_id": 1504}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 310, "type": "mouseup", "message_id": 1507}
+{"sender": 3914, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1508, "altKey": false, "metaKey": false, "key": "1", "ctrlKey": false, "type": "keydown", "keyCode": 49}
+{"sender": 3914, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1510, "altKey": false, "metaKey": false, "key": "-", "ctrlKey": false, "type": "keydown", "keyCode": 189}
+{"sender": 3914, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1512, "altKey": false, "metaKey": false, "key": "2", "ctrlKey": false, "type": "keydown", "keyCode": 50}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 326, "x": 310, "type": "mousemove", "message_id": 1514}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 285, "x": 312, "type": "mouseover", "message_id": 1515}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 285, "x": 312, "type": "mouseover", "message_id": 1516}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 285, "x": 312, "type": "mousemove", "message_id": 1517}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 269, "x": 311, "type": "mouseover", "message_id": 1518}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 269, "x": 311, "type": "mouseover", "message_id": 1519}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 269, "x": 311, "type": "mousemove", "message_id": 1520}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 262, "x": 311, "type": "mouseover", "message_id": 1521}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 262, "x": 311, "type": "mouseover", "message_id": 1522}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 262, "x": 311, "type": "mousemove", "message_id": 1523}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 253, "x": 311, "type": "mousemove", "message_id": 1524}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 246, "x": 310, "type": "mousemove", "message_id": 1525}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 237, "x": 310, "type": "mousemove", "message_id": 1526}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 229, "x": 310, "type": "mousemove", "message_id": 1527}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 223, "x": 310, "type": "mousemove", "message_id": 1528}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 218, "x": 310, "type": "mousemove", "message_id": 1529}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 215, "x": 310, "type": "mousemove", "message_id": 1530}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 211, "x": 310, "type": "mousemove", "message_id": 1531}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 208, "x": 309, "type": "mousemove", "message_id": 1532}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 206, "x": 309, "type": "mousemove", "message_id": 1533}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 203, "x": 309, "type": "mousemove", "message_id": 1534}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 202, "x": 308, "type": "mousemove", "message_id": 1535}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 201, "x": 308, "type": "mousemove", "message_id": 1536}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 200, "x": 308, "type": "mousemove", "message_id": 1537}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 199, "x": 308, "type": "mousemove", "message_id": 1538}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 198, "x": 308, "type": "mousemove", "message_id": 1539}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 198, "x": 308, "type": "mousemove", "message_id": 1540}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 197, "x": 308, "type": "mousemove", "message_id": 1541}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 197, "x": 308, "type": "mousemove", "message_id": 1542}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 197, "x": 308, "type": "mousedown", "message_id": 1543}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 197, "x": 308, "type": "mouseup", "message_id": 1545}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 197, "x": 308, "type": "mousemove", "message_id": 1546}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 196, "x": 308, "type": "mousemove", "message_id": 1547}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 195, "x": 308, "type": "mousemove", "message_id": 1548}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 192, "x": 307, "type": "mousemove", "message_id": 1549}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 187, "x": 305, "type": "mouseover", "message_id": 1550}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 187, "x": 305, "type": "mouseover", "message_id": 1551}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 180, "x": 300, "type": "mouseover", "message_id": 1553}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 187, "x": 305, "type": "mousemove", "message_id": 1552}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 180, "x": 300, "type": "mouseover", "message_id": 1554}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 180, "x": 300, "type": "mousemove", "message_id": 1555}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 166, "x": 289, "type": "mousemove", "message_id": 1557}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 173, "x": 294, "type": "mousemove", "message_id": 1556}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 158, "x": 282, "type": "mousemove", "message_id": 1558}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 150, "x": 275, "type": "mousemove", "message_id": 1559}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 142, "x": 267, "type": "mousemove", "message_id": 1560}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 133, "x": 259, "type": "mousemove", "message_id": 1561}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 125, "x": 250, "type": "mousemove", "message_id": 1562}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 116, "x": 242, "type": "mousemove", "message_id": 1563}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 108, "x": 235, "type": "mousemove", "message_id": 1564}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 101, "x": 229, "type": "mousemove", "message_id": 1565}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 97, "x": 224, "type": "mousemove", "message_id": 1566}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 93, "x": 220, "type": "mousemove", "message_id": 1567}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 90, "x": 218, "type": "mouseover", "message_id": 1569}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 90, "x": 218, "type": "mouseover", "message_id": 1568}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 90, "x": 218, "type": "mousemove", "message_id": 1570}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 88, "x": 217, "type": "mouseover", "message_id": 1571}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 88, "x": 217, "type": "mouseover", "message_id": 1572}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 88, "x": 217, "type": "mousemove", "message_id": 1573}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 215, "type": "mouseover", "message_id": 1574}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 215, "type": "mouseover", "message_id": 1575}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 215, "type": "mousemove", "message_id": 1576}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 214, "type": "mouseover", "message_id": 1577}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 214, "type": "mousemove", "message_id": 1579}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 214, "type": "mouseover", "message_id": 1578}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 213, "type": "mousemove", "message_id": 1580}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 83, "x": 212, "type": "mousemove", "message_id": 1581}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 82, "x": 211, "type": "mousemove", "message_id": 1582}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 81, "x": 211, "type": "mousemove", "message_id": 1583}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 80, "x": 210, "type": "mousemove", "message_id": 1584}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 79, "x": 209, "type": "mousemove", "message_id": 1585}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 77, "x": 208, "type": "mousemove", "message_id": 1586}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 75, "x": 205, "type": "mouseover", "message_id": 1587}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 75, "x": 205, "type": "mousemove", "message_id": 1589}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 75, "x": 205, "type": "mouseover", "message_id": 1588}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 72, "x": 203, "type": "mouseover", "message_id": 1590}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 72, "x": 203, "type": "mouseover", "message_id": 1591}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 72, "x": 203, "type": "mousemove", "message_id": 1592}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 70, "x": 200, "type": "mouseover", "message_id": 1593}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 70, "x": 200, "type": "mouseover", "message_id": 1594}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 70, "x": 200, "type": "mousemove", "message_id": 1595}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 68, "x": 199, "type": "mouseover", "message_id": 1596}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 68, "x": 199, "type": "mouseover", "message_id": 1597}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 68, "x": 199, "type": "mousemove", "message_id": 1598}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 67, "x": 198, "type": "mousemove", "message_id": 1599}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 66, "x": 197, "type": "mousemove", "message_id": 1600}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 64, "x": 196, "type": "mousemove", "message_id": 1601}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 62, "x": 195, "type": "mousemove", "message_id": 1602}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 195, "type": "mousemove", "message_id": 1603}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 60, "x": 194, "type": "mousemove", "message_id": 1604}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 194, "type": "mousemove", "message_id": 1605}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 194, "type": "mousemove", "message_id": 1606}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 56, "x": 193, "type": "mousemove", "message_id": 1607}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 55, "x": 192, "type": "mousemove", "message_id": 1608}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 191, "type": "mousemove", "message_id": 1609}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 191, "type": "mousemove", "message_id": 1610}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 191, "type": "mousemove", "message_id": 1611}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 191, "type": "mousemove", "message_id": 1612}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 191, "type": "mousemove", "message_id": 1613}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 191, "type": "mousemove", "message_id": 1614}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 51, "x": 191, "type": "mousemove", "message_id": 1615}
diff --git a/recordings/test_export.replay b/recordings/test_export.replay
new file mode 100644
index 0000000000..7788c7abf7
--- /dev/null
+++ b/recordings/test_export.replay
@@ -0,0 +1,167 @@
+{"scale": 0.9299999999999995, "sender": 4637, "msg_type": "ViewPort", "panY": 60.64999999999975, "panX": 49.97999999999968, "message_id": 627}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 46, "x": 176, "type": "mousemove", "message_id": 628}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 46, "x": 176, "type": "mousemove", "message_id": 629}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 46, "x": 176, "type": "mousemove", "message_id": 630}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 46, "x": 176, "type": "mousemove", "message_id": 631}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 47, "x": 176, "type": "mousemove", "message_id": 632}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 49, "x": 176, "type": "mousemove", "message_id": 633}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 52, "x": 176, "type": "mousemove", "message_id": 634}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 55, "x": 175, "type": "mousemove", "message_id": 635}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 59, "x": 175, "type": "mousemove", "message_id": 636}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 64, "x": 173, "type": "mouseover", "message_id": 637}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 64, "x": 173, "type": "mousemove", "message_id": 639}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 70, "x": 172, "type": "mouseover", "message_id": 640}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 64, "x": 173, "type": "mouseover", "message_id": 638}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 70, "x": 172, "type": "mouseover", "message_id": 641}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 70, "x": 172, "type": "mousemove", "message_id": 642}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 76, "x": 171, "type": "mousemove", "message_id": 643}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 81, "x": 170, "type": "mousemove", "message_id": 644}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 88, "x": 170, "type": "mousemove", "message_id": 645}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 96, "x": 170, "type": "mousemove", "message_id": 646}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 101, "x": 170, "type": "mousemove", "message_id": 647}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 109, "x": 170, "type": "mousemove", "message_id": 648}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 116, "x": 170, "type": "mousemove", "message_id": 649}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 123, "x": 171, "type": "mousemove", "message_id": 650}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 129, "x": 172, "type": "mousemove", "message_id": 651}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 134, "x": 174, "type": "mouseover", "message_id": 652}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 134, "x": 174, "type": "mouseover", "message_id": 653}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 134, "x": 174, "type": "mousemove", "message_id": 654}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 138, "x": 176, "type": "mousemove", "message_id": 655}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 143, "x": 179, "type": "mousemove", "message_id": 656}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 147, "x": 182, "type": "mousemove", "message_id": 657}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 151, "x": 187, "type": "mousemove", "message_id": 658}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 154, "x": 193, "type": "mousemove", "message_id": 659}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 157, "x": 200, "type": "mousemove", "message_id": 660}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 159, "x": 209, "type": "mousemove", "message_id": 661}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 160, "x": 217, "type": "mouseover", "message_id": 662}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 160, "x": 217, "type": "mouseover", "message_id": 663}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 160, "x": 217, "type": "mousemove", "message_id": 664}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 161, "x": 230, "type": "mousemove", "message_id": 665}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 161, "x": 245, "type": "mousemove", "message_id": 666}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 161, "x": 260, "type": "mousemove", "message_id": 667}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 159, "x": 276, "type": "mouseover", "message_id": 668}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 159, "x": 276, "type": "mouseover", "message_id": 669}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 159, "x": 276, "type": "mousemove", "message_id": 670}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 156, "x": 292, "type": "mousemove", "message_id": 671}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 151, "x": 307, "type": "mousemove", "message_id": 672}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 143, "x": 319, "type": "mousemove", "message_id": 673}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 134, "x": 329, "type": "mousemove", "message_id": 674}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 122, "x": 338, "type": "mousemove", "message_id": 675}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 111, "x": 344, "type": "mousemove", "message_id": 676}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 102, "x": 349, "type": "mousemove", "message_id": 677}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 93, "x": 351, "type": "mousemove", "message_id": 678}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 88, "x": 352, "type": "mouseover", "message_id": 679}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 88, "x": 352, "type": "mouseover", "message_id": 680}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 88, "x": 352, "type": "mousemove", "message_id": 681}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 80, "x": 352, "type": "mousemove", "message_id": 682}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 73, "x": 351, "type": "mousemove", "message_id": 683}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 64, "x": 349, "type": "mouseover", "message_id": 684}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 64, "x": 349, "type": "mouseover", "message_id": 685}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 64, "x": 349, "type": "mousemove", "message_id": 686}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 55, "x": 344, "type": "mousemove", "message_id": 687}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 48, "x": 339, "type": "mousemove", "message_id": 688}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 42, "x": 333, "type": "mousemove", "message_id": 689}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 39, "x": 328, "type": "mousemove", "message_id": 690}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 36, "x": 323, "type": "mousemove", "message_id": 691}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 34, "x": 320, "type": "mousemove", "message_id": 692}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 33, "x": 317, "type": "mouseover", "message_id": 693}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 33, "x": 317, "type": "mouseover", "message_id": 694}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 33, "x": 317, "type": "mousemove", "message_id": 695}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 32, "x": 315, "type": "mousemove", "message_id": 696}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 32, "x": 313, "type": "mousemove", "message_id": 697}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 31, "x": 311, "type": "mousemove", "message_id": 698}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 31, "x": 307, "type": "mousemove", "message_id": 699}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 31, "x": 303, "type": "mousemove", "message_id": 700}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 31, "x": 300, "type": "mousemove", "message_id": 701}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 31, "x": 296, "type": "mousemove", "message_id": 702}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 31, "x": 292, "type": "mousemove", "message_id": 703}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 31, "x": 287, "type": "mousemove", "message_id": 704}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 31, "x": 281, "type": "mousemove", "message_id": 705}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 31, "x": 274, "type": "mousemove", "message_id": 706}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 31, "x": 266, "type": "mousemove", "message_id": 707}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 260, "type": "mousemove", "message_id": 708}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 255, "type": "mousemove", "message_id": 709}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 253, "type": "mousemove", "message_id": 710}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mouseover", "message_id": 711}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mouseover", "message_id": 712}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mousemove", "message_id": 713}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mousemove", "message_id": 714}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mousemove", "message_id": 715}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mousemove", "message_id": 716}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mousemove", "message_id": 717}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mousemove", "message_id": 718}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mousemove", "message_id": 719}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mousedown", "message_id": 720}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mousemove", "message_id": 721}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mouseup", "message_id": 722}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mouseover", "message_id": 723}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mouseover", "message_id": 724}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mousemove", "message_id": 725}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mouseover", "message_id": 726}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mouseover", "message_id": 727}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mousemove", "message_id": 728}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 30, "x": 252, "type": "mousemove", "message_id": 729}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 31, "x": 252, "type": "mousemove", "message_id": 730}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 31, "x": 252, "type": "mousemove", "message_id": 731}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 33, "x": 253, "type": "mousemove", "message_id": 732}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 36, "x": 255, "type": "mouseover", "message_id": 733}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 36, "x": 255, "type": "mouseover", "message_id": 734}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 36, "x": 255, "type": "mousemove", "message_id": 735}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 42, "x": 256, "type": "mouseover", "message_id": 736}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 42, "x": 256, "type": "mouseover", "message_id": 737}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 42, "x": 256, "type": "mousemove", "message_id": 738}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 47, "x": 257, "type": "mousemove", "message_id": 739}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 55, "x": 257, "type": "mousemove", "message_id": 740}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 64, "x": 256, "type": "mousemove", "message_id": 741}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 71, "x": 253, "type": "mouseover", "message_id": 742}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 71, "x": 253, "type": "mousemove", "message_id": 744}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 71, "x": 253, "type": "mouseover", "message_id": 743}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 76, "x": 251, "type": "mousemove", "message_id": 745}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 81, "x": 248, "type": "mousemove", "message_id": 746}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 85, "x": 244, "type": "mousemove", "message_id": 747}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 89, "x": 240, "type": "mousemove", "message_id": 748}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 91, "x": 237, "type": "mousemove", "message_id": 749}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 93, "x": 234, "type": "mousemove", "message_id": 750}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 94, "x": 231, "type": "mouseover", "message_id": 751}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 94, "x": 231, "type": "mouseover", "message_id": 752}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 94, "x": 231, "type": "mousemove", "message_id": 753}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 94, "x": 228, "type": "mousemove", "message_id": 754}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 94, "x": 225, "type": "mousemove", "message_id": 755}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 94, "x": 221, "type": "mousemove", "message_id": 756}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 94, "x": 217, "type": "mousemove", "message_id": 757}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 93, "x": 214, "type": "mousemove", "message_id": 758}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 93, "x": 211, "type": "mousemove", "message_id": 759}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 92, "x": 209, "type": "mousemove", "message_id": 760}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 92, "x": 207, "type": "mousemove", "message_id": 761}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 91, "x": 206, "type": "mouseover", "message_id": 762}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 91, "x": 206, "type": "mousemove", "message_id": 764}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 91, "x": 206, "type": "mouseover", "message_id": 763}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 90, "x": 204, "type": "mouseover", "message_id": 765}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 90, "x": 204, "type": "mouseover", "message_id": 766}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 90, "x": 204, "type": "mousemove", "message_id": 767}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 88, "x": 201, "type": "mouseover", "message_id": 768}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 88, "x": 201, "type": "mouseover", "message_id": 769}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 85, "x": 198, "type": "mousemove", "message_id": 771}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 88, "x": 201, "type": "mousemove", "message_id": 770}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 83, "x": 196, "type": "mousemove", "message_id": 772}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 80, "x": 193, "type": "mousemove", "message_id": 773}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 77, "x": 192, "type": "mouseover", "message_id": 774}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 77, "x": 192, "type": "mouseover", "message_id": 775}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 77, "x": 192, "type": "mousemove", "message_id": 776}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 74, "x": 191, "type": "mousemove", "message_id": 777}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 71, "x": 190, "type": "mousemove", "message_id": 778}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 67, "x": 189, "type": "mousemove", "message_id": 779}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 64, "x": 188, "type": "mousemove", "message_id": 780}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 60, "x": 187, "type": "mousemove", "message_id": 781}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 59, "x": 187, "type": "mousemove", "message_id": 782}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 57, "x": 186, "type": "mousemove", "message_id": 783}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 55, "x": 186, "type": "mousemove", "message_id": 784}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 52, "x": 186, "type": "mousemove", "message_id": 786}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 53, "x": 186, "type": "mousemove", "message_id": 785}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 51, "x": 186, "type": "mousemove", "message_id": 787}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 50, "x": 186, "type": "mousemove", "message_id": 788}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 49, "x": 187, "type": "mousemove", "message_id": 789}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 49, "x": 187, "type": "mousemove", "message_id": 790}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 48, "x": 187, "type": "mousemove", "message_id": 791}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 48, "x": 187, "type": "mousemove", "message_id": 792}
+{"sender": 4637, "msg_type": "MouseEvent", "y": 48, "x": 187, "type": "mousemove", "message_id": 793}
diff --git a/recordings/test_link_unconnected.replay b/recordings/test_link_unconnected.replay
new file mode 100644
index 0000000000..5af28a8801
--- /dev/null
+++ b/recordings/test_link_unconnected.replay
@@ -0,0 +1,180 @@
+{"panX": 88.50231573279976, "panY": 87.7890649686315, "scale": 0.7399999999999998, "sender": 4115, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 46, "x": 189, "type": "mousemove", "message_id": 2099}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 57, "x": 191, "type": "mouseover", "message_id": 2100}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 57, "x": 191, "type": "mouseover", "message_id": 2101}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 57, "x": 191, "type": "mousemove", "message_id": 2102}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 74, "x": 193, "type": "mouseover", "message_id": 2103}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 74, "x": 193, "type": "mouseover", "message_id": 2104}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 74, "x": 193, "type": "mousemove", "message_id": 2105}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 91, "x": 197, "type": "mousemove", "message_id": 2106}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 110, "x": 200, "type": "mousemove", "message_id": 2107}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 130, "x": 206, "type": "mousemove", "message_id": 2108}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 150, "x": 210, "type": "mousemove", "message_id": 2109}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 170, "x": 215, "type": "mousemove", "message_id": 2110}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 186, "x": 220, "type": "mousemove", "message_id": 2111}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 205, "x": 225, "type": "mousemove", "message_id": 2112}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 220, "x": 230, "type": "mousemove", "message_id": 2113}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 237, "x": 235, "type": "mousemove", "message_id": 2114}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 243, "x": 237, "type": "mousemove", "message_id": 2115}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 256, "x": 241, "type": "mousemove", "message_id": 2116}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 267, "x": 246, "type": "mousemove", "message_id": 2117}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 275, "x": 249, "type": "mousemove", "message_id": 2118}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 278, "x": 249, "type": "mouseover", "message_id": 2120}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 278, "x": 249, "type": "mouseover", "message_id": 2119}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 278, "x": 249, "type": "mousemove", "message_id": 2121}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 288, "x": 254, "type": "mouseover", "message_id": 2122}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 288, "x": 254, "type": "mouseover", "message_id": 2123}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 288, "x": 254, "type": "mousemove", "message_id": 2124}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 292, "x": 255, "type": "mouseover", "message_id": 2125}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 292, "x": 255, "type": "mouseover", "message_id": 2126}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 292, "x": 255, "type": "mousemove", "message_id": 2127}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 294, "x": 256, "type": "mousemove", "message_id": 2128}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 299, "x": 258, "type": "mouseover", "message_id": 2129}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 299, "x": 258, "type": "mouseover", "message_id": 2130}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 299, "x": 258, "type": "mousemove", "message_id": 2131}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 301, "x": 259, "type": "mouseover", "message_id": 2132}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 301, "x": 259, "type": "mouseover", "message_id": 2133}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 301, "x": 259, "type": "mousemove", "message_id": 2134}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 304, "x": 260, "type": "mousemove", "message_id": 2135}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 306, "x": 260, "type": "mousemove", "message_id": 2136}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 309, "x": 261, "type": "mousemove", "message_id": 2137}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 310, "x": 262, "type": "mousemove", "message_id": 2138}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 312, "x": 262, "type": "mousemove", "message_id": 2139}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 313, "x": 262, "type": "mousemove", "message_id": 2140}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 315, "x": 263, "type": "mousemove", "message_id": 2142}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 314, "x": 263, "type": "mousemove", "message_id": 2141}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 315, "x": 263, "type": "mousemove", "message_id": 2143}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 315, "x": 263, "type": "mousemove", "message_id": 2144}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 315, "x": 263, "type": "mousedown", "message_id": 2145}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 315, "x": 263, "type": "mouseup", "message_id": 2146}
+{"sender": 4115, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2147, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 4115, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2149, "altKey": false, "metaKey": false, "key": "l", "ctrlKey": false, "type": "keydown", "keyCode": 76}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 315, "x": 263, "type": "mousedown", "message_id": 2150}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 315, "x": 263, "type": "mouseup", "message_id": 2151}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 315, "x": 264, "type": "mousemove", "message_id": 2153}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 314, "x": 267, "type": "mouseover", "message_id": 2154}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 314, "x": 267, "type": "mouseover", "message_id": 2155}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 314, "x": 267, "type": "mousemove", "message_id": 2156}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 311, "x": 272, "type": "mouseover", "message_id": 2157}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 311, "x": 272, "type": "mouseover", "message_id": 2158}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 311, "x": 272, "type": "mousemove", "message_id": 2159}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 309, "x": 277, "type": "mousemove", "message_id": 2160}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 307, "x": 283, "type": "mouseover", "message_id": 2161}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 307, "x": 283, "type": "mouseover", "message_id": 2162}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 307, "x": 283, "type": "mousemove", "message_id": 2163}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 305, "x": 291, "type": "mousemove", "message_id": 2164}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 297, "x": 311, "type": "mouseover", "message_id": 2165}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 297, "x": 311, "type": "mouseover", "message_id": 2166}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 297, "x": 311, "type": "mousemove", "message_id": 2167}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 291, "x": 330, "type": "mousemove", "message_id": 2168}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 290, "x": 340, "type": "mouseover", "message_id": 2169}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 290, "x": 340, "type": "mouseover", "message_id": 2170}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 290, "x": 340, "type": "mousemove", "message_id": 2171}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 287, "x": 360, "type": "mouseover", "message_id": 2172}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 287, "x": 360, "type": "mouseover", "message_id": 2173}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 287, "x": 360, "type": "mousemove", "message_id": 2174}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 378, "type": "mousemove", "message_id": 2175}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 392, "type": "mouseover", "message_id": 2176}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 392, "type": "mouseover", "message_id": 2177}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 392, "type": "mousemove", "message_id": 2178}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 399, "type": "mousemove", "message_id": 2179}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 410, "type": "mousemove", "message_id": 2180}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 420, "type": "mousemove", "message_id": 2181}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 423, "type": "mousemove", "message_id": 2182}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 428, "type": "mousemove", "message_id": 2183}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 433, "type": "mousemove", "message_id": 2184}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 438, "type": "mousemove", "message_id": 2186}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 436, "type": "mousemove", "message_id": 2185}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 440, "type": "mousemove", "message_id": 2187}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 440, "type": "mouseover", "message_id": 2188}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 440, "type": "mouseover", "message_id": 2189}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 440, "type": "mousemove", "message_id": 2190}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 441, "type": "mousemove", "message_id": 2191}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 441, "type": "mousemove", "message_id": 2192}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 442, "type": "mousemove", "message_id": 2193}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 285, "x": 442, "type": "mousemove", "message_id": 2194}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 442, "type": "mousemove", "message_id": 2195}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 442, "type": "mousemove", "message_id": 2196}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 441, "type": "mousemove", "message_id": 2197}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 441, "type": "mousemove", "message_id": 2198}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 440, "type": "mousemove", "message_id": 2199}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 440, "type": "mousemove", "message_id": 2200}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 439, "type": "mousemove", "message_id": 2201}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 439, "type": "mousemove", "message_id": 2202}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 439, "type": "mousemove", "message_id": 2203}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 439, "type": "mousemove", "message_id": 2204}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 438, "type": "mousemove", "message_id": 2205}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 438, "type": "mousedown", "message_id": 2206}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 438, "type": "mouseup", "message_id": 2207}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 286, "x": 438, "type": "mousemove", "message_id": 2209}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 284, "x": 436, "type": "mouseover", "message_id": 2211}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 284, "x": 436, "type": "mouseover", "message_id": 2210}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 281, "x": 433, "type": "mousemove", "message_id": 2213}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 284, "x": 436, "type": "mousemove", "message_id": 2212}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 278, "x": 430, "type": "mousemove", "message_id": 2214}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 274, "x": 425, "type": "mousemove", "message_id": 2215}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 270, "x": 421, "type": "mousemove", "message_id": 2216}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 264, "x": 415, "type": "mousemove", "message_id": 2217}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 258, "x": 407, "type": "mousemove", "message_id": 2218}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 226, "x": 375, "type": "mousemove", "message_id": 2220}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 244, "x": 392, "type": "mousemove", "message_id": 2219}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 207, "x": 357, "type": "mousemove", "message_id": 2221}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 185, "x": 336, "type": "mousemove", "message_id": 2222}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 163, "x": 314, "type": "mousemove", "message_id": 2223}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 142, "x": 293, "type": "mousemove", "message_id": 2224}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 135, "x": 287, "type": "mousemove", "message_id": 2225}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 117, "x": 269, "type": "mousemove", "message_id": 2226}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 104, "x": 256, "type": "mousemove", "message_id": 2227}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 98, "x": 250, "type": "mousemove", "message_id": 2228}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 88, "x": 238, "type": "mouseover", "message_id": 2229}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 88, "x": 238, "type": "mouseover", "message_id": 2230}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 88, "x": 238, "type": "mousemove", "message_id": 2231}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 80, "x": 229, "type": "mouseover", "message_id": 2232}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 80, "x": 229, "type": "mouseover", "message_id": 2233}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 80, "x": 229, "type": "mousemove", "message_id": 2234}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 73, "x": 222, "type": "mousemove", "message_id": 2235}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 67, "x": 216, "type": "mousemove", "message_id": 2236}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 64, "x": 211, "type": "mousemove", "message_id": 2237}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 62, "x": 209, "type": "mousemove", "message_id": 2238}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 59, "x": 205, "type": "mouseover", "message_id": 2239}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 59, "x": 205, "type": "mouseover", "message_id": 2240}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 59, "x": 205, "type": "mousemove", "message_id": 2241}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 55, "x": 200, "type": "mousemove", "message_id": 2242}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 54, "x": 199, "type": "mouseover", "message_id": 2243}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 54, "x": 199, "type": "mouseover", "message_id": 2244}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 54, "x": 199, "type": "mousemove", "message_id": 2245}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 52, "x": 196, "type": "mouseover", "message_id": 2246}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 52, "x": 196, "type": "mouseover", "message_id": 2247}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 52, "x": 196, "type": "mousemove", "message_id": 2248}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 51, "x": 194, "type": "mouseover", "message_id": 2249}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 51, "x": 194, "type": "mouseover", "message_id": 2250}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 51, "x": 194, "type": "mousemove", "message_id": 2251}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 50, "x": 193, "type": "mouseover", "message_id": 2252}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 50, "x": 193, "type": "mouseover", "message_id": 2253}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 50, "x": 193, "type": "mousemove", "message_id": 2254}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 48, "x": 191, "type": "mouseover", "message_id": 2255}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 48, "x": 191, "type": "mouseover", "message_id": 2256}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 48, "x": 191, "type": "mousemove", "message_id": 2257}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 47, "x": 190, "type": "mouseover", "message_id": 2258}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 47, "x": 190, "type": "mouseover", "message_id": 2259}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 47, "x": 190, "type": "mousemove", "message_id": 2260}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 46, "x": 189, "type": "mousemove", "message_id": 2261}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 45, "x": 187, "type": "mouseover", "message_id": 2262}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 45, "x": 187, "type": "mouseover", "message_id": 2263}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 45, "x": 187, "type": "mousemove", "message_id": 2264}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 44, "x": 186, "type": "mouseover", "message_id": 2265}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 44, "x": 186, "type": "mouseover", "message_id": 2266}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 44, "x": 186, "type": "mousemove", "message_id": 2267}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 43, "x": 185, "type": "mousemove", "message_id": 2268}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 42, "x": 183, "type": "mouseover", "message_id": 2269}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 42, "x": 183, "type": "mouseover", "message_id": 2270}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 42, "x": 183, "type": "mousemove", "message_id": 2271}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 41, "x": 182, "type": "mouseover", "message_id": 2272}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 41, "x": 182, "type": "mouseover", "message_id": 2273}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 41, "x": 182, "type": "mousemove", "message_id": 2274}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 40, "x": 180, "type": "mouseover", "message_id": 2275}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 40, "x": 180, "type": "mouseover", "message_id": 2276}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 40, "x": 180, "type": "mousemove", "message_id": 2277}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 39, "x": 179, "type": "mouseover", "message_id": 2278}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 39, "x": 179, "type": "mouseover", "message_id": 2279}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 39, "x": 179, "type": "mousemove", "message_id": 2280}
diff --git a/recordings/test_mouse.replay b/recordings/test_mouse.replay
new file mode 100644
index 0000000000..86190ad510
--- /dev/null
+++ b/recordings/test_mouse.replay
@@ -0,0 +1,536 @@
+{"panX": 156.0005645513574, "panY": 143.5339218357422, "scale": 0.510765027322404, "sender": 3914, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 49, "x": 172, "type": "mousemove", "message_id": 121}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 49, "x": 172, "type": "mousemove", "message_id": 122}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 49, "x": 173, "type": "mousemove", "message_id": 123}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 50, "x": 174, "type": "mousemove", "message_id": 124}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 50, "x": 175, "type": "mousemove", "message_id": 125}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 51, "x": 176, "type": "mousemove", "message_id": 126}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 51, "x": 178, "type": "mouseover", "message_id": 127}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 51, "x": 178, "type": "mouseover", "message_id": 128}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 51, "x": 178, "type": "mousemove", "message_id": 129}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 179, "type": "mouseover", "message_id": 130}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 179, "type": "mouseover", "message_id": 131}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 179, "type": "mousemove", "message_id": 132}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 179, "type": "mousemove", "message_id": 133}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 179, "type": "mousemove", "message_id": 134}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 180, "type": "mousemove", "message_id": 135}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 181, "type": "mousemove", "message_id": 136}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 181, "type": "mousemove", "message_id": 137}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 182, "type": "mousemove", "message_id": 138}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 183, "type": "mousemove", "message_id": 139}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 183, "type": "mousemove", "message_id": 140}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 184, "type": "mousemove", "message_id": 141}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 184, "type": "mousemove", "message_id": 142}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 184, "type": "mousemove", "message_id": 143}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 182, "type": "mouseover", "message_id": 144}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 182, "type": "mouseover", "message_id": 145}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 182, "type": "mousemove", "message_id": 146}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 178, "type": "mousemove", "message_id": 147}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 170, "type": "mousemove", "message_id": 148}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 158, "type": "mousemove", "message_id": 149}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 141, "type": "mouseover", "message_id": 150}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 141, "type": "mouseover", "message_id": 151}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 141, "type": "mousemove", "message_id": 152}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 56, "x": 120, "type": "mouseover", "message_id": 153}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 56, "x": 120, "type": "mouseover", "message_id": 154}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 56, "x": 120, "type": "mousemove", "message_id": 155}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 98, "type": "mousemove", "message_id": 156}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 74, "type": "mouseover", "message_id": 157}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 74, "type": "mouseover", "message_id": 158}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 74, "type": "mousemove", "message_id": 159}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 60, "x": 52, "type": "mouseover", "message_id": 160}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 60, "x": 52, "type": "mouseover", "message_id": 161}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 60, "x": 52, "type": "mousemove", "message_id": 162}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 33, "type": "mouseover", "message_id": 163}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 33, "type": "mousemove", "message_id": 165}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 33, "type": "mouseover", "message_id": 164}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 19, "type": "mouseover", "message_id": 166}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 19, "type": "mouseover", "message_id": 167}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 19, "type": "mousemove", "message_id": 168}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 62, "x": 10, "type": "mousemove", "message_id": 169}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 62, "x": 4, "type": "mousemove", "message_id": 170}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 62, "x": 0, "type": "mousemove", "message_id": 171}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 62, "x": -1, "type": "mouseout", "message_id": 172}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 2, "type": "mouseover", "message_id": 174}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 2, "type": "mouseover", "message_id": 173}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 2, "type": "mousemove", "message_id": 175}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 2, "type": "mouseover", "message_id": 176}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 2, "type": "mouseover", "message_id": 177}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 2, "type": "mousemove", "message_id": 178}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 7, "type": "mouseover", "message_id": 179}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 7, "type": "mouseover", "message_id": 180}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 7, "type": "mousemove", "message_id": 181}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 57, "x": 12, "type": "mousemove", "message_id": 182}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 56, "x": 17, "type": "mousemove", "message_id": 183}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 55, "x": 22, "type": "mousemove", "message_id": 184}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 26, "type": "mousemove", "message_id": 185}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 29, "type": "mousemove", "message_id": 186}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 31, "type": "mousemove", "message_id": 187}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 32, "type": "mouseover", "message_id": 188}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 32, "type": "mouseover", "message_id": 189}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 32, "type": "mousemove", "message_id": 190}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 31, "type": "mousemove", "message_id": 191}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 31, "type": "mousemove", "message_id": 192}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 29, "type": "mouseover", "message_id": 193}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 29, "type": "mouseover", "message_id": 194}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 29, "type": "mousemove", "message_id": 195}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 28, "type": "mouseover", "message_id": 196}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 28, "type": "mouseover", "message_id": 197}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 52, "x": 28, "type": "mousemove", "message_id": 198}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 27, "type": "mousemove", "message_id": 199}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 26, "type": "mousemove", "message_id": 200}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 25, "type": "mousemove", "message_id": 201}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 25, "type": "mousemove", "message_id": 202}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 25, "type": "mousemove", "message_id": 203}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 25, "type": "mousemove", "message_id": 204}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 26, "type": "mousemove", "message_id": 205}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 28, "type": "mouseover", "message_id": 206}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 28, "type": "mouseover", "message_id": 207}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 28, "type": "mousemove", "message_id": 208}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 32, "type": "mousemove", "message_id": 209}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 39, "type": "mousemove", "message_id": 210}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 49, "type": "mousemove", "message_id": 211}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 55, "x": 65, "type": "mouseover", "message_id": 212}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 55, "x": 65, "type": "mouseover", "message_id": 213}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 55, "x": 65, "type": "mousemove", "message_id": 214}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 56, "x": 83, "type": "mouseover", "message_id": 215}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 56, "x": 83, "type": "mouseover", "message_id": 216}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 56, "x": 83, "type": "mousemove", "message_id": 217}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 106, "type": "mousemove", "message_id": 218}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 131, "type": "mousemove", "message_id": 219}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 62, "x": 160, "type": "mouseover", "message_id": 220}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 62, "x": 160, "type": "mouseover", "message_id": 221}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 62, "x": 160, "type": "mousemove", "message_id": 222}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 63, "x": 191, "type": "mousemove", "message_id": 223}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 66, "x": 224, "type": "mousemove", "message_id": 224}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 69, "x": 257, "type": "mousemove", "message_id": 225}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 70, "x": 292, "type": "mousemove", "message_id": 226}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 72, "x": 326, "type": "mousemove", "message_id": 227}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 74, "x": 357, "type": "mousemove", "message_id": 228}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 76, "x": 386, "type": "mousemove", "message_id": 229}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 77, "x": 413, "type": "mousemove", "message_id": 230}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 78, "x": 438, "type": "mouseover", "message_id": 231}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 78, "x": 438, "type": "mouseover", "message_id": 232}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 78, "x": 438, "type": "mousemove", "message_id": 233}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 79, "x": 455, "type": "mouseover", "message_id": 234}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 79, "x": 455, "type": "mouseover", "message_id": 235}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 79, "x": 455, "type": "mousemove", "message_id": 236}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 81, "x": 474, "type": "mouseover", "message_id": 237}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 81, "x": 474, "type": "mouseover", "message_id": 238}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 81, "x": 474, "type": "mousemove", "message_id": 239}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 82, "x": 493, "type": "mousemove", "message_id": 240}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 83, "x": 506, "type": "mouseover", "message_id": 241}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 83, "x": 506, "type": "mouseover", "message_id": 242}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 83, "x": 506, "type": "mousemove", "message_id": 243}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 83, "x": 515, "type": "mousemove", "message_id": 244}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 519, "type": "mousemove", "message_id": 245}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 521, "type": "mousemove", "message_id": 246}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 523, "type": "mousemove", "message_id": 247}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 525, "type": "mousemove", "message_id": 248}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 526, "type": "mouseover", "message_id": 249}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 526, "type": "mouseover", "message_id": 250}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 526, "type": "mousemove", "message_id": 251}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 527, "type": "mousemove", "message_id": 252}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 527, "type": "mousemove", "message_id": 253}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 527, "type": "mousemove", "message_id": 255}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 527, "type": "mousemove", "message_id": 254}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 528, "type": "mousemove", "message_id": 256}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 530, "type": "mouseover", "message_id": 257}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 530, "type": "mouseover", "message_id": 258}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 530, "type": "mousemove", "message_id": 259}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 533, "type": "mousemove", "message_id": 260}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 537, "type": "mousemove", "message_id": 261}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 544, "type": "mousemove", "message_id": 262}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 553, "type": "mousemove", "message_id": 263}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 86, "x": 566, "type": "mousemove", "message_id": 264}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 581, "type": "mousemove", "message_id": 265}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 596, "type": "mousemove", "message_id": 266}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 607, "type": "mousemove", "message_id": 267}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 614, "type": "mousemove", "message_id": 268}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 620, "type": "mousemove", "message_id": 269}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 624, "type": "mousemove", "message_id": 270}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 627, "type": "mousemove", "message_id": 271}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 629, "type": "mousemove", "message_id": 272}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 631, "type": "mousemove", "message_id": 273}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 631, "type": "mouseover", "message_id": 274}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 631, "type": "mouseover", "message_id": 275}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 631, "type": "mousemove", "message_id": 276}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 87, "x": 632, "type": "mousemove", "message_id": 277}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 86, "x": 632, "type": "mousemove", "message_id": 279}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 86, "x": 633, "type": "mousemove", "message_id": 280}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 86, "x": 632, "type": "mousemove", "message_id": 278}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 86, "x": 634, "type": "mousemove", "message_id": 281}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 635, "type": "mousemove", "message_id": 282}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 636, "type": "mousemove", "message_id": 283}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 636, "type": "mousemove", "message_id": 284}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 637, "type": "mousemove", "message_id": 285}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 637, "type": "mousemove", "message_id": 286}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 637, "type": "mousemove", "message_id": 287}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 637, "type": "mousemove", "message_id": 288}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 637, "type": "mousemove", "message_id": 289}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 86, "x": 637, "type": "mousemove", "message_id": 290}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 89, "x": 638, "type": "mousemove", "message_id": 291}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 92, "x": 638, "type": "mousemove", "message_id": 292}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 98, "x": 638, "type": "mousemove", "message_id": 293}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 107, "x": 640, "type": "mouseover", "message_id": 294}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 107, "x": 640, "type": "mouseover", "message_id": 295}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 107, "x": 640, "type": "mousemove", "message_id": 296}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 121, "x": 643, "type": "mousemove", "message_id": 297}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 139, "x": 648, "type": "mousemove", "message_id": 298}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 159, "x": 653, "type": "mousemove", "message_id": 299}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 181, "x": 655, "type": "mousemove", "message_id": 300}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 205, "x": 655, "type": "mousemove", "message_id": 301}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 231, "x": 655, "type": "mousemove", "message_id": 302}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 256, "x": 656, "type": "mousemove", "message_id": 303}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 284, "x": 657, "type": "mousemove", "message_id": 304}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 316, "x": 658, "type": "mousemove", "message_id": 305}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 352, "x": 658, "type": "mousemove", "message_id": 306}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 391, "x": 657, "type": "mousemove", "message_id": 307}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 430, "x": 656, "type": "mousemove", "message_id": 308}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 469, "x": 655, "type": "mousemove", "message_id": 309}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 507, "x": 652, "type": "mousemove", "message_id": 310}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 543, "x": 649, "type": "mousemove", "message_id": 311}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 573, "x": 644, "type": "mousemove", "message_id": 312}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 599, "x": 641, "type": "mousemove", "message_id": 313}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 623, "x": 639, "type": "mousemove", "message_id": 314}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 644, "x": 639, "type": "mousemove", "message_id": 315}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 663, "x": 640, "type": "mousemove", "message_id": 316}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 679, "x": 641, "type": "mousemove", "message_id": 317}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 693, "x": 642, "type": "mouseover", "message_id": 318}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 693, "x": 642, "type": "mouseover", "message_id": 319}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 693, "x": 642, "type": "mousemove", "message_id": 320}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 703, "x": 643, "type": "mousemove", "message_id": 321}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 710, "x": 644, "type": "mousemove", "message_id": 322}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 713, "x": 644, "type": "mousemove", "message_id": 323}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 714, "x": 644, "type": "mousemove", "message_id": 324}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 715, "x": 644, "type": "mousemove", "message_id": 325}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 715, "x": 644, "type": "mousemove", "message_id": 326}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 715, "x": 644, "type": "mousemove", "message_id": 327}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 715, "x": 644, "type": "mousemove", "message_id": 328}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 715, "x": 643, "type": "mousemove", "message_id": 329}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 716, "x": 643, "type": "mousemove", "message_id": 330}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 716, "x": 643, "type": "mousemove", "message_id": 331}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 643, "type": "mousemove", "message_id": 332}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 718, "x": 643, "type": "mousemove", "message_id": 333}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 718, "x": 643, "type": "mousemove", "message_id": 334}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 718, "x": 642, "type": "mousemove", "message_id": 335}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 718, "x": 642, "type": "mousemove", "message_id": 336}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 718, "x": 640, "type": "mouseover", "message_id": 338}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 718, "x": 640, "type": "mouseover", "message_id": 337}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 718, "x": 640, "type": "mousemove", "message_id": 339}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 718, "x": 637, "type": "mousemove", "message_id": 340}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 718, "x": 632, "type": "mousemove", "message_id": 341}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 718, "x": 623, "type": "mousemove", "message_id": 342}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 718, "x": 611, "type": "mousemove", "message_id": 343}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 594, "type": "mouseover", "message_id": 344}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 594, "type": "mouseover", "message_id": 345}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 594, "type": "mousemove", "message_id": 346}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 574, "type": "mousemove", "message_id": 347}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 553, "type": "mousemove", "message_id": 348}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 528, "type": "mousemove", "message_id": 349}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 495, "type": "mousemove", "message_id": 350}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 716, "x": 456, "type": "mousemove", "message_id": 351}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 714, "x": 394, "type": "mousemove", "message_id": 352}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 712, "x": 338, "type": "mousemove", "message_id": 353}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 710, "x": 301, "type": "mousemove", "message_id": 354}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 708, "x": 251, "type": "mousemove", "message_id": 355}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 708, "x": 210, "type": "mousemove", "message_id": 356}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 709, "x": 179, "type": "mousemove", "message_id": 357}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 710, "x": 162, "type": "mousemove", "message_id": 358}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 712, "x": 141, "type": "mousemove", "message_id": 359}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 712, "x": 124, "type": "mousemove", "message_id": 360}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 713, "x": 110, "type": "mouseover", "message_id": 361}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 713, "x": 110, "type": "mouseover", "message_id": 362}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 713, "x": 110, "type": "mousemove", "message_id": 363}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 714, "x": 100, "type": "mousemove", "message_id": 364}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 714, "x": 95, "type": "mousemove", "message_id": 365}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 715, "x": 91, "type": "mousemove", "message_id": 366}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 716, "x": 90, "type": "mouseover", "message_id": 368}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 716, "x": 90, "type": "mouseover", "message_id": 367}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 716, "x": 90, "type": "mousemove", "message_id": 369}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 716, "x": 89, "type": "mousemove", "message_id": 370}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 716, "x": 89, "type": "mousemove", "message_id": 371}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 88, "type": "mousemove", "message_id": 372}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 87, "type": "mousemove", "message_id": 373}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 86, "type": "mousemove", "message_id": 374}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 84, "type": "mouseover", "message_id": 375}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 84, "type": "mouseover", "message_id": 376}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 84, "type": "mousemove", "message_id": 377}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 83, "type": "mouseover", "message_id": 378}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 83, "type": "mouseover", "message_id": 379}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 83, "type": "mousemove", "message_id": 380}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 81, "type": "mouseover", "message_id": 381}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 81, "type": "mouseover", "message_id": 382}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 81, "type": "mousemove", "message_id": 383}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 80, "type": "mouseover", "message_id": 384}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 80, "type": "mouseover", "message_id": 385}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 80, "type": "mousemove", "message_id": 386}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 80, "type": "mousemove", "message_id": 387}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 80, "type": "mousemove", "message_id": 388}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 80, "type": "mousemove", "message_id": 389}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 80, "type": "mousemove", "message_id": 390}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 80, "type": "mousemove", "message_id": 391}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 80, "type": "mousemove", "message_id": 392}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 80, "type": "mousemove", "message_id": 393}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 717, "x": 80, "type": "mousemove", "message_id": 394}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 716, "x": 80, "type": "mousemove", "message_id": 395}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 716, "x": 79, "type": "mousemove", "message_id": 396}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 715, "x": 79, "type": "mousemove", "message_id": 397}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 714, "x": 78, "type": "mousemove", "message_id": 398}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 712, "x": 78, "type": "mousemove", "message_id": 399}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 709, "x": 77, "type": "mousemove", "message_id": 400}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 704, "x": 77, "type": "mousemove", "message_id": 401}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 697, "x": 76, "type": "mousemove", "message_id": 402}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 687, "x": 75, "type": "mousemove", "message_id": 403}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 660, "x": 76, "type": "mousemove", "message_id": 405}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 675, "x": 75, "type": "mousemove", "message_id": 404}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 644, "x": 79, "type": "mouseover", "message_id": 406}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 644, "x": 79, "type": "mouseover", "message_id": 407}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 644, "x": 79, "type": "mousemove", "message_id": 408}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 623, "x": 83, "type": "mousemove", "message_id": 409}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 599, "x": 88, "type": "mousemove", "message_id": 410}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 570, "x": 94, "type": "mousemove", "message_id": 411}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 538, "x": 101, "type": "mousemove", "message_id": 412}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 503, "x": 108, "type": "mousemove", "message_id": 413}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 467, "x": 114, "type": "mousemove", "message_id": 414}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 432, "x": 121, "type": "mousemove", "message_id": 415}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 400, "x": 126, "type": "mousemove", "message_id": 416}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 367, "x": 133, "type": "mousemove", "message_id": 417}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 336, "x": 139, "type": "mousemove", "message_id": 418}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 305, "x": 145, "type": "mousemove", "message_id": 419}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 276, "x": 150, "type": "mousemove", "message_id": 420}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 251, "x": 154, "type": "mousemove", "message_id": 421}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 228, "x": 156, "type": "mouseover", "message_id": 422}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 228, "x": 156, "type": "mouseover", "message_id": 423}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 228, "x": 156, "type": "mousemove", "message_id": 424}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 208, "x": 157, "type": "mouseover", "message_id": 425}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 208, "x": 157, "type": "mouseover", "message_id": 426}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 208, "x": 157, "type": "mousemove", "message_id": 427}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 191, "x": 156, "type": "mouseover", "message_id": 428}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 191, "x": 156, "type": "mouseover", "message_id": 429}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 191, "x": 156, "type": "mousemove", "message_id": 430}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 176, "x": 155, "type": "mouseover", "message_id": 431}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 176, "x": 155, "type": "mouseover", "message_id": 432}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 176, "x": 155, "type": "mousemove", "message_id": 433}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 163, "x": 153, "type": "mouseover", "message_id": 434}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 152, "x": 150, "type": "mousemove", "message_id": 437}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 163, "x": 153, "type": "mouseover", "message_id": 435}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 163, "x": 153, "type": "mousemove", "message_id": 436}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 141, "x": 146, "type": "mousemove", "message_id": 438}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 132, "x": 141, "type": "mousemove", "message_id": 439}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 125, "x": 137, "type": "mousemove", "message_id": 440}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 115, "x": 131, "type": "mousemove", "message_id": 442}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 119, "x": 134, "type": "mousemove", "message_id": 441}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 114, "x": 130, "type": "mouseover", "message_id": 443}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 114, "x": 130, "type": "mouseover", "message_id": 444}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 114, "x": 130, "type": "mousemove", "message_id": 445}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 114, "x": 130, "type": "mousemove", "message_id": 446}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 114, "x": 130, "type": "mousemove", "message_id": 447}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 114, "x": 129, "type": "mousemove", "message_id": 448}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 113, "x": 129, "type": "mousemove", "message_id": 449}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 113, "x": 128, "type": "mousemove", "message_id": 450}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 113, "x": 128, "type": "mousemove", "message_id": 451}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 113, "x": 128, "type": "mousemove", "message_id": 452}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 113, "x": 127, "type": "mousemove", "message_id": 453}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 113, "x": 128, "type": "mousemove", "message_id": 454}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 114, "x": 130, "type": "mouseover", "message_id": 455}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 114, "x": 130, "type": "mouseover", "message_id": 456}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 114, "x": 130, "type": "mousemove", "message_id": 457}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 115, "x": 136, "type": "mousemove", "message_id": 458}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 116, "x": 144, "type": "mousemove", "message_id": 459}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 118, "x": 155, "type": "mouseover", "message_id": 460}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 118, "x": 155, "type": "mouseover", "message_id": 461}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 118, "x": 155, "type": "mousemove", "message_id": 462}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 121, "x": 169, "type": "mousemove", "message_id": 463}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 124, "x": 184, "type": "mousemove", "message_id": 464}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 127, "x": 198, "type": "mousemove", "message_id": 465}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 131, "x": 216, "type": "mousemove", "message_id": 466}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 135, "x": 234, "type": "mousemove", "message_id": 467}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 140, "x": 249, "type": "mousemove", "message_id": 468}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 144, "x": 261, "type": "mousemove", "message_id": 469}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 148, "x": 270, "type": "mousemove", "message_id": 470}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 151, "x": 275, "type": "mousemove", "message_id": 471}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 153, "x": 277, "type": "mousemove", "message_id": 472}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 155, "x": 278, "type": "mouseover", "message_id": 473}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 155, "x": 278, "type": "mouseover", "message_id": 474}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 155, "x": 278, "type": "mousemove", "message_id": 475}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 156, "x": 278, "type": "mousemove", "message_id": 476}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 159, "x": 278, "type": "mousemove", "message_id": 477}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 161, "x": 278, "type": "mousemove", "message_id": 478}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 164, "x": 278, "type": "mousemove", "message_id": 479}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 167, "x": 279, "type": "mousemove", "message_id": 480}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 170, "x": 280, "type": "mousemove", "message_id": 481}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 173, "x": 280, "type": "mousemove", "message_id": 482}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 174, "x": 280, "type": "mousemove", "message_id": 483}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 176, "x": 280, "type": "mousemove", "message_id": 484}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 177, "x": 280, "type": "mousemove", "message_id": 485}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 178, "x": 281, "type": "mousemove", "message_id": 486}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 180, "x": 281, "type": "mousemove", "message_id": 487}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 182, "x": 282, "type": "mousemove", "message_id": 488}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 183, "x": 282, "type": "mousemove", "message_id": 489}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 184, "x": 282, "type": "mousemove", "message_id": 490}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 185, "x": 282, "type": "mousemove", "message_id": 491}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 185, "x": 282, "type": "mousemove", "message_id": 492}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 185, "x": 282, "type": "mousemove", "message_id": 493}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 186, "x": 282, "type": "mousemove", "message_id": 494}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 186, "x": 283, "type": "mousemove", "message_id": 495}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 186, "x": 283, "type": "mousemove", "message_id": 496}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 187, "x": 283, "type": "mousemove", "message_id": 497}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 188, "x": 283, "type": "mousemove", "message_id": 498}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 188, "x": 283, "type": "mousemove", "message_id": 499}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 189, "x": 283, "type": "mousemove", "message_id": 500}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 189, "x": 283, "type": "mousemove", "message_id": 501}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 189, "x": 283, "type": "mousemove", "message_id": 502}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 503}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 504}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 506}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 190, "x": 283, "type": "mousemove", "message_id": 505}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 190, "x": 283, "type": "mousemove", "message_id": 507}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 508}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 190, "x": 283, "type": "mousemove", "message_id": 509}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -10, "delta": -10, "type": "wheel", "message_id": 510}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 190, "x": 283, "type": "mousemove", "message_id": 511}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -11, "delta": -11, "type": "wheel", "message_id": 512}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 190, "x": 283, "type": "mousemove", "message_id": 513}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 514}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 190, "x": 283, "type": "mousemove", "message_id": 515}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -14, "delta": -14, "type": "wheel", "message_id": 516}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 191, "x": 283, "type": "mousemove", "message_id": 517}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -12, "delta": -12, "type": "wheel", "message_id": 518}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 191, "x": 283, "type": "mousemove", "message_id": 519}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -11, "delta": -11, "type": "wheel", "message_id": 520}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 191, "x": 283, "type": "mousemove", "message_id": 521}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -10, "delta": -10, "type": "wheel", "message_id": 522}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 191, "x": 283, "type": "mousemove", "message_id": 523}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 524}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 192, "x": 283, "type": "mousemove", "message_id": 525}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 526}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 192, "x": 283, "type": "mousemove", "message_id": 527}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 528}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 192, "x": 283, "type": "mousemove", "message_id": 529}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 530}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 192, "x": 283, "type": "mousemove", "message_id": 531}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 532}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 192, "x": 283, "type": "mousemove", "message_id": 533}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 534}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 535}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 536}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 537}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 538}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 539}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 540}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 541}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 542}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 543}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 5, "delta": 5, "type": "wheel", "message_id": 544}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 545}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 7, "delta": 7, "type": "wheel", "message_id": 546}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 14, "delta": 14, "type": "wheel", "message_id": 547}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 13, "delta": 13, "type": "wheel", "message_id": 548}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 15, "delta": 15, "type": "wheel", "message_id": 549}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 17, "delta": 17, "type": "wheel", "message_id": 550}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 3, "deltaY": 12, "delta": 12, "type": "wheel", "message_id": 551}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 3, "deltaY": 9, "delta": 9, "type": "wheel", "message_id": 552}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 5, "deltaY": 17, "delta": 17, "type": "wheel", "message_id": 553}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 10, "delta": 10, "type": "wheel", "message_id": 554}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 12, "delta": 12, "type": "wheel", "message_id": 555}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 11, "delta": 11, "type": "wheel", "message_id": 556}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 10, "delta": 10, "type": "wheel", "message_id": 557}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 7, "delta": 7, "type": "wheel", "message_id": 558}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 5, "delta": 5, "type": "wheel", "message_id": 559}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 560}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 561}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 562}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 563}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 564}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 565}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 567}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 566}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 568}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 569}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 570}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 571}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 572}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -8, "delta": -8, "type": "wheel", "message_id": 573}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 574}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -11, "delta": -11, "type": "wheel", "message_id": 575}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -11, "delta": -11, "type": "wheel", "message_id": 576}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -11, "delta": -11, "type": "wheel", "message_id": 577}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -13, "delta": -13, "type": "wheel", "message_id": 578}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -10, "delta": -10, "type": "wheel", "message_id": 579}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 580}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 581}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -4, "deltaY": -8, "delta": -8, "type": "wheel", "message_id": 582}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 583}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 584}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 585}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 586}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 587}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 588}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 589}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 590}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 591}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 592}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 593}
+{"originalEvent": {"metaKey": false}, "sender": 3914, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 594}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 192, "x": 283, "type": "mousemove", "message_id": 595}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 190, "x": 283, "type": "mousemove", "message_id": 596}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 187, "x": 281, "type": "mouseover", "message_id": 597}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 187, "x": 281, "type": "mouseover", "message_id": 598}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 187, "x": 281, "type": "mousemove", "message_id": 599}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 183, "x": 280, "type": "mouseover", "message_id": 600}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 183, "x": 280, "type": "mouseover", "message_id": 601}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 183, "x": 280, "type": "mousemove", "message_id": 602}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 178, "x": 277, "type": "mouseover", "message_id": 603}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 178, "x": 277, "type": "mouseover", "message_id": 604}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 178, "x": 277, "type": "mousemove", "message_id": 605}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 172, "x": 272, "type": "mousemove", "message_id": 606}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 165, "x": 267, "type": "mousemove", "message_id": 607}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 158, "x": 260, "type": "mousemove", "message_id": 608}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 150, "x": 253, "type": "mousemove", "message_id": 609}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 143, "x": 246, "type": "mousemove", "message_id": 610}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 136, "x": 239, "type": "mousemove", "message_id": 611}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 127, "x": 229, "type": "mousemove", "message_id": 612}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 120, "x": 221, "type": "mousemove", "message_id": 613}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 111, "x": 213, "type": "mousemove", "message_id": 614}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 104, "x": 206, "type": "mousemove", "message_id": 615}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 99, "x": 202, "type": "mousemove", "message_id": 616}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 94, "x": 199, "type": "mousemove", "message_id": 617}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 91, "x": 197, "type": "mousemove", "message_id": 618}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 88, "x": 196, "type": "mouseover", "message_id": 619}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 88, "x": 196, "type": "mouseover", "message_id": 620}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 88, "x": 196, "type": "mousemove", "message_id": 621}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 85, "x": 195, "type": "mousemove", "message_id": 622}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 83, "x": 194, "type": "mousemove", "message_id": 623}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 81, "x": 194, "type": "mousemove", "message_id": 624}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 79, "x": 194, "type": "mousemove", "message_id": 625}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 77, "x": 194, "type": "mousemove", "message_id": 626}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 76, "x": 195, "type": "mousemove", "message_id": 627}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 75, "x": 195, "type": "mousemove", "message_id": 628}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 75, "x": 196, "type": "mousemove", "message_id": 629}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 74, "x": 196, "type": "mousemove", "message_id": 630}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 74, "x": 196, "type": "mousemove", "message_id": 631}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 73, "x": 196, "type": "mousemove", "message_id": 632}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 72, "x": 197, "type": "mousemove", "message_id": 633}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 71, "x": 197, "type": "mousemove", "message_id": 634}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 70, "x": 197, "type": "mousemove", "message_id": 635}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 69, "x": 197, "type": "mousemove", "message_id": 636}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 68, "x": 197, "type": "mousemove", "message_id": 637}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 68, "x": 197, "type": "mousemove", "message_id": 638}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 67, "x": 197, "type": "mousemove", "message_id": 639}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 66, "x": 197, "type": "mousemove", "message_id": 640}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 64, "x": 197, "type": "mousemove", "message_id": 641}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 63, "x": 196, "type": "mousemove", "message_id": 642}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 62, "x": 196, "type": "mousemove", "message_id": 643}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 196, "type": "mousemove", "message_id": 644}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 60, "x": 196, "type": "mousemove", "message_id": 645}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 195, "type": "mousemove", "message_id": 646}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 195, "type": "mousemove", "message_id": 647}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 57, "x": 195, "type": "mousemove", "message_id": 648}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 56, "x": 194, "type": "mousemove", "message_id": 649}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 55, "x": 194, "type": "mousemove", "message_id": 650}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 55, "x": 194, "type": "mousemove", "message_id": 651}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 194, "type": "mousemove", "message_id": 652}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 194, "type": "mousemove", "message_id": 653}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 54, "x": 194, "type": "mousemove", "message_id": 654}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 53, "x": 194, "type": "mousemove", "message_id": 655}
diff --git a/recordings/test_mouse_exit_enter.replay b/recordings/test_mouse_exit_enter.replay
new file mode 100644
index 0000000000..88ef91d588
--- /dev/null
+++ b/recordings/test_mouse_exit_enter.replay
@@ -0,0 +1,423 @@
+{"scale": 1, "sender": 5777, "msg_type": "ViewPort", "panY": 0, "panX": 0, "message_id": 3}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 52, "x": 178, "type": "mousemove", "message_id": 4}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 53, "x": 178, "type": "mousemove", "message_id": 5}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 54, "x": 178, "type": "mousemove", "message_id": 6}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 55, "x": 178, "type": "mousemove", "message_id": 7}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 56, "x": 178, "type": "mousemove", "message_id": 8}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 57, "x": 178, "type": "mousemove", "message_id": 9}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 60, "x": 178, "type": "mousemove", "message_id": 10}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 61, "x": 178, "type": "mousemove", "message_id": 11}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 64, "x": 178, "type": "mousemove", "message_id": 12}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 66, "x": 179, "type": "mousemove", "message_id": 13}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 69, "x": 180, "type": "mousemove", "message_id": 14}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 72, "x": 182, "type": "mouseover", "message_id": 15}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 72, "x": 182, "type": "mouseover", "message_id": 16}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 75, "x": 184, "type": "mousemove", "message_id": 18}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 72, "x": 182, "type": "mousemove", "message_id": 17}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 78, "x": 186, "type": "mousemove", "message_id": 19}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 81, "x": 188, "type": "mousemove", "message_id": 20}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 84, "x": 191, "type": "mouseover", "message_id": 21}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 84, "x": 191, "type": "mouseover", "message_id": 22}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 87, "x": 194, "type": "mousemove", "message_id": 24}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 84, "x": 191, "type": "mousemove", "message_id": 23}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 90, "x": 197, "type": "mousemove", "message_id": 25}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 96, "x": 203, "type": "mousemove", "message_id": 27}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 99, "x": 208, "type": "mousemove", "message_id": 28}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 93, "x": 200, "type": "mousemove", "message_id": 26}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 102, "x": 211, "type": "mousemove", "message_id": 29}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 105, "x": 215, "type": "mousemove", "message_id": 30}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 108, "x": 219, "type": "mousemove", "message_id": 31}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 111, "x": 222, "type": "mousemove", "message_id": 32}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 113, "x": 226, "type": "mouseover", "message_id": 33}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 113, "x": 226, "type": "mouseover", "message_id": 34}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 113, "x": 226, "type": "mousemove", "message_id": 35}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 115, "x": 229, "type": "mousemove", "message_id": 36}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 117, "x": 232, "type": "mousemove", "message_id": 37}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 118, "x": 234, "type": "mouseover", "message_id": 38}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 118, "x": 234, "type": "mousemove", "message_id": 40}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 118, "x": 234, "type": "mouseover", "message_id": 39}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 121, "x": 238, "type": "mouseover", "message_id": 41}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 121, "x": 238, "type": "mouseover", "message_id": 42}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 121, "x": 238, "type": "mousemove", "message_id": 43}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 123, "x": 241, "type": "mouseover", "message_id": 44}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 123, "x": 241, "type": "mouseover", "message_id": 45}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 123, "x": 241, "type": "mousemove", "message_id": 46}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 125, "x": 244, "type": "mousemove", "message_id": 47}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 126, "x": 247, "type": "mouseover", "message_id": 48}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 126, "x": 247, "type": "mousemove", "message_id": 50}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 126, "x": 247, "type": "mouseover", "message_id": 49}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 128, "x": 250, "type": "mouseover", "message_id": 52}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 128, "x": 250, "type": "mouseover", "message_id": 51}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 128, "x": 250, "type": "mousemove", "message_id": 53}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 129, "x": 254, "type": "mouseover", "message_id": 54}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 129, "x": 254, "type": "mouseover", "message_id": 55}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 129, "x": 254, "type": "mousemove", "message_id": 56}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 130, "x": 257, "type": "mousemove", "message_id": 57}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 132, "x": 260, "type": "mouseover", "message_id": 59}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 132, "x": 260, "type": "mouseover", "message_id": 58}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 133, "x": 264, "type": "mouseover", "message_id": 61}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 132, "x": 260, "type": "mousemove", "message_id": 60}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 133, "x": 264, "type": "mouseover", "message_id": 62}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 133, "x": 264, "type": "mousemove", "message_id": 63}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 135, "x": 267, "type": "mouseover", "message_id": 64}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 135, "x": 267, "type": "mouseover", "message_id": 65}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 135, "x": 267, "type": "mousemove", "message_id": 66}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 136, "x": 272, "type": "mouseover", "message_id": 67}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 136, "x": 272, "type": "mouseover", "message_id": 68}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 136, "x": 272, "type": "mousemove", "message_id": 69}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 138, "x": 275, "type": "mouseover", "message_id": 70}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 138, "x": 275, "type": "mouseover", "message_id": 71}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 138, "x": 275, "type": "mousemove", "message_id": 72}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 139, "x": 280, "type": "mouseover", "message_id": 73}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 139, "x": 280, "type": "mouseover", "message_id": 74}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 139, "x": 280, "type": "mousemove", "message_id": 75}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 141, "x": 285, "type": "mouseover", "message_id": 76}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 141, "x": 285, "type": "mouseover", "message_id": 77}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 141, "x": 285, "type": "mousemove", "message_id": 78}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 143, "x": 290, "type": "mousemove", "message_id": 79}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 145, "x": 295, "type": "mousemove", "message_id": 80}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 148, "x": 301, "type": "mouseover", "message_id": 81}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 148, "x": 301, "type": "mouseover", "message_id": 82}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 148, "x": 301, "type": "mousemove", "message_id": 83}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 151, "x": 307, "type": "mousemove", "message_id": 84}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 156, "x": 318, "type": "mousemove", "message_id": 85}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 159, "x": 326, "type": "mousemove", "message_id": 86}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 164, "x": 336, "type": "mousemove", "message_id": 87}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 168, "x": 346, "type": "mousemove", "message_id": 88}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 173, "x": 359, "type": "mousemove", "message_id": 89}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 177, "x": 372, "type": "mousemove", "message_id": 90}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 182, "x": 386, "type": "mousemove", "message_id": 91}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 187, "x": 402, "type": "mousemove", "message_id": 92}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 191, "x": 417, "type": "mousemove", "message_id": 93}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 195, "x": 432, "type": "mouseover", "message_id": 94}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 195, "x": 432, "type": "mouseover", "message_id": 95}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 195, "x": 432, "type": "mousemove", "message_id": 96}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 198, "x": 445, "type": "mousemove", "message_id": 97}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 200, "x": 451, "type": "mouseover", "message_id": 98}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 200, "x": 451, "type": "mouseover", "message_id": 99}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 200, "x": 451, "type": "mousemove", "message_id": 100}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 203, "x": 462, "type": "mouseover", "message_id": 101}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 203, "x": 462, "type": "mouseover", "message_id": 102}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 203, "x": 462, "type": "mousemove", "message_id": 103}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 205, "x": 471, "type": "mousemove", "message_id": 104}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 205, "x": 471, "type": "mouseover", "message_id": 105}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 205, "x": 471, "type": "mouseover", "message_id": 106}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 205, "x": 471, "type": "mousemove", "message_id": 107}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 205, "x": 474, "type": "mouseover", "message_id": 108}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 205, "x": 474, "type": "mouseover", "message_id": 109}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 207, "x": 476, "type": "mouseover", "message_id": 111}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 205, "x": 474, "type": "mousemove", "message_id": 110}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 207, "x": 476, "type": "mouseover", "message_id": 112}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 207, "x": 476, "type": "mousemove", "message_id": 113}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 208, "x": 479, "type": "mouseover", "message_id": 114}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 208, "x": 479, "type": "mouseover", "message_id": 115}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 208, "x": 479, "type": "mousemove", "message_id": 116}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 210, "x": 482, "type": "mouseover", "message_id": 118}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 210, "x": 482, "type": "mouseover", "message_id": 117}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 210, "x": 482, "type": "mousemove", "message_id": 119}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 214, "x": 491, "type": "mousemove", "message_id": 121}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 212, "x": 486, "type": "mousemove", "message_id": 120}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 216, "x": 497, "type": "mouseover", "message_id": 122}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 216, "x": 497, "type": "mouseover", "message_id": 123}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 216, "x": 497, "type": "mousemove", "message_id": 124}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 218, "x": 502, "type": "mouseover", "message_id": 126}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 218, "x": 502, "type": "mouseover", "message_id": 125}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 218, "x": 502, "type": "mousemove", "message_id": 127}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 219, "x": 507, "type": "mouseover", "message_id": 128}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 219, "x": 507, "type": "mousemove", "message_id": 130}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 219, "x": 507, "type": "mouseover", "message_id": 129}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 220, "x": 513, "type": "mousemove", "message_id": 131}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 222, "x": 523, "type": "mousemove", "message_id": 133}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 221, "x": 518, "type": "mousemove", "message_id": 132}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 224, "x": 539, "type": "mousemove", "message_id": 136}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 222, "x": 528, "type": "mousemove", "message_id": 134}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 223, "x": 533, "type": "mousemove", "message_id": 135}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 224, "x": 545, "type": "mousemove", "message_id": 137}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 224, "x": 550, "type": "mousemove", "message_id": 138}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 225, "x": 555, "type": "mousemove", "message_id": 139}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 225, "x": 559, "type": "mousemove", "message_id": 140}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 225, "x": 564, "type": "mousemove", "message_id": 141}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 225, "x": 568, "type": "mousemove", "message_id": 142}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 226, "x": 572, "type": "mousemove", "message_id": 143}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 226, "x": 576, "type": "mousemove", "message_id": 144}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 227, "x": 583, "type": "mousemove", "message_id": 146}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 227, "x": 579, "type": "mousemove", "message_id": 145}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 228, "x": 587, "type": "mousemove", "message_id": 147}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 229, "x": 595, "type": "mousemove", "message_id": 149}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 228, "x": 590, "type": "mousemove", "message_id": 148}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 231, "x": 599, "type": "mouseover", "message_id": 150}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 231, "x": 599, "type": "mouseover", "message_id": 151}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 231, "x": 599, "type": "mousemove", "message_id": 152}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 232, "x": 603, "type": "mouseover", "message_id": 153}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 232, "x": 603, "type": "mouseover", "message_id": 154}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 232, "x": 603, "type": "mousemove", "message_id": 155}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 234, "x": 608, "type": "mouseover", "message_id": 156}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 234, "x": 608, "type": "mouseover", "message_id": 157}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 234, "x": 608, "type": "mousemove", "message_id": 158}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 236, "x": 613, "type": "mousemove", "message_id": 159}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 237, "x": 617, "type": "mouseover", "message_id": 160}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 237, "x": 617, "type": "mouseover", "message_id": 161}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 237, "x": 617, "type": "mousemove", "message_id": 162}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 239, "x": 620, "type": "mouseover", "message_id": 164}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 239, "x": 620, "type": "mouseover", "message_id": 163}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 239, "x": 620, "type": "mousemove", "message_id": 165}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 240, "x": 625, "type": "mouseover", "message_id": 166}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 240, "x": 625, "type": "mouseover", "message_id": 167}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 240, "x": 625, "type": "mousemove", "message_id": 168}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 241, "x": 628, "type": "mousemove", "message_id": 169}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 243, "x": 633, "type": "mouseover", "message_id": 170}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 243, "x": 633, "type": "mouseover", "message_id": 171}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 243, "x": 633, "type": "mousemove", "message_id": 172}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 243, "x": 636, "type": "mouseover", "message_id": 173}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 243, "x": 636, "type": "mouseover", "message_id": 174}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 243, "x": 636, "type": "mousemove", "message_id": 175}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 244, "x": 641, "type": "mousemove", "message_id": 176}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 246, "x": 649, "type": "mousemove", "message_id": 178}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 245, "x": 645, "type": "mousemove", "message_id": 177}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 247, "x": 654, "type": "mousemove", "message_id": 179}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 247, "x": 659, "type": "mousemove", "message_id": 180}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 248, "x": 664, "type": "mousemove", "message_id": 181}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 249, "x": 670, "type": "mousemove", "message_id": 182}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 250, "x": 677, "type": "mousemove", "message_id": 183}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 251, "x": 683, "type": "mousemove", "message_id": 184}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 252, "x": 688, "type": "mousemove", "message_id": 185}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 254, "x": 700, "type": "mousemove", "message_id": 187}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 253, "x": 695, "type": "mousemove", "message_id": 186}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 254, "x": 706, "type": "mousemove", "message_id": 188}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 255, "x": 711, "type": "mousemove", "message_id": 189}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 255, "x": 716, "type": "mousemove", "message_id": 190}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 256, "x": 720, "type": "mouseout", "message_id": 191}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 406, "x": 718, "type": "mouseover", "message_id": 192}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 406, "x": 718, "type": "mouseover", "message_id": 193}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 406, "x": 718, "type": "mousemove", "message_id": 194}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 406, "x": 718, "type": "mouseover", "message_id": 195}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 406, "x": 718, "type": "mouseover", "message_id": 196}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 406, "x": 718, "type": "mousemove", "message_id": 197}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 408, "x": 714, "type": "mouseover", "message_id": 198}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 408, "x": 714, "type": "mouseover", "message_id": 199}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 408, "x": 714, "type": "mousemove", "message_id": 200}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 410, "x": 710, "type": "mousemove", "message_id": 201}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 412, "x": 705, "type": "mousemove", "message_id": 202}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 413, "x": 701, "type": "mouseover", "message_id": 203}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 413, "x": 701, "type": "mouseover", "message_id": 204}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 413, "x": 701, "type": "mousemove", "message_id": 205}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 415, "x": 697, "type": "mouseover", "message_id": 206}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 415, "x": 697, "type": "mouseover", "message_id": 207}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 415, "x": 697, "type": "mousemove", "message_id": 208}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 415, "x": 695, "type": "mouseover", "message_id": 209}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 415, "x": 695, "type": "mouseover", "message_id": 210}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 415, "x": 695, "type": "mousemove", "message_id": 211}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 417, "x": 691, "type": "mouseover", "message_id": 212}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 417, "x": 691, "type": "mouseover", "message_id": 213}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 417, "x": 691, "type": "mousemove", "message_id": 214}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 418, "x": 688, "type": "mouseover", "message_id": 215}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 418, "x": 688, "type": "mouseover", "message_id": 216}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 418, "x": 688, "type": "mousemove", "message_id": 217}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 418, "x": 685, "type": "mousemove", "message_id": 218}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 419, "x": 682, "type": "mousemove", "message_id": 219}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 420, "x": 680, "type": "mousemove", "message_id": 220}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 421, "x": 678, "type": "mousemove", "message_id": 221}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 423, "x": 674, "type": "mouseover", "message_id": 222}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 423, "x": 674, "type": "mouseover", "message_id": 223}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 423, "x": 674, "type": "mousemove", "message_id": 224}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 423, "x": 672, "type": "mouseover", "message_id": 225}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 423, "x": 672, "type": "mouseover", "message_id": 226}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 423, "x": 672, "type": "mousemove", "message_id": 227}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 425, "x": 669, "type": "mouseover", "message_id": 228}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 425, "x": 669, "type": "mouseover", "message_id": 229}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 425, "x": 669, "type": "mousemove", "message_id": 230}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 426, "x": 666, "type": "mouseover", "message_id": 232}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 426, "x": 666, "type": "mouseover", "message_id": 231}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 426, "x": 666, "type": "mousemove", "message_id": 233}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 427, "x": 663, "type": "mousemove", "message_id": 234}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 428, "x": 660, "type": "mousemove", "message_id": 235}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 429, "x": 659, "type": "mouseover", "message_id": 236}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 429, "x": 659, "type": "mouseover", "message_id": 237}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 429, "x": 659, "type": "mousemove", "message_id": 238}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 430, "x": 654, "type": "mouseover", "message_id": 239}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 430, "x": 654, "type": "mouseover", "message_id": 240}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 430, "x": 654, "type": "mousemove", "message_id": 241}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 431, "x": 651, "type": "mousemove", "message_id": 242}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 432, "x": 649, "type": "mousemove", "message_id": 243}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 433, "x": 647, "type": "mousemove", "message_id": 244}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 434, "x": 644, "type": "mousemove", "message_id": 245}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 435, "x": 640, "type": "mousemove", "message_id": 246}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 436, "x": 637, "type": "mousemove", "message_id": 247}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 437, "x": 634, "type": "mousemove", "message_id": 248}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 438, "x": 631, "type": "mousemove", "message_id": 249}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 439, "x": 627, "type": "mousemove", "message_id": 250}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 439, "x": 624, "type": "mousemove", "message_id": 251}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 440, "x": 616, "type": "mousemove", "message_id": 253}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 439, "x": 620, "type": "mousemove", "message_id": 252}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 440, "x": 611, "type": "mousemove", "message_id": 254}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 441, "x": 607, "type": "mousemove", "message_id": 255}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 441, "x": 603, "type": "mousemove", "message_id": 256}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 441, "x": 593, "type": "mousemove", "message_id": 258}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 441, "x": 598, "type": "mousemove", "message_id": 257}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 441, "x": 588, "type": "mousemove", "message_id": 259}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 441, "x": 583, "type": "mousemove", "message_id": 260}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 441, "x": 578, "type": "mousemove", "message_id": 261}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 441, "x": 573, "type": "mousemove", "message_id": 262}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 441, "x": 568, "type": "mousemove", "message_id": 263}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 441, "x": 563, "type": "mousemove", "message_id": 264}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 440, "x": 559, "type": "mousemove", "message_id": 265}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 438, "x": 555, "type": "mouseover", "message_id": 267}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 438, "x": 555, "type": "mouseover", "message_id": 266}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 438, "x": 555, "type": "mousemove", "message_id": 268}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 438, "x": 554, "type": "mouseover", "message_id": 269}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 438, "x": 554, "type": "mouseover", "message_id": 270}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 438, "x": 554, "type": "mousemove", "message_id": 271}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 439, "x": 551, "type": "mouseover", "message_id": 272}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 439, "x": 551, "type": "mouseover", "message_id": 273}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 439, "x": 551, "type": "mousemove", "message_id": 274}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 440, "x": 548, "type": "mousemove", "message_id": 275}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 442, "x": 543, "type": "mouseover", "message_id": 276}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 442, "x": 543, "type": "mouseover", "message_id": 277}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 442, "x": 543, "type": "mousemove", "message_id": 278}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 443, "x": 538, "type": "mouseover", "message_id": 279}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 443, "x": 538, "type": "mouseover", "message_id": 280}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 443, "x": 538, "type": "mousemove", "message_id": 281}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 445, "x": 534, "type": "mouseover", "message_id": 282}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 445, "x": 534, "type": "mouseover", "message_id": 283}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 446, "x": 528, "type": "mouseover", "message_id": 285}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 445, "x": 534, "type": "mousemove", "message_id": 284}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 446, "x": 528, "type": "mouseover", "message_id": 286}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 446, "x": 528, "type": "mousemove", "message_id": 287}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 448, "x": 518, "type": "mouseover", "message_id": 289}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 448, "x": 518, "type": "mouseover", "message_id": 288}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 448, "x": 518, "type": "mousemove", "message_id": 290}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 450, "x": 507, "type": "mousemove", "message_id": 291}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 451, "x": 494, "type": "mouseover", "message_id": 292}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 451, "x": 494, "type": "mouseover", "message_id": 293}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 451, "x": 494, "type": "mousemove", "message_id": 294}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 452, "x": 482, "type": "mousemove", "message_id": 295}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 452, "x": 468, "type": "mousemove", "message_id": 296}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 452, "x": 455, "type": "mousemove", "message_id": 297}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 452, "x": 442, "type": "mousemove", "message_id": 298}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 452, "x": 430, "type": "mousemove", "message_id": 299}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 449, "x": 418, "type": "mouseover", "message_id": 300}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 449, "x": 418, "type": "mouseover", "message_id": 301}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 449, "x": 418, "type": "mousemove", "message_id": 302}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 446, "x": 406, "type": "mousemove", "message_id": 303}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 443, "x": 394, "type": "mousemove", "message_id": 304}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 440, "x": 382, "type": "mousemove", "message_id": 305}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 436, "x": 371, "type": "mousemove", "message_id": 306}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 426, "x": 337, "type": "mousemove", "message_id": 309}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 434, "x": 359, "type": "mousemove", "message_id": 307}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 430, "x": 349, "type": "mousemove", "message_id": 308}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 422, "x": 325, "type": "mousemove", "message_id": 310}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 417, "x": 312, "type": "mousemove", "message_id": 311}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 411, "x": 301, "type": "mousemove", "message_id": 312}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 396, "x": 279, "type": "mousemove", "message_id": 314}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 404, "x": 290, "type": "mousemove", "message_id": 313}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 388, "x": 269, "type": "mousemove", "message_id": 315}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 379, "x": 260, "type": "mousemove", "message_id": 316}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 374, "x": 257, "type": "mousemove", "message_id": 317}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 366, "x": 250, "type": "mousemove", "message_id": 318}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 357, "x": 245, "type": "mousemove", "message_id": 319}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 340, "x": 239, "type": "mousemove", "message_id": 321}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 349, "x": 241, "type": "mousemove", "message_id": 320}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 333, "x": 237, "type": "mousemove", "message_id": 322}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 326, "x": 236, "type": "mouseover", "message_id": 323}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 326, "x": 236, "type": "mouseover", "message_id": 324}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 326, "x": 236, "type": "mousemove", "message_id": 325}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 324, "x": 235, "type": "mousemove", "message_id": 326}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 319, "x": 235, "type": "mousemove", "message_id": 327}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 313, "x": 235, "type": "mousemove", "message_id": 329}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 316, "x": 235, "type": "mousemove", "message_id": 328}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 313, "x": 235, "type": "mousemove", "message_id": 330}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 312, "x": 233, "type": "mouseover", "message_id": 331}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 312, "x": 233, "type": "mouseover", "message_id": 332}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 312, "x": 233, "type": "mousemove", "message_id": 333}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 310, "x": 232, "type": "mouseover", "message_id": 334}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 310, "x": 232, "type": "mouseover", "message_id": 335}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 310, "x": 232, "type": "mousemove", "message_id": 336}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 308, "x": 231, "type": "mousemove", "message_id": 337}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 306, "x": 229, "type": "mouseover", "message_id": 338}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 306, "x": 229, "type": "mouseover", "message_id": 339}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 306, "x": 229, "type": "mousemove", "message_id": 340}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 304, "x": 228, "type": "mouseover", "message_id": 341}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 304, "x": 228, "type": "mouseover", "message_id": 342}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 304, "x": 228, "type": "mousemove", "message_id": 343}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 302, "x": 227, "type": "mousemove", "message_id": 344}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 294, "x": 223, "type": "mouseover", "message_id": 345}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 294, "x": 223, "type": "mouseover", "message_id": 346}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 294, "x": 223, "type": "mousemove", "message_id": 347}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 286, "x": 220, "type": "mousemove", "message_id": 348}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 277, "x": 217, "type": "mousemove", "message_id": 349}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 268, "x": 215, "type": "mousemove", "message_id": 350}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 257, "x": 211, "type": "mousemove", "message_id": 351}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 245, "x": 208, "type": "mousemove", "message_id": 352}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 233, "x": 205, "type": "mousemove", "message_id": 353}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 221, "x": 202, "type": "mousemove", "message_id": 354}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 215, "x": 201, "type": "mouseover", "message_id": 355}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 215, "x": 201, "type": "mouseover", "message_id": 356}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 215, "x": 201, "type": "mousemove", "message_id": 357}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 205, "x": 199, "type": "mouseover", "message_id": 358}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 205, "x": 199, "type": "mouseover", "message_id": 359}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 205, "x": 199, "type": "mousemove", "message_id": 360}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 195, "x": 197, "type": "mousemove", "message_id": 361}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 186, "x": 195, "type": "mousemove", "message_id": 362}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 178, "x": 194, "type": "mouseover", "message_id": 363}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 178, "x": 194, "type": "mouseover", "message_id": 364}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 178, "x": 194, "type": "mousemove", "message_id": 365}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 170, "x": 192, "type": "mouseover", "message_id": 366}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 170, "x": 192, "type": "mouseover", "message_id": 367}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 170, "x": 192, "type": "mousemove", "message_id": 368}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 162, "x": 192, "type": "mouseover", "message_id": 369}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 162, "x": 192, "type": "mousemove", "message_id": 371}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 162, "x": 192, "type": "mouseover", "message_id": 370}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 157, "x": 191, "type": "mousemove", "message_id": 372}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 150, "x": 190, "type": "mousemove", "message_id": 373}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 144, "x": 190, "type": "mousemove", "message_id": 374}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 139, "x": 190, "type": "mousemove", "message_id": 375}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 134, "x": 189, "type": "mousemove", "message_id": 376}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 129, "x": 189, "type": "mousemove", "message_id": 377}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 125, "x": 189, "type": "mousemove", "message_id": 378}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 121, "x": 189, "type": "mousemove", "message_id": 379}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 119, "x": 189, "type": "mousemove", "message_id": 380}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 116, "x": 189, "type": "mousemove", "message_id": 381}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 113, "x": 189, "type": "mousemove", "message_id": 382}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 107, "x": 189, "type": "mousemove", "message_id": 384}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 104, "x": 189, "type": "mousemove", "message_id": 385}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 109, "x": 189, "type": "mousemove", "message_id": 383}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 102, "x": 189, "type": "mousemove", "message_id": 386}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 100, "x": 189, "type": "mousemove", "message_id": 387}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 98, "x": 189, "type": "mousemove", "message_id": 388}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 95, "x": 189, "type": "mousemove", "message_id": 389}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 93, "x": 189, "type": "mousemove", "message_id": 390}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 91, "x": 189, "type": "mousemove", "message_id": 391}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 87, "x": 189, "type": "mousemove", "message_id": 392}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 86, "x": 189, "type": "mousemove", "message_id": 393}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 82, "x": 189, "type": "mousemove", "message_id": 394}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 81, "x": 189, "type": "mousemove", "message_id": 395}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 78, "x": 189, "type": "mousemove", "message_id": 396}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 75, "x": 189, "type": "mousemove", "message_id": 397}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 73, "x": 189, "type": "mousemove", "message_id": 398}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 71, "x": 189, "type": "mousemove", "message_id": 399}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 69, "x": 189, "type": "mousemove", "message_id": 400}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 67, "x": 189, "type": "mousemove", "message_id": 401}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 64, "x": 189, "type": "mousemove", "message_id": 403}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 63, "x": 189, "type": "mousemove", "message_id": 404}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 66, "x": 189, "type": "mousemove", "message_id": 402}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 62, "x": 189, "type": "mousemove", "message_id": 405}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 61, "x": 189, "type": "mousemove", "message_id": 406}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 60, "x": 188, "type": "mousemove", "message_id": 407}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 59, "x": 188, "type": "mousemove", "message_id": 408}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 58, "x": 188, "type": "mousemove", "message_id": 409}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 58, "x": 188, "type": "mousemove", "message_id": 410}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 58, "x": 188, "type": "mousemove", "message_id": 411}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 57, "x": 187, "type": "mousemove", "message_id": 412}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 56, "x": 187, "type": "mousemove", "message_id": 413}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 56, "x": 187, "type": "mousemove", "message_id": 414}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 56, "x": 187, "type": "mousemove", "message_id": 415}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 55, "x": 187, "type": "mousemove", "message_id": 416}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 55, "x": 187, "type": "mousemove", "message_id": 417}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 54, "x": 187, "type": "mousemove", "message_id": 418}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 54, "x": 187, "type": "mousemove", "message_id": 419}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 53, "x": 187, "type": "mousemove", "message_id": 420}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 53, "x": 187, "type": "mousemove", "message_id": 421}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 53, "x": 186, "type": "mousemove", "message_id": 422}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 52, "x": 186, "type": "mousemove", "message_id": 423}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 52, "x": 186, "type": "mousemove", "message_id": 424}
+{"sender": 5777, "msg_type": "MouseEvent", "y": 51, "x": 186, "type": "mousemove", "message_id": 426}
diff --git a/recordings/test_multiple_viewers.replay b/recordings/test_multiple_viewers.replay
new file mode 100644
index 0000000000..82db0fa11a
--- /dev/null
+++ b/recordings/test_multiple_viewers.replay
@@ -0,0 +1,826 @@
+{"panX": -172.02262700582662, "panY": -71.0005701449295, "scale": 1.9541018766756038, "sender": 3718, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 37, "x": 201, "type": "mousemove", "message_id": 511}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 38, "x": 201, "type": "mousemove", "message_id": 512}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 40, "x": 201, "type": "mousemove", "message_id": 513}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 42, "x": 201, "type": "mousemove", "message_id": 514}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 45, "x": 202, "type": "mousemove", "message_id": 515}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 48, "x": 202, "type": "mousemove", "message_id": 516}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 51, "x": 202, "type": "mousemove", "message_id": 517}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 56, "x": 202, "type": "mousemove", "message_id": 518}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 62, "x": 203, "type": "mousemove", "message_id": 519}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 71, "x": 203, "type": "mousemove", "message_id": 520}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 82, "x": 204, "type": "mousemove", "message_id": 521}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 98, "x": 204, "type": "mouseover", "message_id": 522}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 98, "x": 204, "type": "mouseover", "message_id": 523}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 98, "x": 204, "type": "mousemove", "message_id": 524}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 118, "x": 206, "type": "mousemove", "message_id": 525}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 140, "x": 206, "type": "mousemove", "message_id": 526}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 162, "x": 204, "type": "mousemove", "message_id": 527}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 177, "x": 200, "type": "mousemove", "message_id": 528}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 197, "x": 193, "type": "mousemove", "message_id": 529}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 217, "x": 186, "type": "mousemove", "message_id": 530}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 235, "x": 178, "type": "mousemove", "message_id": 531}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 253, "x": 169, "type": "mousemove", "message_id": 532}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 269, "x": 160, "type": "mousemove", "message_id": 533}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 282, "x": 152, "type": "mousemove", "message_id": 534}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 294, "x": 144, "type": "mousemove", "message_id": 535}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 304, "x": 138, "type": "mousemove", "message_id": 536}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 312, "x": 133, "type": "mousemove", "message_id": 537}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 318, "x": 130, "type": "mouseover", "message_id": 538}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 318, "x": 130, "type": "mouseover", "message_id": 539}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 318, "x": 130, "type": "mousemove", "message_id": 540}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 324, "x": 127, "type": "mousemove", "message_id": 541}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 327, "x": 126, "type": "mouseover", "message_id": 542}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 327, "x": 126, "type": "mouseover", "message_id": 543}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 327, "x": 126, "type": "mousemove", "message_id": 544}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 329, "x": 125, "type": "mousemove", "message_id": 545}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 330, "x": 125, "type": "mousemove", "message_id": 546}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 330, "x": 125, "type": "mousemove", "message_id": 547}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 330, "x": 125, "type": "mousemove", "message_id": 548}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 330, "x": 124, "type": "mousemove", "message_id": 549}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 330, "x": 124, "type": "mousemove", "message_id": 550}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 330, "x": 124, "type": "mousemove", "message_id": 551}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 330, "x": 124, "type": "mousedown", "message_id": 552}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 330, "x": 124, "type": "mouseup", "message_id": 553}
+{"sender": 3718, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 554, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 331, "x": 125, "type": "mousemove", "message_id": 556}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 331, "x": 127, "type": "mouseover", "message_id": 557}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 331, "x": 127, "type": "mousemove", "message_id": 559}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 331, "x": 127, "type": "mouseover", "message_id": 558}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 331, "x": 130, "type": "mousemove", "message_id": 560}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 332, "x": 136, "type": "mousemove", "message_id": 561}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 332, "x": 142, "type": "mousemove", "message_id": 562}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 333, "x": 153, "type": "mousemove", "message_id": 563}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 334, "x": 169, "type": "mouseover", "message_id": 564}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 334, "x": 169, "type": "mouseover", "message_id": 565}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 334, "x": 169, "type": "mousemove", "message_id": 566}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 334, "x": 194, "type": "mouseover", "message_id": 567}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 334, "x": 194, "type": "mouseover", "message_id": 568}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 334, "x": 194, "type": "mousemove", "message_id": 569}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 334, "x": 231, "type": "mouseover", "message_id": 570}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 334, "x": 231, "type": "mouseover", "message_id": 571}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 334, "x": 231, "type": "mousemove", "message_id": 572}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 333, "x": 277, "type": "mousemove", "message_id": 573}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 334, "x": 321, "type": "mousemove", "message_id": 574}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 334, "x": 360, "type": "mousemove", "message_id": 575}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 337, "x": 396, "type": "mousemove", "message_id": 576}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 338, "x": 429, "type": "mouseover", "message_id": 577}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 338, "x": 429, "type": "mouseover", "message_id": 578}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 338, "x": 429, "type": "mousemove", "message_id": 579}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 340, "x": 455, "type": "mouseover", "message_id": 580}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 340, "x": 455, "type": "mouseover", "message_id": 581}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 343, "x": 487, "type": "mousemove", "message_id": 583}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 340, "x": 455, "type": "mousemove", "message_id": 582}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 516, "type": "mousemove", "message_id": 584}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 345, "x": 533, "type": "mousemove", "message_id": 585}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 345, "x": 551, "type": "mousemove", "message_id": 586}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 561, "type": "mouseover", "message_id": 587}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 561, "type": "mouseover", "message_id": 588}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 561, "type": "mousemove", "message_id": 589}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 564, "type": "mousemove", "message_id": 590}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 564, "type": "mouseover", "message_id": 591}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 564, "type": "mouseover", "message_id": 592}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 564, "type": "mousemove", "message_id": 593}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 564, "type": "mousedown", "message_id": 594}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 564, "type": "mouseup", "message_id": 595}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 564, "type": "mousemove", "message_id": 596}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 563, "type": "mousemove", "message_id": 597}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 563, "type": "mousemove", "message_id": 598}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 563, "type": "mousemove", "message_id": 599}
+{"sender": 3718, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 600, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 563, "type": "mousemove", "message_id": 602}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 563, "type": "mousemove", "message_id": 603}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 344, "x": 562, "type": "mousemove", "message_id": 604}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 343, "x": 561, "type": "mousemove", "message_id": 605}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 341, "x": 559, "type": "mouseover", "message_id": 606}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 341, "x": 559, "type": "mouseover", "message_id": 607}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 340, "x": 558, "type": "mouseover", "message_id": 609}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 340, "x": 558, "type": "mousemove", "message_id": 611}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 341, "x": 559, "type": "mousemove", "message_id": 608}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 338, "x": 555, "type": "mouseover", "message_id": 612}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 340, "x": 558, "type": "mouseover", "message_id": 610}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 338, "x": 555, "type": "mouseover", "message_id": 613}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 338, "x": 555, "type": "mousemove", "message_id": 614}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 337, "x": 553, "type": "mouseover", "message_id": 616}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 337, "x": 553, "type": "mouseover", "message_id": 615}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 337, "x": 553, "type": "mousemove", "message_id": 617}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 331, "x": 549, "type": "mouseover", "message_id": 618}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 331, "x": 549, "type": "mousemove", "message_id": 620}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 331, "x": 549, "type": "mouseover", "message_id": 619}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 322, "x": 542, "type": "mousemove", "message_id": 621}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 309, "x": 533, "type": "mouseover", "message_id": 622}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 309, "x": 533, "type": "mouseover", "message_id": 623}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 309, "x": 533, "type": "mousemove", "message_id": 624}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 297, "x": 526, "type": "mouseover", "message_id": 625}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 297, "x": 526, "type": "mouseover", "message_id": 626}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 297, "x": 526, "type": "mousemove", "message_id": 627}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 289, "x": 521, "type": "mousemove", "message_id": 628}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 282, "x": 517, "type": "mousemove", "message_id": 629}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 277, "x": 514, "type": "mouseover", "message_id": 630}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 277, "x": 514, "type": "mouseover", "message_id": 631}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 277, "x": 514, "type": "mousemove", "message_id": 632}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 274, "x": 512, "type": "mousemove", "message_id": 633}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 271, "x": 509, "type": "mousemove", "message_id": 634}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 267, "x": 507, "type": "mousemove", "message_id": 635}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 262, "x": 504, "type": "mousemove", "message_id": 636}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 257, "x": 501, "type": "mouseover", "message_id": 638}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 257, "x": 501, "type": "mouseover", "message_id": 637}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 251, "x": 498, "type": "mousemove", "message_id": 640}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 257, "x": 501, "type": "mousemove", "message_id": 639}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 245, "x": 494, "type": "mousemove", "message_id": 641}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 240, "x": 491, "type": "mouseover", "message_id": 642}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 240, "x": 491, "type": "mouseover", "message_id": 643}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 240, "x": 491, "type": "mousemove", "message_id": 644}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 234, "x": 486, "type": "mouseover", "message_id": 645}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 234, "x": 486, "type": "mousemove", "message_id": 647}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 234, "x": 486, "type": "mouseover", "message_id": 646}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 227, "x": 480, "type": "mousemove", "message_id": 648}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 221, "x": 473, "type": "mousemove", "message_id": 649}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 215, "x": 465, "type": "mouseover", "message_id": 650}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 215, "x": 465, "type": "mouseover", "message_id": 651}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 215, "x": 465, "type": "mousemove", "message_id": 652}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 207, "x": 455, "type": "mousemove", "message_id": 654}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 210, "x": 459, "type": "mousemove", "message_id": 653}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 205, "x": 454, "type": "mouseover", "message_id": 655}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 205, "x": 454, "type": "mouseover", "message_id": 656}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 205, "x": 454, "type": "mousemove", "message_id": 657}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 204, "x": 454, "type": "mousemove", "message_id": 658}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 204, "x": 454, "type": "mousemove", "message_id": 659}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 204, "x": 454, "type": "mousedown", "message_id": 660}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 203, "x": 454, "type": "mousemove", "message_id": 661}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 202, "x": 454, "type": "mousemove", "message_id": 662}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 201, "x": 454, "type": "mousemove", "message_id": 663}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 200, "x": 453, "type": "mousemove", "message_id": 664}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 198, "x": 453, "type": "mousemove", "message_id": 665}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 196, "x": 452, "type": "mousemove", "message_id": 666}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 196, "x": 452, "type": "mouseup", "message_id": 667}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 195, "x": 451, "type": "mousemove", "message_id": 668}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 192, "x": 449, "type": "mouseover", "message_id": 669}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 192, "x": 449, "type": "mouseover", "message_id": 670}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 192, "x": 449, "type": "mousemove", "message_id": 671}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 188, "x": 445, "type": "mousemove", "message_id": 672}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 184, "x": 439, "type": "mousemove", "message_id": 673}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 181, "x": 435, "type": "mousemove", "message_id": 674}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 179, "x": 428, "type": "mouseover", "message_id": 675}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 179, "x": 428, "type": "mouseover", "message_id": 676}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 179, "x": 428, "type": "mousemove", "message_id": 677}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 177, "x": 422, "type": "mouseover", "message_id": 679}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 177, "x": 422, "type": "mouseover", "message_id": 678}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 176, "x": 416, "type": "mouseover", "message_id": 681}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 177, "x": 422, "type": "mousemove", "message_id": 680}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 176, "x": 416, "type": "mouseover", "message_id": 682}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 176, "x": 416, "type": "mousemove", "message_id": 683}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 175, "x": 410, "type": "mousemove", "message_id": 684}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 173, "x": 402, "type": "mousemove", "message_id": 686}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 174, "x": 406, "type": "mousemove", "message_id": 685}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 173, "x": 400, "type": "mousemove", "message_id": 687}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 173, "x": 399, "type": "mouseover", "message_id": 688}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 173, "x": 399, "type": "mouseover", "message_id": 689}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 173, "x": 399, "type": "mousemove", "message_id": 691}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 173, "x": 399, "type": "mousemove", "message_id": 690}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 173, "x": 398, "type": "mousemove", "message_id": 692}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 173, "x": 397, "type": "mousemove", "message_id": 693}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 172, "x": 396, "type": "mousemove", "message_id": 694}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 172, "x": 394, "type": "mouseover", "message_id": 695}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 172, "x": 394, "type": "mouseover", "message_id": 696}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 172, "x": 394, "type": "mousemove", "message_id": 697}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 172, "x": 393, "type": "mouseover", "message_id": 698}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 172, "x": 393, "type": "mousemove", "message_id": 700}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 172, "x": 393, "type": "mouseover", "message_id": 699}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 172, "x": 393, "type": "mousemove", "message_id": 702}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 172, "x": 393, "type": "mousemove", "message_id": 701}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 171, "x": 393, "type": "mousemove", "message_id": 703}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 170, "x": 393, "type": "mousemove", "message_id": 704}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 169, "x": 393, "type": "mousemove", "message_id": 705}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 165, "x": 393, "type": "mousemove", "message_id": 706}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 160, "x": 391, "type": "mouseover", "message_id": 707}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 160, "x": 391, "type": "mouseover", "message_id": 708}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 160, "x": 391, "type": "mousemove", "message_id": 709}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 155, "x": 390, "type": "mouseover", "message_id": 710}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 155, "x": 390, "type": "mouseover", "message_id": 711}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 155, "x": 390, "type": "mousemove", "message_id": 712}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 152, "x": 390, "type": "mousemove", "message_id": 713}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 150, "x": 389, "type": "mousemove", "message_id": 714}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 147, "x": 389, "type": "mousemove", "message_id": 715}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 144, "x": 389, "type": "mousemove", "message_id": 716}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 141, "x": 388, "type": "mousemove", "message_id": 717}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 137, "x": 385, "type": "mouseover", "message_id": 718}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 137, "x": 385, "type": "mouseover", "message_id": 719}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 137, "x": 385, "type": "mousemove", "message_id": 720}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 134, "x": 382, "type": "mousemove", "message_id": 721}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 130, "x": 378, "type": "mouseover", "message_id": 722}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 130, "x": 378, "type": "mouseover", "message_id": 723}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 130, "x": 378, "type": "mousemove", "message_id": 724}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 127, "x": 374, "type": "mouseover", "message_id": 725}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 127, "x": 374, "type": "mouseover", "message_id": 726}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 124, "x": 371, "type": "mouseover", "message_id": 728}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 127, "x": 374, "type": "mousemove", "message_id": 727}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 124, "x": 371, "type": "mouseover", "message_id": 729}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 122, "x": 369, "type": "mousemove", "message_id": 731}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 124, "x": 371, "type": "mousemove", "message_id": 730}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 121, "x": 368, "type": "mouseover", "message_id": 733}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 121, "x": 368, "type": "mouseover", "message_id": 732}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 121, "x": 368, "type": "mousemove", "message_id": 734}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 120, "x": 367, "type": "mousemove", "message_id": 735}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 118, "x": 366, "type": "mousemove", "message_id": 736}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 117, "x": 366, "type": "mousemove", "message_id": 737}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 115, "x": 365, "type": "mousemove", "message_id": 738}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 114, "x": 365, "type": "mousemove", "message_id": 739}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 114, "x": 364, "type": "mousemove", "message_id": 740}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 112, "x": 364, "type": "mousemove", "message_id": 741}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 111, "x": 364, "type": "mousemove", "message_id": 742}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 110, "x": 364, "type": "mousemove", "message_id": 743}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 109, "x": 363, "type": "mousemove", "message_id": 744}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 108, "x": 362, "type": "mousemove", "message_id": 745}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 106, "x": 360, "type": "mouseover", "message_id": 746}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 106, "x": 360, "type": "mouseover", "message_id": 747}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 106, "x": 360, "type": "mousemove", "message_id": 748}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 105, "x": 358, "type": "mouseover", "message_id": 749}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 105, "x": 358, "type": "mouseover", "message_id": 750}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 105, "x": 358, "type": "mousemove", "message_id": 751}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 103, "x": 355, "type": "mouseover", "message_id": 752}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 103, "x": 355, "type": "mousemove", "message_id": 754}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 103, "x": 355, "type": "mouseover", "message_id": 753}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 102, "x": 354, "type": "mouseover", "message_id": 755}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 102, "x": 354, "type": "mouseover", "message_id": 756}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 101, "x": 353, "type": "mousemove", "message_id": 758}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 102, "x": 354, "type": "mousemove", "message_id": 757}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 100, "x": 353, "type": "mousemove", "message_id": 759}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 99, "x": 352, "type": "mousemove", "message_id": 760}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 99, "x": 352, "type": "mousemove", "message_id": 761}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 98, "x": 352, "type": "mousemove", "message_id": 762}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 98, "x": 352, "type": "mousemove", "message_id": 763}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 97, "x": 352, "type": "mousemove", "message_id": 764}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 97, "x": 351, "type": "mousemove", "message_id": 765}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 97, "x": 351, "type": "mousemove", "message_id": 766}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 96, "x": 350, "type": "mousemove", "message_id": 767}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 95, "x": 349, "type": "mousemove", "message_id": 768}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 94, "x": 348, "type": "mousemove", "message_id": 769}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 93, "x": 347, "type": "mousemove", "message_id": 770}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 92, "x": 346, "type": "mousemove", "message_id": 771}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 91, "x": 345, "type": "mousemove", "message_id": 772}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 90, "x": 344, "type": "mousemove", "message_id": 773}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 89, "x": 344, "type": "mousemove", "message_id": 774}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 89, "x": 344, "type": "mousemove", "message_id": 775}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 89, "x": 343, "type": "mousemove", "message_id": 776}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 89, "x": 343, "type": "mousemove", "message_id": 777}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 88, "x": 342, "type": "mousemove", "message_id": 778}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 88, "x": 341, "type": "mousemove", "message_id": 779}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 88, "x": 341, "type": "mousemove", "message_id": 780}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 88, "x": 341, "type": "mousemove", "message_id": 781}
+{"sender": 3718, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 782, "altKey": false, "metaKey": false, "key": "r", "ctrlKey": false, "type": "keydown", "keyCode": 82}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 88, "x": 341, "type": "mousemove", "message_id": 784}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 89, "x": 342, "type": "mousemove", "message_id": 785}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 90, "x": 344, "type": "mouseover", "message_id": 786}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 90, "x": 344, "type": "mouseover", "message_id": 787}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 90, "x": 344, "type": "mousemove", "message_id": 788}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 91, "x": 345, "type": "mouseover", "message_id": 789}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 91, "x": 345, "type": "mouseover", "message_id": 790}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 91, "x": 345, "type": "mousemove", "message_id": 791}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 94, "x": 346, "type": "mousemove", "message_id": 792}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 99, "x": 347, "type": "mousemove", "message_id": 793}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 106, "x": 348, "type": "mousemove", "message_id": 794}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 114, "x": 350, "type": "mouseover", "message_id": 796}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 114, "x": 350, "type": "mouseover", "message_id": 795}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 114, "x": 350, "type": "mousemove", "message_id": 797}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 121, "x": 350, "type": "mouseover", "message_id": 798}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 121, "x": 350, "type": "mouseover", "message_id": 799}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 121, "x": 350, "type": "mousemove", "message_id": 800}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 126, "x": 350, "type": "mousemove", "message_id": 801}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 132, "x": 350, "type": "mousemove", "message_id": 802}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 140, "x": 349, "type": "mousemove", "message_id": 803}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 150, "x": 348, "type": "mousemove", "message_id": 804}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 163, "x": 347, "type": "mousemove", "message_id": 805}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 178, "x": 347, "type": "mousemove", "message_id": 806}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 198, "x": 347, "type": "mouseover", "message_id": 807}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 198, "x": 347, "type": "mouseover", "message_id": 808}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 198, "x": 347, "type": "mousemove", "message_id": 809}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 220, "x": 347, "type": "mousemove", "message_id": 810}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 245, "x": 347, "type": "mousemove", "message_id": 811}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 269, "x": 346, "type": "mousemove", "message_id": 812}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 286, "x": 344, "type": "mousemove", "message_id": 813}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 307, "x": 341, "type": "mousemove", "message_id": 814}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 328, "x": 339, "type": "mousemove", "message_id": 815}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 348, "x": 337, "type": "mousemove", "message_id": 816}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 367, "x": 338, "type": "mousemove", "message_id": 817}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 386, "x": 341, "type": "mousemove", "message_id": 818}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 404, "x": 344, "type": "mousemove", "message_id": 819}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 423, "x": 347, "type": "mousemove", "message_id": 820}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 444, "x": 349, "type": "mousemove", "message_id": 821}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 465, "x": 350, "type": "mousemove", "message_id": 822}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 480, "x": 349, "type": "mouseover", "message_id": 824}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 480, "x": 349, "type": "mousemove", "message_id": 825}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 480, "x": 349, "type": "mouseover", "message_id": 823}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 499, "x": 346, "type": "mouseover", "message_id": 826}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 499, "x": 346, "type": "mouseover", "message_id": 827}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 499, "x": 346, "type": "mousemove", "message_id": 828}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 514, "x": 343, "type": "mousemove", "message_id": 829}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 524, "x": 341, "type": "mousemove", "message_id": 830}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 530, "x": 340, "type": "mouseover", "message_id": 831}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 530, "x": 340, "type": "mouseover", "message_id": 832}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 532, "x": 340, "type": "mousemove", "message_id": 834}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 530, "x": 340, "type": "mousemove", "message_id": 833}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 534, "x": 340, "type": "mousemove", "message_id": 835}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 534, "x": 341, "type": "mousemove", "message_id": 836}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 535, "x": 341, "type": "mousemove", "message_id": 837}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 536, "x": 342, "type": "mousemove", "message_id": 838}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 536, "x": 342, "type": "mousemove", "message_id": 839}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 536, "x": 342, "type": "mousemove", "message_id": 840}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 536, "x": 342, "type": "mousemove", "message_id": 841}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 535, "x": 342, "type": "mousemove", "message_id": 842}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 534, "x": 343, "type": "mousemove", "message_id": 843}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 533, "x": 343, "type": "mousemove", "message_id": 844}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 532, "x": 344, "type": "mousemove", "message_id": 845}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 532, "x": 344, "type": "mousemove", "message_id": 846}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 532, "x": 344, "type": "mousemove", "message_id": 847}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 532, "x": 344, "type": "mousemove", "message_id": 848}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 531, "x": 344, "type": "mousemove", "message_id": 849}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 531, "x": 345, "type": "mousemove", "message_id": 850}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 531, "x": 346, "type": "mousemove", "message_id": 851}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 530, "x": 347, "type": "mousemove", "message_id": 852}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 530, "x": 347, "type": "mousemove", "message_id": 853}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 530, "x": 347, "type": "mousemove", "message_id": 854}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 530, "x": 347, "type": "mousemove", "message_id": 855}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 531, "x": 348, "type": "mousemove", "message_id": 856}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 533, "x": 348, "type": "mousemove", "message_id": 857}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 534, "x": 348, "type": "mousemove", "message_id": 858}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 535, "x": 348, "type": "mousemove", "message_id": 859}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 536, "x": 348, "type": "mousemove", "message_id": 860}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 537, "x": 348, "type": "mousemove", "message_id": 861}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 538, "x": 348, "type": "mousemove", "message_id": 862}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 538, "x": 348, "type": "mousemove", "message_id": 863}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 538, "x": 348, "type": "mousemove", "message_id": 864}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 538, "x": 348, "type": "mousemove", "message_id": 865}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 538, "x": 348, "type": "mousemove", "message_id": 866}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 538, "x": 348, "type": "mousemove", "message_id": 867}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 539, "x": 348, "type": "mousemove", "message_id": 868}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 539, "x": 348, "type": "mousemove", "message_id": 869}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 540, "x": 347, "type": "mousemove", "message_id": 870}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 541, "x": 347, "type": "mousemove", "message_id": 871}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 542, "x": 347, "type": "mousemove", "message_id": 872}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 544, "x": 347, "type": "mousemove", "message_id": 873}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 546, "x": 348, "type": "mousemove", "message_id": 874}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 547, "x": 348, "type": "mousemove", "message_id": 875}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 548, "x": 349, "type": "mousemove", "message_id": 876}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 548, "x": 349, "type": "mousemove", "message_id": 877}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 549, "x": 349, "type": "mousemove", "message_id": 878}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 549, "x": 349, "type": "mousemove", "message_id": 879}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 549, "x": 349, "type": "mousemove", "message_id": 880}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 549, "x": 349, "type": "mousemove", "message_id": 881}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 550, "x": 349, "type": "mousemove", "message_id": 882}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 550, "x": 349, "type": "mousemove", "message_id": 883}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 551, "x": 349, "type": "mousemove", "message_id": 884}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 551, "x": 349, "type": "mousemove", "message_id": 885}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 552, "x": 349, "type": "mousemove", "message_id": 886}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 552, "x": 348, "type": "mousemove", "message_id": 887}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 552, "x": 348, "type": "mousemove", "message_id": 888}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 553, "x": 348, "type": "mousemove", "message_id": 889}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 554, "x": 348, "type": "mousemove", "message_id": 890}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 555, "x": 347, "type": "mousemove", "message_id": 891}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 556, "x": 347, "type": "mousemove", "message_id": 892}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 557, "x": 346, "type": "mousemove", "message_id": 893}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 558, "x": 346, "type": "mousemove", "message_id": 894}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 558, "x": 346, "type": "mousemove", "message_id": 895}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 345, "type": "mousemove", "message_id": 896}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 345, "type": "mousemove", "message_id": 897}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 345, "type": "mousemove", "message_id": 898}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 899}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 900}
+{"sender": 3718, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 901, "altKey": false, "metaKey": false, "key": "h", "ctrlKey": false, "type": "keydown", "keyCode": 72}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 903}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 904}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 905}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 906}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 907}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 908}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 346, "type": "mousemove", "message_id": 909}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 910}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 911}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 912}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 913}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 915}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 345, "type": "mousemove", "message_id": 914}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 346, "type": "mousemove", "message_id": 916}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 346, "type": "mousemove", "message_id": 917}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 346, "type": "mousemove", "message_id": 918}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 346, "type": "mousemove", "message_id": 919}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 346, "type": "mousemove", "message_id": 920}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 346, "type": "mousemove", "message_id": 921}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 346, "type": "mousemove", "message_id": 922}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 346, "type": "mousemove", "message_id": 923}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 346, "type": "mousemove", "message_id": 924}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 346, "type": "mousemove", "message_id": 925}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 346, "type": "mousemove", "message_id": 926}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 346, "type": "mousemove", "message_id": 927}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 346, "type": "mousemove", "message_id": 928}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 929}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 347, "type": "mousemove", "message_id": 930}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 931}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 932}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 933}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 934}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 935}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 936}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 937}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 938}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 939}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 940}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 941}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 942}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 943}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 347, "type": "mousemove", "message_id": 944}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 347, "type": "mousemove", "message_id": 945}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 347, "type": "mousemove", "message_id": 946}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 947}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 347, "type": "mousemove", "message_id": 948}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 347, "type": "mousemove", "message_id": 949}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 347, "type": "mousemove", "message_id": 950}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 347, "type": "mousemove", "message_id": 951}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 347, "type": "mousemove", "message_id": 952}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 347, "type": "mousemove", "message_id": 953}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 347, "type": "mousemove", "message_id": 954}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 347, "type": "mousemove", "message_id": 955}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 956}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 957}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 958}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 959}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 960}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 961}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 962}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 963}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 964}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 965}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 966}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 560, "x": 348, "type": "mousemove", "message_id": 967}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 968}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 969}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 970}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 971}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 972}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 973}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 974}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 975}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 976}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 977}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 978}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 349, "type": "mousemove", "message_id": 979}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 980}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 981}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 982}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 983}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 984}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 985}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 986}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 987}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 988}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 989}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 990}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 348, "type": "mousemove", "message_id": 991}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 347, "type": "mousemove", "message_id": 992}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 347, "type": "mousemove", "message_id": 993}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 561, "x": 347, "type": "mousemove", "message_id": 994}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 562, "x": 347, "type": "mousemove", "message_id": 995}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 562, "x": 347, "type": "mousemove", "message_id": 996}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 562, "x": 347, "type": "mousemove", "message_id": 997}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 562, "x": 347, "type": "mousemove", "message_id": 998}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 562, "x": 347, "type": "mousemove", "message_id": 999}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 562, "x": 347, "type": "mousemove", "message_id": 1000}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 562, "x": 346, "type": "mousemove", "message_id": 1001}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 562, "x": 346, "type": "mousemove", "message_id": 1002}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 562, "x": 346, "type": "mousemove", "message_id": 1003}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 562, "x": 346, "type": "mousemove", "message_id": 1004}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 563, "x": 347, "type": "mousemove", "message_id": 1005}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 563, "x": 348, "type": "mousemove", "message_id": 1006}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 564, "x": 351, "type": "mouseover", "message_id": 1007}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 564, "x": 351, "type": "mouseover", "message_id": 1008}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 564, "x": 351, "type": "mousemove", "message_id": 1009}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 565, "x": 354, "type": "mousemove", "message_id": 1010}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 565, "x": 354, "type": "mouseover", "message_id": 1011}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 565, "x": 354, "type": "mouseover", "message_id": 1012}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 565, "x": 354, "type": "mousemove", "message_id": 1013}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 565, "x": 354, "type": "mousemove", "message_id": 1014}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 565, "x": 354, "type": "mousemove", "message_id": 1015}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 565, "x": 354, "type": "mousemove", "message_id": 1016}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 565, "x": 355, "type": "mousemove", "message_id": 1017}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 563, "x": 356, "type": "mousemove", "message_id": 1018}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 358, "type": "mouseover", "message_id": 1019}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 358, "type": "mouseover", "message_id": 1020}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 559, "x": 358, "type": "mousemove", "message_id": 1021}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 554, "x": 362, "type": "mouseover", "message_id": 1022}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 554, "x": 362, "type": "mouseover", "message_id": 1023}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 554, "x": 362, "type": "mousemove", "message_id": 1024}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 546, "x": 368, "type": "mousemove", "message_id": 1025}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 536, "x": 375, "type": "mouseover", "message_id": 1026}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 536, "x": 375, "type": "mouseover", "message_id": 1027}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 536, "x": 375, "type": "mousemove", "message_id": 1028}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 520, "x": 385, "type": "mouseover", "message_id": 1029}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 520, "x": 385, "type": "mouseover", "message_id": 1030}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 520, "x": 385, "type": "mousemove", "message_id": 1031}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 497, "x": 395, "type": "mousemove", "message_id": 1032}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 469, "x": 407, "type": "mousemove", "message_id": 1033}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 439, "x": 416, "type": "mousemove", "message_id": 1034}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 408, "x": 423, "type": "mouseover", "message_id": 1035}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 408, "x": 423, "type": "mouseover", "message_id": 1036}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 408, "x": 423, "type": "mousemove", "message_id": 1037}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 379, "x": 425, "type": "mouseover", "message_id": 1038}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 379, "x": 425, "type": "mousemove", "message_id": 1040}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 353, "x": 423, "type": "mouseover", "message_id": 1041}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 379, "x": 425, "type": "mouseover", "message_id": 1039}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 353, "x": 423, "type": "mouseover", "message_id": 1042}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 353, "x": 423, "type": "mousemove", "message_id": 1043}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 331, "x": 419, "type": "mouseover", "message_id": 1044}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 331, "x": 419, "type": "mouseover", "message_id": 1045}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 331, "x": 419, "type": "mousemove", "message_id": 1046}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 312, "x": 410, "type": "mousemove", "message_id": 1047}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 301, "x": 403, "type": "mousemove", "message_id": 1048}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 289, "x": 393, "type": "mousemove", "message_id": 1049}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 280, "x": 384, "type": "mousemove", "message_id": 1050}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 273, "x": 376, "type": "mousemove", "message_id": 1051}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 266, "x": 367, "type": "mousemove", "message_id": 1052}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 259, "x": 357, "type": "mousemove", "message_id": 1053}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 252, "x": 348, "type": "mousemove", "message_id": 1054}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 246, "x": 340, "type": "mousemove", "message_id": 1055}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 239, "x": 332, "type": "mousemove", "message_id": 1056}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 232, "x": 323, "type": "mousemove", "message_id": 1057}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 225, "x": 313, "type": "mousemove", "message_id": 1058}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 215, "x": 300, "type": "mousemove", "message_id": 1059}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 205, "x": 287, "type": "mousemove", "message_id": 1060}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 195, "x": 277, "type": "mousemove", "message_id": 1061}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 186, "x": 272, "type": "mouseover", "message_id": 1063}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 186, "x": 272, "type": "mouseover", "message_id": 1062}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 186, "x": 272, "type": "mousemove", "message_id": 1064}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 179, "x": 270, "type": "mouseover", "message_id": 1065}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 179, "x": 270, "type": "mouseover", "message_id": 1066}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 179, "x": 270, "type": "mousemove", "message_id": 1067}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 174, "x": 269, "type": "mouseover", "message_id": 1068}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 174, "x": 269, "type": "mouseover", "message_id": 1069}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 174, "x": 269, "type": "mousemove", "message_id": 1070}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 170, "x": 269, "type": "mousemove", "message_id": 1071}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 167, "x": 270, "type": "mousemove", "message_id": 1073}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 168, "x": 270, "type": "mousemove", "message_id": 1072}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 167, "x": 271, "type": "mousemove", "message_id": 1074}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1075}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 167, "x": 271, "type": "mousemove", "message_id": 1076}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 3, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1077}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 168, "x": 270, "type": "mousemove", "message_id": 1078}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 3, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 1079}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 169, "x": 270, "type": "mousemove", "message_id": 1080}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 2, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1081}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 170, "x": 269, "type": "mousemove", "message_id": 1082}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1083}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 171, "x": 269, "type": "mousemove", "message_id": 1084}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1085}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 173, "x": 269, "type": "mousemove", "message_id": 1086}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1087}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 176, "x": 270, "type": "mousemove", "message_id": 1088}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 178, "x": 272, "type": "mouseover", "message_id": 1089}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 178, "x": 272, "type": "mouseover", "message_id": 1090}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 178, "x": 272, "type": "mousemove", "message_id": 1091}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 183, "x": 275, "type": "mousemove", "message_id": 1092}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 188, "x": 277, "type": "mousemove", "message_id": 1093}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 193, "x": 279, "type": "mousemove", "message_id": 1094}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 198, "x": 280, "type": "mouseover", "message_id": 1096}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 198, "x": 280, "type": "mouseover", "message_id": 1095}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 198, "x": 280, "type": "mousemove", "message_id": 1097}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 202, "x": 280, "type": "mousemove", "message_id": 1098}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 207, "x": 281, "type": "mousemove", "message_id": 1099}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 211, "x": 281, "type": "mousemove", "message_id": 1100}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 216, "x": 281, "type": "mousemove", "message_id": 1101}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 221, "x": 280, "type": "mousemove", "message_id": 1102}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 227, "x": 280, "type": "mousemove", "message_id": 1103}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 233, "x": 280, "type": "mousemove", "message_id": 1104}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 238, "x": 280, "type": "mousemove", "message_id": 1105}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 241, "x": 280, "type": "mousemove", "message_id": 1106}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 244, "x": 280, "type": "mousemove", "message_id": 1107}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 244, "x": 280, "type": "mousemove", "message_id": 1108}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 245, "x": 280, "type": "mousemove", "message_id": 1109}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 2, "deltaY": 0, "delta": -2, "type": "wheel", "message_id": 1110}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 4, "deltaY": 0, "delta": -4, "type": "wheel", "message_id": 1111}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 4, "deltaY": 0, "delta": -4, "type": "wheel", "message_id": 1112}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 4, "deltaY": 0, "delta": -4, "type": "wheel", "message_id": 1113}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 3, "deltaY": 0, "delta": -3, "type": "wheel", "message_id": 1114}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 245, "x": 280, "type": "mousemove", "message_id": 1115}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 3, "deltaY": 0, "delta": -3, "type": "wheel", "message_id": 1116}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 246, "x": 280, "type": "mousemove", "message_id": 1117}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 3, "deltaY": 0, "delta": -3, "type": "wheel", "message_id": 1118}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 246, "x": 281, "type": "mousemove", "message_id": 1119}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 247, "x": 281, "type": "mousemove", "message_id": 1120}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 3, "deltaY": 0, "delta": -3, "type": "wheel", "message_id": 1121}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 3, "deltaY": 0, "delta": -3, "type": "wheel", "message_id": 1123}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 248, "x": 282, "type": "mousemove", "message_id": 1122}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 249, "x": 283, "type": "mousemove", "message_id": 1124}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 251, "x": 286, "type": "mouseover", "message_id": 1125}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 251, "x": 286, "type": "mouseover", "message_id": 1126}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 251, "x": 286, "type": "mousemove", "message_id": 1127}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 254, "x": 291, "type": "mouseover", "message_id": 1129}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 3, "deltaY": 0, "delta": -3, "type": "wheel", "message_id": 1128}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 254, "x": 291, "type": "mouseover", "message_id": 1130}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 254, "x": 291, "type": "mousemove", "message_id": 1131}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 2, "deltaY": 0, "delta": -2, "type": "wheel", "message_id": 1132}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 258, "x": 297, "type": "mouseover", "message_id": 1133}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 258, "x": 297, "type": "mouseover", "message_id": 1134}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 258, "x": 297, "type": "mousemove", "message_id": 1135}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 261, "x": 301, "type": "mousemove", "message_id": 1136}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 2, "deltaY": 0, "delta": -2, "type": "wheel", "message_id": 1137}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 264, "x": 305, "type": "mousemove", "message_id": 1138}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 265, "x": 307, "type": "mouseover", "message_id": 1140}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 2, "deltaY": 0, "delta": -2, "type": "wheel", "message_id": 1139}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 265, "x": 307, "type": "mouseover", "message_id": 1141}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 265, "x": 307, "type": "mousemove", "message_id": 1142}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 266, "x": 307, "type": "mouseover", "message_id": 1144}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 2, "deltaY": 0, "delta": -2, "type": "wheel", "message_id": 1143}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 266, "x": 307, "type": "mouseover", "message_id": 1145}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 266, "x": 307, "type": "mousemove", "message_id": 1146}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 2, "deltaY": 0, "delta": -2, "type": "wheel", "message_id": 1148}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 266, "x": 307, "type": "mousemove", "message_id": 1147}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1149}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 266, "x": 307, "type": "mousemove", "message_id": 1150}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1152}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 267, "x": 307, "type": "mousemove", "message_id": 1153}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 266, "x": 307, "type": "mousemove", "message_id": 1151}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1154}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 268, "x": 308, "type": "mousemove", "message_id": 1155}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 268, "x": 308, "type": "mousemove", "message_id": 1156}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1157}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 269, "x": 309, "type": "mousemove", "message_id": 1160}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 269, "x": 308, "type": "mousemove", "message_id": 1158}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 269, "x": 309, "type": "mousemove", "message_id": 1161}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1159}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1162}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1164}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 269, "x": 309, "type": "mousemove", "message_id": 1163}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1165}
+{"originalEvent": {"metaKey": false}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1166}
+{"sender": 3718, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1167, "altKey": false, "metaKey": true, "key": "Meta", "ctrlKey": false, "type": "keydown", "keyCode": 91}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1168}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1170}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1172}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 1174}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1176}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1178}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1180}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1182}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1184}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1186}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1188}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1190}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1192}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1194}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1196}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1198}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1200}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1202}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1204}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1206}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1208}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1210}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1212}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1214}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1216}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1218}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1220}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1222}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1224}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1226}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1228}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1230}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1232}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1234}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1236}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1238}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1240}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1242}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1244}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1246}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1248}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1250}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1252}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1254}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1256}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1258}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1260}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1262}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1264}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1266}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1268}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1270}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1272}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1274}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1276}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1278}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1280}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1282}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1284}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1286}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1288}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1290}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1292}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1294}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1296}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1298}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1300}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1302}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1304}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1306}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 1308}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 1310}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1312}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 1314}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1316}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1318}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1320}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1322}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1324}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 1326}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1328}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1330}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1332}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 1334}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1336}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1338}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1340}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1342}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1344}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1346}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1348}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1350}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1352}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1354}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1356}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1358}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1360}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1362}
+{"originalEvent": {"metaKey": true}, "sender": 3718, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 1364}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 267, "x": 309, "type": "mousemove", "message_id": 1366}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 264, "x": 309, "type": "mousemove", "message_id": 1367}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 261, "x": 310, "type": "mousemove", "message_id": 1368}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 257, "x": 311, "type": "mousemove", "message_id": 1369}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 251, "x": 312, "type": "mousemove", "message_id": 1370}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 244, "x": 312, "type": "mousemove", "message_id": 1371}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 235, "x": 311, "type": "mousemove", "message_id": 1372}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 226, "x": 308, "type": "mouseover", "message_id": 1374}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 226, "x": 308, "type": "mouseover", "message_id": 1373}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 226, "x": 308, "type": "mousemove", "message_id": 1375}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 216, "x": 304, "type": "mouseover", "message_id": 1376}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 216, "x": 304, "type": "mouseover", "message_id": 1377}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 216, "x": 304, "type": "mousemove", "message_id": 1378}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 206, "x": 298, "type": "mousemove", "message_id": 1379}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 194, "x": 288, "type": "mouseover", "message_id": 1380}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 194, "x": 288, "type": "mouseover", "message_id": 1381}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 194, "x": 288, "type": "mousemove", "message_id": 1382}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 184, "x": 277, "type": "mouseover", "message_id": 1383}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 184, "x": 277, "type": "mouseover", "message_id": 1384}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 184, "x": 277, "type": "mousemove", "message_id": 1385}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 173, "x": 261, "type": "mouseover", "message_id": 1386}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 173, "x": 261, "type": "mouseover", "message_id": 1387}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 173, "x": 261, "type": "mousemove", "message_id": 1388}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 163, "x": 243, "type": "mouseover", "message_id": 1389}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 163, "x": 243, "type": "mousemove", "message_id": 1391}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 163, "x": 243, "type": "mouseover", "message_id": 1390}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 153, "x": 227, "type": "mousemove", "message_id": 1392}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 132, "x": 199, "type": "mousemove", "message_id": 1394}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 121, "x": 187, "type": "mouseover", "message_id": 1395}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 143, "x": 212, "type": "mousemove", "message_id": 1393}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 121, "x": 187, "type": "mouseover", "message_id": 1396}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 121, "x": 187, "type": "mousemove", "message_id": 1397}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 103, "x": 171, "type": "mousemove", "message_id": 1399}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 111, "x": 178, "type": "mousemove", "message_id": 1398}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 96, "x": 167, "type": "mousemove", "message_id": 1400}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 92, "x": 165, "type": "mouseover", "message_id": 1401}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 92, "x": 165, "type": "mouseover", "message_id": 1402}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 92, "x": 165, "type": "mousemove", "message_id": 1403}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 87, "x": 164, "type": "mouseover", "message_id": 1404}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 87, "x": 164, "type": "mouseover", "message_id": 1405}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 87, "x": 164, "type": "mousemove", "message_id": 1406}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 81, "x": 162, "type": "mouseover", "message_id": 1407}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 81, "x": 162, "type": "mousemove", "message_id": 1409}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 81, "x": 162, "type": "mouseover", "message_id": 1408}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 76, "x": 160, "type": "mousemove", "message_id": 1410}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 71, "x": 157, "type": "mouseover", "message_id": 1411}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 71, "x": 157, "type": "mouseover", "message_id": 1412}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 71, "x": 157, "type": "mousemove", "message_id": 1413}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 67, "x": 154, "type": "mousemove", "message_id": 1414}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 64, "x": 153, "type": "mouseover", "message_id": 1415}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 64, "x": 153, "type": "mousemove", "message_id": 1417}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 64, "x": 153, "type": "mouseover", "message_id": 1416}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 63, "x": 152, "type": "mousemove", "message_id": 1418}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 63, "x": 152, "type": "mousemove", "message_id": 1419}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 62, "x": 152, "type": "mousemove", "message_id": 1420}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 62, "x": 153, "type": "mousemove", "message_id": 1421}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 63, "x": 155, "type": "mouseover", "message_id": 1422}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 63, "x": 155, "type": "mouseover", "message_id": 1423}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 63, "x": 155, "type": "mousemove", "message_id": 1424}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 63, "x": 159, "type": "mousemove", "message_id": 1425}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 63, "x": 165, "type": "mousemove", "message_id": 1426}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 62, "x": 169, "type": "mousemove", "message_id": 1427}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 60, "x": 172, "type": "mouseover", "message_id": 1428}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 60, "x": 172, "type": "mouseover", "message_id": 1429}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 60, "x": 172, "type": "mousemove", "message_id": 1430}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 59, "x": 174, "type": "mouseover", "message_id": 1431}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 59, "x": 174, "type": "mouseover", "message_id": 1432}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 59, "x": 176, "type": "mousemove", "message_id": 1434}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 59, "x": 174, "type": "mousemove", "message_id": 1433}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 59, "x": 177, "type": "mouseover", "message_id": 1435}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 59, "x": 177, "type": "mouseover", "message_id": 1436}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 59, "x": 177, "type": "mousemove", "message_id": 1437}
+{"sender": 3718, "msg_type": "MouseEvent", "y": 58, "x": 177, "type": "mousemove", "message_id": 1438}
diff --git a/recordings/test_rack.replay b/recordings/test_rack.replay
new file mode 100644
index 0000000000..acab833d65
--- /dev/null
+++ b/recordings/test_rack.replay
@@ -0,0 +1,120 @@
+{"panX": 88.50231573279976, "panY": 87.7890649686315, "scale": 0.7399999999999998, "sender": 4115, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 29, "x": 185, "type": "mousemove", "message_id": 1643}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 32, "x": 185, "type": "mousemove", "message_id": 1644}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 34, "x": 186, "type": "mousemove", "message_id": 1645}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 38, "x": 187, "type": "mousemove", "message_id": 1646}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 42, "x": 189, "type": "mouseover", "message_id": 1647}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 42, "x": 189, "type": "mouseover", "message_id": 1648}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 42, "x": 189, "type": "mousemove", "message_id": 1649}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 49, "x": 192, "type": "mouseover", "message_id": 1650}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 49, "x": 192, "type": "mouseover", "message_id": 1651}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 49, "x": 192, "type": "mousemove", "message_id": 1652}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 58, "x": 196, "type": "mousemove", "message_id": 1653}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 70, "x": 203, "type": "mouseover", "message_id": 1654}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 70, "x": 203, "type": "mouseover", "message_id": 1655}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 70, "x": 203, "type": "mousemove", "message_id": 1656}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 84, "x": 210, "type": "mousemove", "message_id": 1657}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 97, "x": 217, "type": "mousemove", "message_id": 1658}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 116, "x": 226, "type": "mousemove", "message_id": 1659}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 133, "x": 235, "type": "mousemove", "message_id": 1660}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 152, "x": 244, "type": "mousemove", "message_id": 1661}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 168, "x": 250, "type": "mousemove", "message_id": 1662}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 186, "x": 258, "type": "mousemove", "message_id": 1663}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 204, "x": 265, "type": "mousemove", "message_id": 1664}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 210, "x": 267, "type": "mousemove", "message_id": 1665}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 223, "x": 271, "type": "mousemove", "message_id": 1666}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 235, "x": 275, "type": "mousemove", "message_id": 1667}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 246, "x": 278, "type": "mousemove", "message_id": 1668}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 255, "x": 280, "type": "mousemove", "message_id": 1669}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 262, "x": 282, "type": "mousemove", "message_id": 1670}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 265, "x": 283, "type": "mouseover", "message_id": 1671}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 265, "x": 283, "type": "mouseover", "message_id": 1672}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 270, "x": 284, "type": "mousemove", "message_id": 1674}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 265, "x": 283, "type": "mousemove", "message_id": 1673}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 273, "x": 284, "type": "mousemove", "message_id": 1675}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 278, "x": 285, "type": "mousemove", "message_id": 1677}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 276, "x": 284, "type": "mousemove", "message_id": 1676}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 280, "x": 285, "type": "mousemove", "message_id": 1678}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 281, "x": 285, "type": "mousemove", "message_id": 1679}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 282, "x": 285, "type": "mousemove", "message_id": 1680}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 282, "x": 285, "type": "mousemove", "message_id": 1681}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 283, "x": 285, "type": "mousemove", "message_id": 1682}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 283, "x": 285, "type": "mousemove", "message_id": 1683}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 283, "x": 285, "type": "mousemove", "message_id": 1684}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 283, "x": 284, "type": "mousemove", "message_id": 1685}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 283, "x": 284, "type": "mousemove", "message_id": 1686}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 283, "x": 284, "type": "mousedown", "message_id": 1687}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 283, "x": 284, "type": "mouseup", "message_id": 1688}
+{"sender": 4115, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1689, "altKey": false, "metaKey": false, "key": "a", "ctrlKey": false, "type": "keydown", "keyCode": 65}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 283, "x": 284, "type": "mousedown", "message_id": 1691}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 283, "x": 284, "type": "mouseup", "message_id": 1693}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 283, "x": 284, "type": "mousedown", "message_id": 1694}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 283, "x": 284, "type": "mouseup", "message_id": 1697}
+{"sender": 4115, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1698, "altKey": false, "metaKey": false, "key": "1", "ctrlKey": false, "type": "keydown", "keyCode": 49}
+{"sender": 4115, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 1700, "altKey": false, "metaKey": false, "key": "Enter", "ctrlKey": false, "type": "keydown", "keyCode": 13}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 282, "x": 283, "type": "mousemove", "message_id": 1702}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 281, "x": 282, "type": "mousemove", "message_id": 1703}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 280, "x": 281, "type": "mousemove", "message_id": 1704}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 278, "x": 280, "type": "mousemove", "message_id": 1705}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 276, "x": 277, "type": "mouseover", "message_id": 1706}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 276, "x": 277, "type": "mouseover", "message_id": 1707}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 276, "x": 277, "type": "mousemove", "message_id": 1708}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 273, "x": 275, "type": "mousemove", "message_id": 1709}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 271, "x": 273, "type": "mouseover", "message_id": 1710}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 271, "x": 273, "type": "mouseover", "message_id": 1711}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 271, "x": 273, "type": "mousemove", "message_id": 1712}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 267, "x": 270, "type": "mouseover", "message_id": 1713}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 267, "x": 270, "type": "mouseover", "message_id": 1714}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 267, "x": 270, "type": "mousemove", "message_id": 1715}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 258, "x": 265, "type": "mousemove", "message_id": 1716}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 252, "x": 260, "type": "mousemove", "message_id": 1717}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 243, "x": 255, "type": "mouseover", "message_id": 1718}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 243, "x": 255, "type": "mousemove", "message_id": 1720}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 243, "x": 255, "type": "mouseover", "message_id": 1719}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 232, "x": 250, "type": "mouseover", "message_id": 1721}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 232, "x": 250, "type": "mousemove", "message_id": 1723}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 232, "x": 250, "type": "mouseover", "message_id": 1722}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 209, "x": 239, "type": "mousemove", "message_id": 1724}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 182, "x": 228, "type": "mousemove", "message_id": 1726}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 192, "x": 232, "type": "mousemove", "message_id": 1725}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 148, "x": 214, "type": "mousemove", "message_id": 1727}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 136, "x": 209, "type": "mousemove", "message_id": 1728}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 116, "x": 202, "type": "mousemove", "message_id": 1729}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 96, "x": 194, "type": "mousemove", "message_id": 1730}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 80, "x": 188, "type": "mousemove", "message_id": 1731}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 73, "x": 186, "type": "mousemove", "message_id": 1732}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 59, "x": 180, "type": "mouseover", "message_id": 1733}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 59, "x": 180, "type": "mouseover", "message_id": 1734}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 59, "x": 180, "type": "mousemove", "message_id": 1735}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 47, "x": 177, "type": "mousemove", "message_id": 1736}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 38, "x": 173, "type": "mouseover", "message_id": 1737}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 38, "x": 173, "type": "mouseover", "message_id": 1738}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 38, "x": 173, "type": "mousemove", "message_id": 1739}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 30, "x": 171, "type": "mousemove", "message_id": 1740}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 23, "x": 169, "type": "mouseover", "message_id": 1741}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 23, "x": 169, "type": "mouseover", "message_id": 1742}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 23, "x": 169, "type": "mousemove", "message_id": 1743}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 21, "x": 168, "type": "mouseover", "message_id": 1744}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 21, "x": 168, "type": "mousemove", "message_id": 1746}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 21, "x": 168, "type": "mouseover", "message_id": 1745}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 16, "x": 167, "type": "mousemove", "message_id": 1747}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 11, "x": 165, "type": "mousemove", "message_id": 1749}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 13, "x": 166, "type": "mousemove", "message_id": 1748}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 9, "x": 164, "type": "mousemove", "message_id": 1750}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 11, "x": 164, "type": "mousemove", "message_id": 1752}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 9, "x": 164, "type": "mousemove", "message_id": 1751}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 13, "x": 165, "type": "mousemove", "message_id": 1753}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 14, "x": 166, "type": "mousemove", "message_id": 1754}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 16, "x": 166, "type": "mousemove", "message_id": 1755}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 17, "x": 167, "type": "mousemove", "message_id": 1756}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 19, "x": 168, "type": "mousemove", "message_id": 1757}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 20, "x": 169, "type": "mousemove", "message_id": 1758}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 22, "x": 170, "type": "mousemove", "message_id": 1759}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 24, "x": 170, "type": "mousemove", "message_id": 1760}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 26, "x": 171, "type": "mousemove", "message_id": 1761}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 27, "x": 172, "type": "mousemove", "message_id": 1762}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 29, "x": 172, "type": "mousemove", "message_id": 1763}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 30, "x": 173, "type": "mousemove", "message_id": 1764}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 31, "x": 173, "type": "mousemove", "message_id": 1765}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 32, "x": 174, "type": "mousemove", "message_id": 1766}
+{"sender": 4115, "msg_type": "MouseEvent", "y": 33, "x": 174, "type": "mousemove", "message_id": 1767}
diff --git a/recordings/test_recording.replay b/recordings/test_recording.replay
new file mode 100644
index 0000000000..68fb1e8354
--- /dev/null
+++ b/recordings/test_recording.replay
@@ -0,0 +1,76 @@
+{"panX": 161.32635274860883, "panY": 151.1342654089031, "scale": 0.510765027322404, "sender": 3914, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 40, "x": 183, "type": "mousemove", "message_id": 2}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 40, "x": 183, "type": "mousemove", "message_id": 3}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 41, "x": 183, "type": "mousemove", "message_id": 4}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 198, "type": "mouseover", "message_id": 5}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 198, "type": "mouseover", "message_id": 6}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 61, "x": 198, "type": "mousemove", "message_id": 7}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 70, "x": 203, "type": "mousemove", "message_id": 8}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 76, "x": 207, "type": "mousemove", "message_id": 9}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 84, "x": 213, "type": "mousemove", "message_id": 10}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 93, "x": 219, "type": "mousemove", "message_id": 11}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 111, "x": 233, "type": "mousemove", "message_id": 12}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 126, "x": 245, "type": "mousemove", "message_id": 13}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 141, "x": 257, "type": "mousemove", "message_id": 14}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 156, "x": 268, "type": "mousemove", "message_id": 15}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 169, "x": 277, "type": "mousemove", "message_id": 16}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 180, "x": 283, "type": "mousemove", "message_id": 17}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 189, "x": 286, "type": "mousemove", "message_id": 18}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 196, "x": 287, "type": "mouseover", "message_id": 20}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 196, "x": 287, "type": "mouseover", "message_id": 19}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 196, "x": 287, "type": "mousemove", "message_id": 21}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 201, "x": 286, "type": "mousemove", "message_id": 22}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 204, "x": 284, "type": "mouseover", "message_id": 23}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 204, "x": 284, "type": "mouseover", "message_id": 24}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 204, "x": 284, "type": "mousemove", "message_id": 25}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 207, "x": 282, "type": "mousemove", "message_id": 26}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 208, "x": 281, "type": "mouseover", "message_id": 27}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 208, "x": 281, "type": "mouseover", "message_id": 28}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 208, "x": 281, "type": "mousemove", "message_id": 29}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 209, "x": 279, "type": "mousemove", "message_id": 31}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 209, "x": 280, "type": "mousemove", "message_id": 30}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 209, "x": 279, "type": "mousemove", "message_id": 32}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 209, "x": 279, "type": "mousemove", "message_id": 33}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 208, "x": 279, "type": "mousemove", "message_id": 34}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 207, "x": 279, "type": "mousemove", "message_id": 35}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 204, "x": 279, "type": "mousemove", "message_id": 36}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 201, "x": 279, "type": "mousemove", "message_id": 37}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 196, "x": 278, "type": "mousemove", "message_id": 38}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 190, "x": 277, "type": "mousemove", "message_id": 39}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 181, "x": 275, "type": "mouseover", "message_id": 40}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 181, "x": 275, "type": "mouseover", "message_id": 41}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 181, "x": 275, "type": "mousemove", "message_id": 42}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 169, "x": 270, "type": "mousemove", "message_id": 43}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 155, "x": 265, "type": "mousemove", "message_id": 44}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 141, "x": 260, "type": "mousemove", "message_id": 45}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 126, "x": 255, "type": "mousemove", "message_id": 46}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 112, "x": 248, "type": "mousemove", "message_id": 47}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 94, "x": 239, "type": "mousemove", "message_id": 48}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 86, "x": 234, "type": "mousemove", "message_id": 49}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 74, "x": 225, "type": "mousemove", "message_id": 50}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 69, "x": 220, "type": "mousemove", "message_id": 51}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 64, "x": 213, "type": "mousemove", "message_id": 52}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 62, "x": 209, "type": "mousemove", "message_id": 53}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 60, "x": 205, "type": "mouseover", "message_id": 54}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 60, "x": 205, "type": "mouseover", "message_id": 55}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 60, "x": 205, "type": "mousemove", "message_id": 56}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 202, "type": "mouseover", "message_id": 57}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 202, "type": "mouseover", "message_id": 58}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 59, "x": 202, "type": "mousemove", "message_id": 59}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 201, "type": "mouseover", "message_id": 60}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 201, "type": "mouseover", "message_id": 61}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 201, "type": "mousemove", "message_id": 62}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 200, "type": "mousemove", "message_id": 63}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 200, "type": "mousemove", "message_id": 64}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 199, "type": "mousemove", "message_id": 66}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 200, "type": "mousemove", "message_id": 65}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 199, "type": "mousemove", "message_id": 68}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 199, "type": "mousemove", "message_id": 67}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 199, "type": "mousemove", "message_id": 69}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 198, "type": "mousemove", "message_id": 70}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 58, "x": 198, "type": "mousemove", "message_id": 71}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 57, "x": 197, "type": "mousemove", "message_id": 72}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 56, "x": 196, "type": "mousemove", "message_id": 73}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 55, "x": 194, "type": "mouseover", "message_id": 74}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 55, "x": 194, "type": "mouseover", "message_id": 75}
+{"sender": 3914, "msg_type": "MouseEvent", "y": 55, "x": 194, "type": "mousemove", "message_id": 76}
diff --git a/recordings/test_touches.replay b/recordings/test_touches.replay
new file mode 100644
index 0000000000..ec11e571c6
--- /dev/null
+++ b/recordings/test_touches.replay
@@ -0,0 +1,167 @@
+{"scale": 0.8300384220585794, "sender": 4518, "msg_type": "ViewPort", "panY": 533.1751450631841, "panX": 1969.071635134498, "message_id": 142}
+{"touches": [{"screenY": 321, "screenX": 575}], "type": "touchstart", "sender": 4518, "msg_type": "TouchEvent", "message_id": 143}
+{"touches": [{"screenY": 288, "screenX": 561}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 145}
+{"touches": [{"screenY": 298, "screenX": 568}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 144}
+{"touches": [{"screenY": 262, "screenX": 540}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 146}
+{"touches": [{"screenY": 222, "screenX": 495}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 148}
+{"touches": [{"screenY": 234, "screenX": 512}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 147}
+{"touches": [{"screenY": 213, "screenX": 477}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 149}
+{"touches": [{"screenY": 207, "screenX": 460}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 150}
+{"touches": [{"screenY": 202, "screenX": 444}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 151}
+{"touches": [{"screenY": 200, "screenX": 429}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 152}
+{"touches": [{"screenY": 200, "screenX": 416}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 153}
+{"touches": [{"screenY": 202, "screenX": 403}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 154}
+{"touches": [{"screenY": 208, "screenX": 392}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 155}
+{"touches": [{"screenY": 216, "screenX": 384}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 156}
+{"touches": [{"screenY": 221, "screenX": 380}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 157}
+{"touches": [], "type": "touchend", "sender": 4518, "msg_type": "TouchEvent", "message_id": 158}
+{"touches": [{"screenY": 417, "screenX": 524}], "type": "touchstart", "sender": 4518, "msg_type": "TouchEvent", "message_id": 159}
+{"touches": [{"screenY": 410, "screenX": 516}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 161}
+{"touches": [{"screenY": 402, "screenX": 506}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 162}
+{"touches": [{"screenY": 390, "screenX": 492}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 164}
+{"touches": [{"screenY": 383, "screenX": 484}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 166}
+{"touches": [{"screenY": 374, "screenX": 475}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 168}
+{"touches": [{"screenY": 364, "screenX": 468}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 170}
+{"touches": [{"screenY": 353, "screenX": 461}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 172}
+{"touches": [{"screenY": 342, "screenX": 455}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 174}
+{"touches": [{"screenY": 330, "screenX": 450}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 176}
+{"touches": [{"screenY": 317, "screenX": 445}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 178}
+{"touches": [{"screenY": 304, "screenX": 440}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 180}
+{"touches": [{"screenY": 291, "screenX": 434}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 182}
+{"touches": [{"screenY": 279, "screenX": 427}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 184}
+{"touches": [{"screenY": 267, "screenX": 421}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 186}
+{"touches": [{"screenY": 255, "screenX": 412}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 188}
+{"touches": [{"screenY": 246, "screenX": 402}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 190}
+{"touches": [{"screenY": 237, "screenX": 391}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 192}
+{"touches": [{"screenY": 231, "screenX": 378}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 194}
+{"touches": [{"screenY": 225, "screenX": 365}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 196}
+{"touches": [{"screenY": 223, "screenX": 352}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 198}
+{"touches": [{"screenY": 223, "screenX": 340}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 200}
+{"touches": [{"screenY": 227, "screenX": 326}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 202}
+{"touches": [{"screenY": 236, "screenX": 311}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 204}
+{"touches": [{"screenY": 248, "screenX": 297}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 206}
+{"touches": [{"screenY": 263, "screenX": 284}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 208}
+{"touches": [{"screenY": 279, "screenX": 274}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 210}
+{"touches": [{"screenY": 293, "screenX": 269}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 212}
+{"touches": [{"screenY": 309, "screenX": 267}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 214}
+{"touches": [{"screenY": 319, "screenX": 267}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 216}
+{"touches": [{"screenY": 327, "screenX": 269}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 218}
+{"touches": [{"screenY": 329, "screenX": 271}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 220}
+{"touches": [], "type": "touchend", "sender": 4518, "msg_type": "TouchEvent", "message_id": 222}
+{"touches": [{"screenY": 420, "screenX": 726}], "type": "touchstart", "sender": 4518, "msg_type": "TouchEvent", "message_id": 223}
+{"touches": [{"screenY": 408, "screenX": 716}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 228}
+{"touches": [{"screenY": 393, "screenX": 698}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 229}
+{"touches": [{"screenY": 371, "screenX": 676}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 231}
+{"touches": [{"screenY": 361, "screenX": 666}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 233}
+{"touches": [{"screenY": 350, "screenX": 659}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 235}
+{"touches": [{"screenY": 339, "screenX": 653}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 237}
+{"touches": [{"screenY": 328, "screenX": 648}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 239}
+{"touches": [{"screenY": 316, "screenX": 644}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 241}
+{"touches": [{"screenY": 303, "screenX": 640}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 243}
+{"touches": [{"screenY": 290, "screenX": 636}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 245}
+{"touches": [{"screenY": 277, "screenX": 632}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 247}
+{"touches": [{"screenY": 264, "screenX": 626}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 249}
+{"touches": [{"screenY": 251, "screenX": 618}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 251}
+{"touches": [{"screenY": 239, "screenX": 609}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 253}
+{"touches": [{"screenY": 228, "screenX": 597}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 255}
+{"touches": [{"screenY": 221, "screenX": 583}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 257}
+{"touches": [{"screenY": 217, "screenX": 568}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 259}
+{"touches": [{"screenY": 217, "screenX": 552}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 261}
+{"touches": [{"screenY": 220, "screenX": 534}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 263}
+{"touches": [{"screenY": 227, "screenX": 519}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 265}
+{"touches": [{"screenY": 238, "screenX": 503}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 267}
+{"touches": [{"screenY": 248, "screenX": 492}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 269}
+{"touches": [{"screenY": 256, "screenX": 486}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 271}
+{"touches": [{"screenY": 264, "screenX": 483}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 273}
+{"touches": [], "type": "touchend", "sender": 4518, "msg_type": "TouchEvent", "message_id": 275}
+{"touches": [{"screenY": 353, "screenX": 381}], "type": "touchstart", "sender": 4518, "msg_type": "TouchEvent", "message_id": 276}
+{"touches": [{"screenY": 370, "screenX": 377}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 279}
+{"touches": [{"screenY": 355, "screenX": 378}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 278}
+{"touches": [{"screenY": 381, "screenX": 377}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 280}
+{"touches": [{"screenY": 390, "screenX": 382}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 281}
+{"touches": [{"screenY": 399, "screenX": 390}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 282}
+{"touches": [{"screenY": 405, "screenX": 401}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 283}
+{"touches": [{"screenY": 411, "screenX": 413}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 284}
+{"touches": [{"screenY": 416, "screenX": 426}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 285}
+{"touches": [{"screenY": 419, "screenX": 439}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 286}
+{"touches": [{"screenY": 421, "screenX": 454}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 287}
+{"touches": [{"screenY": 421, "screenX": 470}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 288}
+{"touches": [{"screenY": 421, "screenX": 486}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 289}
+{"touches": [{"screenY": 420, "screenX": 502}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 290}
+{"touches": [{"screenY": 416, "screenX": 517}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 291}
+{"touches": [{"screenY": 412, "screenX": 528}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 292}
+{"touches": [{"screenY": 409, "screenX": 536}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 293}
+{"touches": [{"screenY": 406, "screenX": 543}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 294}
+{"touches": [{"screenY": 402, "screenX": 546}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 295}
+{"touches": [{"screenY": 399, "screenX": 548}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 296}
+{"touches": [{"screenY": 396, "screenX": 548}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 297}
+{"touches": [{"screenY": 392, "screenX": 548}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 298}
+{"touches": [{"screenY": 388, "screenX": 548}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 299}
+{"touches": [{"screenY": 384, "screenX": 548}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 300}
+{"touches": [{"screenY": 382, "screenX": 547}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 301}
+{"touches": [{"screenY": 382, "screenX": 545}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 302}
+{"touches": [{"screenY": 381, "screenX": 543}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 303}
+{"touches": [{"screenY": 381, "screenX": 538}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 304}
+{"touches": [{"screenY": 382, "screenX": 531}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 305}
+{"touches": [], "type": "touchend", "sender": 4518, "msg_type": "TouchEvent", "message_id": 306}
+{"touches": [{"screenY": 498, "screenX": 327}, {"screenY": 359, "screenX": 594}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 309}
+{"touches": [{"screenY": 504, "screenX": 325}, {"screenY": 359, "screenX": 594}], "type": "touchstart", "sender": 4518, "msg_type": "TouchEvent", "message_id": 308}
+{"touches": [{"screenY": 504, "screenX": 325}], "type": "touchstart", "sender": 4518, "msg_type": "TouchEvent", "message_id": 307}
+{"touches": [{"screenY": 498, "screenX": 327}, {"screenY": 359, "screenX": 594}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 310}
+{"touches": [{"screenY": 498, "screenX": 329}, {"screenY": 363, "screenX": 588}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 312}
+{"touches": [{"screenY": 498, "screenX": 329}, {"screenY": 363, "screenX": 588}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 311}
+{"touches": [{"screenY": 498, "screenX": 331}, {"screenY": 365, "screenX": 585}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 313}
+{"touches": [{"screenY": 498, "screenX": 331}, {"screenY": 365, "screenX": 585}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 314}
+{"touches": [{"screenY": 498, "screenX": 334}, {"screenY": 368, "screenX": 580}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 315}
+{"touches": [{"screenY": 497, "screenX": 336}, {"screenY": 370, "screenX": 576}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 317}
+{"touches": [{"screenY": 498, "screenX": 334}, {"screenY": 368, "screenX": 580}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 316}
+{"touches": [{"screenY": 497, "screenX": 336}, {"screenY": 370, "screenX": 576}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 318}
+{"touches": [{"screenY": 496, "screenX": 339}, {"screenY": 373, "screenX": 572}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 319}
+{"touches": [{"screenY": 496, "screenX": 339}, {"screenY": 373, "screenX": 572}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 320}
+{"touches": [{"screenY": 496, "screenX": 340}, {"screenY": 374, "screenX": 568}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 321}
+{"touches": [{"screenY": 496, "screenX": 340}, {"screenY": 374, "screenX": 568}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 322}
+{"touches": [{"screenY": 495, "screenX": 342}, {"screenY": 375, "screenX": 563}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 323}
+{"touches": [{"screenY": 495, "screenX": 342}, {"screenY": 375, "screenX": 563}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 324}
+{"touches": [{"screenY": 495, "screenX": 344}, {"screenY": 377, "screenX": 559}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 325}
+{"touches": [{"screenY": 494, "screenX": 346}, {"screenY": 378, "screenX": 556}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 327}
+{"touches": [{"screenY": 495, "screenX": 344}, {"screenY": 377, "screenX": 559}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 326}
+{"touches": [{"screenY": 494, "screenX": 346}, {"screenY": 378, "screenX": 556}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 328}
+{"touches": [{"screenY": 494, "screenX": 348}, {"screenY": 380, "screenX": 553}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 329}
+{"touches": [{"screenY": 494, "screenX": 348}, {"screenY": 380, "screenX": 553}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 330}
+{"touches": [{"screenY": 493, "screenX": 350}, {"screenY": 382, "screenX": 550}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 331}
+{"touches": [{"screenY": 493, "screenX": 351}, {"screenY": 383, "screenX": 548}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 333}
+{"touches": [{"screenY": 493, "screenX": 350}, {"screenY": 382, "screenX": 550}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 332}
+{"touches": [{"screenY": 493, "screenX": 351}, {"screenY": 383, "screenX": 548}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 334}
+{"touches": [{"screenY": 493, "screenX": 352}, {"screenY": 384, "screenX": 547}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 335}
+{"touches": [{"screenY": 493, "screenX": 352}, {"screenY": 384, "screenX": 547}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 336}
+{"touches": [{"screenY": 493, "screenX": 353}, {"screenY": 384, "screenX": 547}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 337}
+{"touches": [{"screenY": 493, "screenX": 353}, {"screenY": 384, "screenX": 547}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 338}
+{"touches": [{"screenY": 495, "screenX": 345}, {"screenY": 378, "screenX": 553}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 339}
+{"touches": [{"screenY": 498, "screenX": 337}, {"screenY": 373, "screenX": 559}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 342}
+{"touches": [{"screenY": 498, "screenX": 337}, {"screenY": 373, "screenX": 559}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 341}
+{"touches": [{"screenY": 495, "screenX": 345}, {"screenY": 378, "screenX": 553}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 340}
+{"touches": [{"screenY": 498, "screenX": 334}, {"screenY": 370, "screenX": 563}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 343}
+{"touches": [{"screenY": 498, "screenX": 334}, {"screenY": 370, "screenX": 563}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 344}
+{"touches": [{"screenY": 498, "screenX": 332}, {"screenY": 369, "screenX": 564}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 346}
+{"touches": [{"screenY": 498, "screenX": 332}, {"screenY": 369, "screenX": 564}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 345}
+{"touches": [{"screenY": 498, "screenX": 331}, {"screenY": 368, "screenX": 566}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 347}
+{"touches": [{"screenY": 498, "screenX": 331}, {"screenY": 368, "screenX": 566}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 348}
+{"touches": [{"screenY": 498, "screenX": 330}, {"screenY": 366, "screenX": 566}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 350}
+{"touches": [{"screenY": 498, "screenX": 330}, {"screenY": 366, "screenX": 566}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 349}
+{"touches": [{"screenY": 498, "screenX": 329}, {"screenY": 365, "screenX": 567}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 351}
+{"touches": [{"screenY": 498, "screenX": 329}, {"screenY": 365, "screenX": 567}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 352}
+{"touches": [{"screenY": 498, "screenX": 328}, {"screenY": 364, "screenX": 568}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 353}
+{"touches": [{"screenY": 498, "screenX": 328}, {"screenY": 364, "screenX": 568}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 354}
+{"touches": [{"screenY": 498, "screenX": 328}, {"screenY": 364, "screenX": 569}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 355}
+{"touches": [{"screenY": 498, "screenX": 328}, {"screenY": 364, "screenX": 569}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 356}
+{"touches": [{"screenY": 498, "screenX": 327}, {"screenY": 363, "screenX": 570}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 357}
+{"touches": [{"screenY": 498, "screenX": 327}, {"screenY": 363, "screenX": 570}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 358}
+{"touches": [{"screenY": 498, "screenX": 327}, {"screenY": 361, "screenX": 571}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 359}
+{"touches": [{"screenY": 498, "screenX": 327}, {"screenY": 361, "screenX": 571}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 360}
+{"touches": [{"screenY": 498, "screenX": 326}, {"screenY": 360, "screenX": 572}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 361}
+{"touches": [{"screenY": 498, "screenX": 326}, {"screenY": 360, "screenX": 572}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 362}
+{"touches": [{"screenY": 498, "screenX": 325}, {"screenY": 359, "screenX": 573}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 363}
+{"touches": [{"screenY": 498, "screenX": 325}, {"screenY": 359, "screenX": 573}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 364}
+{"touches": [{"screenY": 499, "screenX": 324}, {"screenY": 357, "screenX": 575}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 365}
+{"touches": [{"screenY": 499, "screenX": 324}, {"screenY": 357, "screenX": 575}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 366}
+{"touches": [{"screenY": 499, "screenX": 323}, {"screenY": 356, "screenX": 576}], "type": "touchmove", "sender": 4518, "msg_type": "TouchEvent", "message_id": 367}
diff --git a/recordings/test_undo_redo.replay b/recordings/test_undo_redo.replay
new file mode 100644
index 0000000000..e269f78e63
--- /dev/null
+++ b/recordings/test_undo_redo.replay
@@ -0,0 +1,211 @@
+{"panX": -250.5, "panY": -112, "scale": 2, "sender": 3699, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 173, "type": "mousemove", "message_id": 16}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 175, "type": "mouseover", "message_id": 18}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 175, "type": "mouseover", "message_id": 17}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 175, "type": "mousemove", "message_id": 19}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 177, "type": "mouseover", "message_id": 20}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 177, "type": "mouseover", "message_id": 21}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 181, "type": "mousemove", "message_id": 23}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 177, "type": "mousemove", "message_id": 22}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 62, "x": 187, "type": "mouseover", "message_id": 24}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 62, "x": 187, "type": "mouseover", "message_id": 25}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 62, "x": 187, "type": "mousemove", "message_id": 26}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 69, "x": 193, "type": "mousemove", "message_id": 27}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 79, "x": 202, "type": "mousemove", "message_id": 28}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 86, "x": 209, "type": "mousemove", "message_id": 29}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 97, "x": 217, "type": "mousemove", "message_id": 30}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 108, "x": 223, "type": "mousemove", "message_id": 31}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 120, "x": 229, "type": "mousemove", "message_id": 32}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 133, "x": 233, "type": "mousemove", "message_id": 33}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 148, "x": 238, "type": "mousemove", "message_id": 34}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 165, "x": 241, "type": "mousemove", "message_id": 35}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 182, "x": 245, "type": "mousemove", "message_id": 36}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 197, "x": 248, "type": "mousemove", "message_id": 37}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 209, "x": 249, "type": "mouseover", "message_id": 38}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 209, "x": 249, "type": "mouseover", "message_id": 39}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 209, "x": 249, "type": "mousemove", "message_id": 40}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 249, "type": "mousemove", "message_id": 41}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 223, "x": 249, "type": "mousemove", "message_id": 42}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 227, "x": 249, "type": "mousemove", "message_id": 43}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 229, "x": 249, "type": "mousemove", "message_id": 44}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 229, "x": 249, "type": "mousemove", "message_id": 45}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 229, "x": 249, "type": "mousemove", "message_id": 46}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 229, "x": 249, "type": "mousemove", "message_id": 47}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 229, "x": 249, "type": "mousedown", "message_id": 48}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 229, "x": 249, "type": "mouseup", "message_id": 49}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 50, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 229, "x": 249, "type": "mousemove", "message_id": 52}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 229, "x": 249, "type": "mousemove", "message_id": 53}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 248, "type": "mousemove", "message_id": 54}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 248, "type": "mousemove", "message_id": 55}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 248, "type": "mousemove", "message_id": 56}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 249, "type": "mousemove", "message_id": 57}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 250, "type": "mousemove", "message_id": 58}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 251, "type": "mousemove", "message_id": 59}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 251, "type": "mousemove", "message_id": 60}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 251, "type": "mousemove", "message_id": 61}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 251, "type": "mousemove", "message_id": 62}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 251, "type": "mousemove", "message_id": 63}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 64}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 65}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 251, "type": "mousedown", "message_id": 66}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 68}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 69}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 251, "type": "mousemove", "message_id": 70}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 229, "x": 251, "type": "mousemove", "message_id": 71}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 230, "x": 250, "type": "mousemove", "message_id": 73}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 232, "x": 249, "type": "mousemove", "message_id": 75}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 234, "x": 248, "type": "mousemove", "message_id": 77}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 237, "x": 246, "type": "mouseover", "message_id": 79}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 237, "x": 246, "type": "mouseover", "message_id": 80}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 237, "x": 246, "type": "mousemove", "message_id": 81}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 240, "x": 244, "type": "mousemove", "message_id": 83}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 244, "x": 242, "type": "mousemove", "message_id": 85}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 249, "x": 239, "type": "mousemove", "message_id": 87}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 256, "x": 236, "type": "mousemove", "message_id": 89}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 233, "type": "mousemove", "message_id": 91}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 230, "type": "mousemove", "message_id": 93}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 228, "type": "mousemove", "message_id": 95}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 226, "type": "mousemove", "message_id": 97}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 225, "type": "mouseover", "message_id": 99}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 225, "type": "mouseover", "message_id": 100}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 225, "type": "mousemove", "message_id": 101}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 304, "x": 224, "type": "mousemove", "message_id": 103}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 310, "x": 224, "type": "mousemove", "message_id": 105}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 315, "x": 224, "type": "mousemove", "message_id": 107}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 224, "type": "mousemove", "message_id": 109}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 326, "x": 225, "type": "mousemove", "message_id": 111}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 227, "type": "mouseover", "message_id": 113}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 227, "type": "mousemove", "message_id": 115}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 227, "type": "mouseover", "message_id": 114}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 342, "x": 229, "type": "mousemove", "message_id": 117}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 352, "x": 233, "type": "mouseover", "message_id": 119}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 352, "x": 233, "type": "mouseover", "message_id": 120}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 352, "x": 233, "type": "mousemove", "message_id": 121}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 362, "x": 238, "type": "mousemove", "message_id": 123}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 369, "x": 242, "type": "mouseover", "message_id": 125}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 369, "x": 242, "type": "mousemove", "message_id": 127}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 369, "x": 242, "type": "mouseover", "message_id": 126}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 379, "x": 248, "type": "mouseover", "message_id": 129}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 379, "x": 248, "type": "mouseover", "message_id": 130}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 379, "x": 248, "type": "mousemove", "message_id": 131}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 387, "x": 255, "type": "mouseover", "message_id": 133}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 387, "x": 255, "type": "mouseover", "message_id": 134}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 387, "x": 255, "type": "mousemove", "message_id": 135}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 394, "x": 264, "type": "mousemove", "message_id": 137}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 409, "x": 289, "type": "mousemove", "message_id": 141}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 401, "x": 275, "type": "mousemove", "message_id": 139}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 415, "x": 306, "type": "mousemove", "message_id": 143}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 419, "x": 324, "type": "mousemove", "message_id": 145}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 422, "x": 343, "type": "mousemove", "message_id": 147}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 425, "x": 361, "type": "mousemove", "message_id": 149}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 426, "x": 375, "type": "mouseover", "message_id": 151}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 426, "x": 375, "type": "mouseover", "message_id": 152}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 426, "x": 375, "type": "mousemove", "message_id": 153}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 427, "x": 390, "type": "mousemove", "message_id": 155}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 427, "x": 400, "type": "mousemove", "message_id": 157}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 426, "x": 414, "type": "mousemove", "message_id": 159}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 424, "x": 428, "type": "mouseover", "message_id": 161}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 424, "x": 428, "type": "mouseover", "message_id": 162}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 424, "x": 428, "type": "mousemove", "message_id": 163}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 421, "x": 441, "type": "mousemove", "message_id": 165}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 418, "x": 449, "type": "mousemove", "message_id": 167}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 415, "x": 458, "type": "mousemove", "message_id": 169}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 411, "x": 464, "type": "mousemove", "message_id": 171}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 408, "x": 467, "type": "mousemove", "message_id": 173}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 406, "x": 469, "type": "mousemove", "message_id": 175}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 404, "x": 470, "type": "mouseover", "message_id": 177}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 404, "x": 470, "type": "mouseover", "message_id": 178}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 404, "x": 470, "type": "mousemove", "message_id": 179}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 402, "x": 471, "type": "mousemove", "message_id": 181}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 401, "x": 472, "type": "mousemove", "message_id": 183}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 401, "x": 472, "type": "mousemove", "message_id": 185}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 400, "x": 473, "type": "mousemove", "message_id": 187}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 400, "x": 473, "type": "mousemove", "message_id": 189}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 400, "x": 473, "type": "mousemove", "message_id": 191}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 400, "x": 473, "type": "mousemove", "message_id": 194}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 400, "x": 473, "type": "mouseup", "message_id": 193}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 400, "x": 473, "type": "mousemove", "message_id": 195}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 399, "x": 474, "type": "mousemove", "message_id": 196}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 197}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 399, "x": 474, "type": "mousemove", "message_id": 198}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 199, "altKey": false, "metaKey": true, "key": "Meta", "ctrlKey": false, "type": "keydown", "keyCode": 91}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 399, "x": 474, "type": "mousemove", "message_id": 200}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 201, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 203, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 205, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 207, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 209, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 211, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 213, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 215, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 217, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 219, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 221, "altKey": false, "metaKey": true, "key": "Shift", "ctrlKey": false, "type": "keydown", "keyCode": 16}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 222, "altKey": false, "metaKey": true, "key": "Z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 224, "altKey": false, "metaKey": true, "key": "Z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 226, "altKey": false, "metaKey": true, "key": "Z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 228, "altKey": false, "metaKey": true, "key": "Z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 230, "altKey": false, "metaKey": true, "key": "Z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 232, "altKey": false, "metaKey": true, "key": "Z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 399, "x": 474, "type": "mousemove", "message_id": 234}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 358, "x": 483, "type": "mouseover", "message_id": 235}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 358, "x": 483, "type": "mouseover", "message_id": 236}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 345, "x": 485, "type": "mousemove", "message_id": 238}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 358, "x": 483, "type": "mousemove", "message_id": 237}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 330, "x": 486, "type": "mouseover", "message_id": 239}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 330, "x": 486, "type": "mouseover", "message_id": 240}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 330, "x": 486, "type": "mousemove", "message_id": 241}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 485, "type": "mouseover", "message_id": 242}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 485, "type": "mouseover", "message_id": 243}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 485, "type": "mousemove", "message_id": 244}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 478, "type": "mousemove", "message_id": 245}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 226, "x": 465, "type": "mousemove", "message_id": 246}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 201, "x": 444, "type": "mousemove", "message_id": 247}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 180, "x": 421, "type": "mousemove", "message_id": 248}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 162, "x": 396, "type": "mousemove", "message_id": 249}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 147, "x": 374, "type": "mousemove", "message_id": 250}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 137, "x": 358, "type": "mousemove", "message_id": 251}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 129, "x": 348, "type": "mousemove", "message_id": 252}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 124, "x": 340, "type": "mousemove", "message_id": 253}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 121, "x": 335, "type": "mousemove", "message_id": 254}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 117, "x": 327, "type": "mousemove", "message_id": 255}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 107, "x": 308, "type": "mousemove", "message_id": 257}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 318, "type": "mousemove", "message_id": 256}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 102, "x": 300, "type": "mousemove", "message_id": 258}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 96, "x": 291, "type": "mousemove", "message_id": 259}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 89, "x": 282, "type": "mousemove", "message_id": 260}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 83, "x": 270, "type": "mousemove", "message_id": 261}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 75, "x": 254, "type": "mousemove", "message_id": 262}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 70, "x": 234, "type": "mousemove", "message_id": 263}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 66, "x": 215, "type": "mousemove", "message_id": 264}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 64, "x": 199, "type": "mousemove", "message_id": 265}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 62, "x": 190, "type": "mousemove", "message_id": 266}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 61, "x": 181, "type": "mouseover", "message_id": 267}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 61, "x": 181, "type": "mouseover", "message_id": 268}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 61, "x": 181, "type": "mousemove", "message_id": 269}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 174, "type": "mouseover", "message_id": 270}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 174, "type": "mouseover", "message_id": 271}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 174, "type": "mousemove", "message_id": 272}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 170, "type": "mousemove", "message_id": 273}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 55, "x": 167, "type": "mousemove", "message_id": 274}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 166, "type": "mouseover", "message_id": 275}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 166, "type": "mouseover", "message_id": 276}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 166, "type": "mousemove", "message_id": 277}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 165, "type": "mousemove", "message_id": 278}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 164, "type": "mousemove", "message_id": 279}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 165, "type": "mousemove", "message_id": 280}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 167, "type": "mouseover", "message_id": 281}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 167, "type": "mouseover", "message_id": 282}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 167, "type": "mousemove", "message_id": 283}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 171, "type": "mousemove", "message_id": 284}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 173, "type": "mousemove", "message_id": 285}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 174, "type": "mouseover", "message_id": 286}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 174, "type": "mousemove", "message_id": 288}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 174, "type": "mouseover", "message_id": 287}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 174, "type": "mousemove", "message_id": 289}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 175, "type": "mousemove", "message_id": 290}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 175, "type": "mousemove", "message_id": 291}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 176, "type": "mousemove", "message_id": 292}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 177, "type": "mousemove", "message_id": 293}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 178, "type": "mousemove", "message_id": 294}
diff --git a/recordings/test_undo_redo_control_mouse_wheel.replay b/recordings/test_undo_redo_control_mouse_wheel.replay
new file mode 100644
index 0000000000..d32d6f14e9
--- /dev/null
+++ b/recordings/test_undo_redo_control_mouse_wheel.replay
@@ -0,0 +1,450 @@
+{"panX": -251.90353960396033, "panY": -112.85346534653456, "scale": 2.01, "sender": 3699, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 45, "x": 197, "type": "mousemove", "message_id": 386}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 199, "type": "mouseover", "message_id": 387}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 199, "type": "mouseover", "message_id": 388}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 199, "type": "mousemove", "message_id": 389}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 201, "type": "mousemove", "message_id": 390}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 56, "x": 204, "type": "mousemove", "message_id": 391}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 62, "x": 208, "type": "mouseover", "message_id": 392}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 62, "x": 208, "type": "mousemove", "message_id": 394}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 62, "x": 208, "type": "mouseover", "message_id": 393}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 69, "x": 211, "type": "mousemove", "message_id": 395}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 74, "x": 214, "type": "mousemove", "message_id": 396}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 83, "x": 217, "type": "mousemove", "message_id": 397}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 91, "x": 221, "type": "mousemove", "message_id": 398}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 99, "x": 224, "type": "mousemove", "message_id": 399}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 106, "x": 227, "type": "mousemove", "message_id": 400}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 114, "x": 230, "type": "mousemove", "message_id": 401}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 121, "x": 232, "type": "mousemove", "message_id": 402}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 130, "x": 233, "type": "mouseover", "message_id": 403}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 130, "x": 233, "type": "mouseover", "message_id": 404}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 130, "x": 233, "type": "mousemove", "message_id": 405}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 139, "x": 234, "type": "mousemove", "message_id": 406}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 148, "x": 236, "type": "mouseover", "message_id": 407}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 148, "x": 236, "type": "mouseover", "message_id": 408}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 148, "x": 236, "type": "mousemove", "message_id": 409}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 158, "x": 240, "type": "mousemove", "message_id": 410}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 166, "x": 243, "type": "mousemove", "message_id": 411}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 174, "x": 246, "type": "mousemove", "message_id": 412}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 181, "x": 249, "type": "mousemove", "message_id": 413}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 186, "x": 250, "type": "mouseover", "message_id": 414}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 186, "x": 250, "type": "mouseover", "message_id": 415}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 186, "x": 250, "type": "mousemove", "message_id": 416}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 190, "x": 251, "type": "mousemove", "message_id": 417}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 193, "x": 250, "type": "mousemove", "message_id": 418}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 196, "x": 249, "type": "mousemove", "message_id": 419}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 199, "x": 248, "type": "mousemove", "message_id": 420}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 202, "x": 248, "type": "mousemove", "message_id": 421}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 205, "x": 248, "type": "mousemove", "message_id": 422}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 206, "x": 248, "type": "mousemove", "message_id": 423}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 208, "x": 248, "type": "mousemove", "message_id": 424}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 209, "x": 248, "type": "mousemove", "message_id": 425}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 209, "x": 248, "type": "mousemove", "message_id": 426}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 248, "type": "mousemove", "message_id": 427}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 211, "x": 248, "type": "mousemove", "message_id": 428}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 212, "x": 247, "type": "mousemove", "message_id": 429}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 213, "x": 247, "type": "mousemove", "message_id": 430}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 214, "x": 247, "type": "mousemove", "message_id": 431}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 215, "x": 247, "type": "mousemove", "message_id": 432}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 215, "x": 247, "type": "mousemove", "message_id": 433}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 216, "x": 247, "type": "mousemove", "message_id": 434}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 216, "x": 247, "type": "mousemove", "message_id": 435}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 216, "x": 247, "type": "mousemove", "message_id": 436}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 217, "x": 246, "type": "mousemove", "message_id": 437}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 246, "type": "mousemove", "message_id": 438}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 222, "x": 245, "type": "mousemove", "message_id": 439}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 224, "x": 245, "type": "mousemove", "message_id": 440}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 227, "x": 245, "type": "mousemove", "message_id": 441}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 230, "x": 245, "type": "mousemove", "message_id": 442}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 235, "x": 245, "type": "mousemove", "message_id": 443}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 240, "x": 245, "type": "mousemove", "message_id": 444}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 247, "x": 245, "type": "mousemove", "message_id": 445}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 256, "x": 244, "type": "mousemove", "message_id": 446}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 243, "type": "mousemove", "message_id": 447}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 243, "type": "mousemove", "message_id": 448}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 244, "type": "mousemove", "message_id": 449}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 291, "x": 245, "type": "mousemove", "message_id": 450}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 246, "type": "mousemove", "message_id": 451}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 246, "type": "mousemove", "message_id": 452}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 246, "type": "mousemove", "message_id": 453}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 245, "type": "mousemove", "message_id": 454}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 245, "type": "mousemove", "message_id": 455}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 245, "type": "mousemove", "message_id": 456}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 245, "type": "mousedown", "message_id": 457}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 245, "type": "mouseup", "message_id": 458}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 245, "type": "mousemove", "message_id": 459}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 246, "type": "mousemove", "message_id": 460}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 248, "type": "mouseover", "message_id": 461}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 248, "type": "mouseover", "message_id": 462}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 248, "type": "mousemove", "message_id": 463}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 249, "type": "mouseover", "message_id": 464}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 249, "type": "mouseover", "message_id": 465}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 249, "type": "mousemove", "message_id": 466}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 250, "type": "mousemove", "message_id": 467}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 468, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 250, "type": "mousemove", "message_id": 470}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 251, "type": "mousemove", "message_id": 471}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 253, "type": "mouseover", "message_id": 472}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 253, "type": "mouseover", "message_id": 473}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 253, "type": "mousemove", "message_id": 474}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 255, "type": "mousemove", "message_id": 475}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 256, "type": "mouseover", "message_id": 476}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 256, "type": "mouseover", "message_id": 477}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 256, "type": "mousemove", "message_id": 478}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 256, "type": "mousemove", "message_id": 479}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 256, "type": "mousemove", "message_id": 480}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 256, "type": "mousedown", "message_id": 481}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 256, "type": "mouseup", "message_id": 483}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 257, "type": "mousemove", "message_id": 484}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 258, "type": "mousemove", "message_id": 485}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 260, "type": "mouseover", "message_id": 486}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 260, "type": "mouseover", "message_id": 487}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 260, "type": "mousemove", "message_id": 488}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 261, "type": "mouseover", "message_id": 489}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 261, "type": "mouseover", "message_id": 490}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 261, "type": "mousemove", "message_id": 492}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 261, "type": "mousemove", "message_id": 491}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 261, "type": "mousemove", "message_id": 493}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 261, "type": "mousemove", "message_id": 494}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 495}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 496}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": 0, "delta": 2, "type": "wheel", "message_id": 497}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": 0, "delta": 3, "type": "wheel", "message_id": 498}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": 0, "delta": 2, "type": "wheel", "message_id": 499}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": 0, "delta": 3, "type": "wheel", "message_id": 500}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 501}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": 0, "delta": 2, "type": "wheel", "message_id": 502}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 503}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": 0, "delta": 2, "type": "wheel", "message_id": 504}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 505}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": 0, "delta": 2, "type": "wheel", "message_id": 506}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 507}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 508}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": 0, "delta": 2, "type": "wheel", "message_id": 509}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 510}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 511}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 261, "type": "mousedown", "message_id": 512}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 261, "type": "mousemove", "message_id": 515}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 302, "x": 262, "type": "mousemove", "message_id": 516}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 264, "type": "mouseover", "message_id": 518}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 264, "type": "mouseover", "message_id": 519}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 264, "type": "mousemove", "message_id": 520}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 306, "x": 271, "type": "mouseover", "message_id": 522}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 306, "x": 271, "type": "mouseover", "message_id": 523}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 306, "x": 271, "type": "mousemove", "message_id": 524}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 309, "x": 282, "type": "mousemove", "message_id": 526}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 528}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 296, "type": "mousemove", "message_id": 529}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 308, "type": "mousemove", "message_id": 531}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 325, "type": "mousemove", "message_id": 533}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 341, "type": "mousemove", "message_id": 535}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 355, "type": "mousemove", "message_id": 537}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 369, "type": "mouseover", "message_id": 539}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 369, "type": "mouseover", "message_id": 540}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 369, "type": "mousemove", "message_id": 541}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 383, "type": "mouseover", "message_id": 543}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 383, "type": "mouseover", "message_id": 544}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 383, "type": "mousemove", "message_id": 545}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 399, "type": "mousemove", "message_id": 547}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 413, "type": "mouseover", "message_id": 550}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 413, "type": "mouseover", "message_id": 549}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 413, "type": "mousemove", "message_id": 551}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 426, "type": "mousemove", "message_id": 553}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 440, "type": "mousemove", "message_id": 555}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 453, "type": "mousemove", "message_id": 557}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 322, "x": 466, "type": "mouseover", "message_id": 559}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 322, "x": 466, "type": "mouseover", "message_id": 560}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 322, "x": 466, "type": "mousemove", "message_id": 561}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 474, "type": "mouseover", "message_id": 564}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 474, "type": "mouseover", "message_id": 563}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 474, "type": "mousemove", "message_id": 565}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 481, "type": "mousemove", "message_id": 567}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 486, "type": "mousemove", "message_id": 569}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 491, "type": "mousemove", "message_id": 571}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 494, "type": "mousemove", "message_id": 573}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 497, "type": "mousemove", "message_id": 575}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 498, "type": "mouseover", "message_id": 577}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 498, "type": "mouseover", "message_id": 578}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 498, "type": "mousemove", "message_id": 579}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 500, "type": "mouseover", "message_id": 581}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 500, "type": "mouseover", "message_id": 582}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 500, "type": "mousemove", "message_id": 583}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 315, "x": 504, "type": "mousemove", "message_id": 585}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 314, "x": 509, "type": "mousemove", "message_id": 587}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 513, "type": "mousemove", "message_id": 589}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 518, "type": "mousemove", "message_id": 591}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 521, "type": "mousemove", "message_id": 593}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 523, "type": "mousemove", "message_id": 595}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 524, "type": "mouseover", "message_id": 598}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 524, "type": "mouseover", "message_id": 597}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 524, "type": "mousemove", "message_id": 599}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 525, "type": "mousemove", "message_id": 601}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 526, "type": "mousemove", "message_id": 603}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 526, "type": "mousemove", "message_id": 605}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 527, "type": "mousemove", "message_id": 607}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 528, "type": "mousemove", "message_id": 609}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 528, "type": "mousemove", "message_id": 611}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 529, "type": "mousemove", "message_id": 613}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 530, "type": "mousemove", "message_id": 615}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 532, "type": "mouseover", "message_id": 617}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 532, "type": "mouseover", "message_id": 618}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 532, "type": "mousemove", "message_id": 619}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 535, "type": "mousemove", "message_id": 621}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 538, "type": "mousemove", "message_id": 623}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 540, "type": "mousemove", "message_id": 625}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 541, "type": "mouseover", "message_id": 628}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 541, "type": "mouseover", "message_id": 627}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 541, "type": "mousemove", "message_id": 629}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 631}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 632}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 633}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 634}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 541, "type": "mouseup", "message_id": 635}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 636}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 637}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 540, "type": "mousemove", "message_id": 638}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 540, "type": "mousemove", "message_id": 639}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 540, "type": "mousemove", "message_id": 640}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 540, "type": "mousemove", "message_id": 641}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 539, "type": "mousemove", "message_id": 642}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 539, "type": "mousemove", "message_id": 643}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 539, "type": "mousemove", "message_id": 644}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 539, "type": "mousemove", "message_id": 645}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 539, "type": "mousemove", "message_id": 646}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 539, "type": "mousemove", "message_id": 647}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 539, "type": "mousemove", "message_id": 648}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 538, "type": "mousemove", "message_id": 649}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 538, "type": "mousemove", "message_id": 650}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 538, "type": "mousemove", "message_id": 651}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 538, "type": "mousemove", "message_id": 652}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 538, "type": "mousemove", "message_id": 653}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 537, "type": "mousemove", "message_id": 654}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 537, "type": "mousemove", "message_id": 655}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 656, "altKey": false, "metaKey": true, "key": "Meta", "ctrlKey": false, "type": "keydown", "keyCode": 91}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 657, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 659, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 661, "altKey": false, "metaKey": true, "key": "z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 663, "altKey": false, "metaKey": false, "key": "Control", "ctrlKey": true, "type": "keydown", "keyCode": 17}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 664, "altKey": false, "metaKey": false, "key": "z", "ctrlKey": true, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 666, "altKey": false, "metaKey": false, "key": "z", "ctrlKey": true, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 668, "altKey": false, "metaKey": false, "key": "z", "ctrlKey": true, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 670, "altKey": false, "metaKey": false, "key": "Shift", "ctrlKey": false, "type": "keydown", "keyCode": 16}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 671, "altKey": false, "metaKey": false, "key": "Control", "ctrlKey": true, "type": "keydown", "keyCode": 17}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 672, "altKey": false, "metaKey": false, "key": "Z", "ctrlKey": true, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 674, "altKey": false, "metaKey": false, "key": "Z", "ctrlKey": true, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 676, "altKey": false, "metaKey": false, "key": "Z", "ctrlKey": true, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 678, "altKey": false, "metaKey": false, "key": "Shift", "ctrlKey": false, "type": "keydown", "keyCode": 16}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 679, "altKey": false, "metaKey": true, "key": "Meta", "ctrlKey": false, "type": "keydown", "keyCode": 91}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 680, "altKey": false, "metaKey": true, "key": "Z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 682, "altKey": false, "metaKey": true, "key": "Z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": true, "message_id": 684, "altKey": false, "metaKey": true, "key": "Z", "ctrlKey": false, "type": "keydown", "keyCode": 90}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 537, "type": "mousemove", "message_id": 686}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 519, "type": "mouseover", "message_id": 687}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 519, "type": "mousemove", "message_id": 689}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 519, "type": "mouseover", "message_id": 688}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 518, "type": "mouseover", "message_id": 690}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 518, "type": "mouseover", "message_id": 691}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 518, "type": "mousemove", "message_id": 692}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 517, "type": "mousemove", "message_id": 693}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 516, "type": "mousemove", "message_id": 694}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 515, "type": "mousemove", "message_id": 695}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 515, "type": "mousemove", "message_id": 696}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 514, "type": "mousemove", "message_id": 697}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 514, "type": "mousemove", "message_id": 698}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 514, "type": "mousemove", "message_id": 699}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 514, "type": "mousemove", "message_id": 700}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 514, "type": "mousemove", "message_id": 701}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 513, "type": "mousemove", "message_id": 702}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 513, "type": "mousemove", "message_id": 703}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 513, "type": "mousemove", "message_id": 704}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 705, "altKey": false, "metaKey": true, "key": "Meta", "ctrlKey": false, "type": "keydown", "keyCode": 91}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 706}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 708}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 710}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 712}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 714}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 716}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 718}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 720}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 722}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 724}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 726}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 728}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 730}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 732}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 734}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 736}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 738}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 740}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 742}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 744}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 746}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 748}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 750}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 752}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 756}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 754}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 758}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 760}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 762}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 764}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 766}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 768}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 770}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 772}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 774}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 776}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 778}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 780}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 782}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 784}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 786}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 788}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 790}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 792}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 794}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 796}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 798}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 800}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 802}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 804}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 6, "delta": 6, "type": "wheel", "message_id": 806}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 808}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 810}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 812}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 814}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 816}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 818}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 820}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 822}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 824}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 826}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 828}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 830}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 832}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 834}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 836}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 838}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 840}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 842}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 844}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 846}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 848}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 850}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 852}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 854}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 855}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 856}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 857}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 858}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 860}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 862}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 864}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 866}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 868}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 870}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 872}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 874}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 876}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 878}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 880}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 882}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 884}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 886}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 888}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 890}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 892}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 894}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 896}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 898}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 900}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 902}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 904}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 906}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 908}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 910}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 912}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 916}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 914}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 918}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 920}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 922}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 924}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 926}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 928}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 930}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 932}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 934}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 936}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 938}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 940}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 942}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 944}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 946}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 948}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 950}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 952}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 513, "type": "mousemove", "message_id": 954}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 306, "x": 509, "type": "mouseover", "message_id": 955}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 306, "x": 509, "type": "mouseover", "message_id": 956}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 306, "x": 509, "type": "mousemove", "message_id": 957}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 302, "x": 505, "type": "mousemove", "message_id": 958}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 500, "type": "mouseover", "message_id": 959}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 500, "type": "mouseover", "message_id": 960}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 488, "type": "mousemove", "message_id": 962}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 500, "type": "mousemove", "message_id": 961}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 478, "type": "mousemove", "message_id": 963}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 267, "x": 462, "type": "mousemove", "message_id": 964}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 447, "type": "mousemove", "message_id": 965}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 242, "x": 434, "type": "mousemove", "message_id": 966}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 235, "x": 426, "type": "mousemove", "message_id": 967}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 225, "x": 415, "type": "mousemove", "message_id": 968}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 215, "x": 405, "type": "mousemove", "message_id": 969}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 203, "x": 396, "type": "mousemove", "message_id": 970}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 192, "x": 389, "type": "mousemove", "message_id": 971}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 174, "x": 379, "type": "mousemove", "message_id": 972}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 156, "x": 368, "type": "mousemove", "message_id": 973}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 141, "x": 358, "type": "mousemove", "message_id": 974}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 132, "x": 352, "type": "mousemove", "message_id": 975}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 122, "x": 342, "type": "mousemove", "message_id": 976}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 332, "type": "mousemove", "message_id": 977}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 106, "x": 323, "type": "mousemove", "message_id": 978}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 96, "x": 310, "type": "mousemove", "message_id": 979}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 89, "x": 299, "type": "mousemove", "message_id": 980}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 83, "x": 290, "type": "mousemove", "message_id": 981}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 79, "x": 285, "type": "mousemove", "message_id": 982}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 75, "x": 278, "type": "mousemove", "message_id": 983}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 71, "x": 271, "type": "mousemove", "message_id": 984}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 67, "x": 263, "type": "mousemove", "message_id": 985}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 64, "x": 257, "type": "mousemove", "message_id": 986}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 247, "type": "mousemove", "message_id": 987}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 55, "x": 238, "type": "mousemove", "message_id": 988}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 231, "type": "mousemove", "message_id": 989}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 227, "type": "mouseover", "message_id": 990}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 227, "type": "mouseover", "message_id": 991}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 227, "type": "mousemove", "message_id": 992}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 51, "x": 223, "type": "mousemove", "message_id": 993}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 219, "type": "mousemove", "message_id": 994}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 50, "x": 217, "type": "mousemove", "message_id": 995}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 49, "x": 214, "type": "mousemove", "message_id": 996}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 211, "type": "mousemove", "message_id": 997}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 209, "type": "mouseover", "message_id": 999}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 209, "type": "mousemove", "message_id": 998}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 209, "type": "mousemove", "message_id": 1001}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 209, "type": "mouseover", "message_id": 1000}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 209, "type": "mousemove", "message_id": 1002}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 208, "type": "mousemove", "message_id": 1003}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 206, "type": "mouseover", "message_id": 1004}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 206, "type": "mousemove", "message_id": 1006}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 206, "type": "mouseover", "message_id": 1005}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 205, "type": "mouseover", "message_id": 1007}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 205, "type": "mouseover", "message_id": 1008}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 205, "type": "mousemove", "message_id": 1009}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 204, "type": "mousemove", "message_id": 1010}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 203, "type": "mousemove", "message_id": 1011}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 203, "type": "mousemove", "message_id": 1012}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 202, "type": "mousemove", "message_id": 1013}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 201, "type": "mousemove", "message_id": 1014}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 199, "type": "mouseover", "message_id": 1015}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 199, "type": "mouseover", "message_id": 1016}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 48, "x": 199, "type": "mousemove", "message_id": 1017}
diff --git a/recordings/test_undo_redo_create_destroy.replay b/recordings/test_undo_redo_create_destroy.replay
new file mode 100644
index 0000000000..3309ec7380
--- /dev/null
+++ b/recordings/test_undo_redo_create_destroy.replay
@@ -0,0 +1,2041 @@
+{"panX": -142.77590504486835, "panY": 20.490036818993417, "scale": 1.629999999999996, "sender": 3699, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 179, "type": "mousemove", "message_id": 2290}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 52, "x": 180, "type": "mousemove", "message_id": 2291}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 53, "x": 181, "type": "mousemove", "message_id": 2292}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 183, "type": "mouseover", "message_id": 2293}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 183, "type": "mousemove", "message_id": 2295}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 183, "type": "mouseover", "message_id": 2294}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 55, "x": 185, "type": "mousemove", "message_id": 2296}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 188, "type": "mouseover", "message_id": 2297}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 188, "type": "mouseover", "message_id": 2298}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 57, "x": 188, "type": "mousemove", "message_id": 2299}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 59, "x": 190, "type": "mousemove", "message_id": 2300}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 61, "x": 192, "type": "mouseover", "message_id": 2302}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 61, "x": 192, "type": "mouseover", "message_id": 2301}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 63, "x": 193, "type": "mouseover", "message_id": 2304}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 61, "x": 192, "type": "mousemove", "message_id": 2303}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 63, "x": 193, "type": "mouseover", "message_id": 2305}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 63, "x": 193, "type": "mousemove", "message_id": 2306}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 71, "x": 193, "type": "mousemove", "message_id": 2308}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 66, "x": 193, "type": "mousemove", "message_id": 2307}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 77, "x": 194, "type": "mousemove", "message_id": 2309}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 86, "x": 196, "type": "mouseover", "message_id": 2310}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 86, "x": 196, "type": "mouseover", "message_id": 2311}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 86, "x": 196, "type": "mousemove", "message_id": 2312}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 95, "x": 200, "type": "mousemove", "message_id": 2313}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 104, "x": 205, "type": "mousemove", "message_id": 2314}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 112, "x": 210, "type": "mousemove", "message_id": 2315}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 120, "x": 213, "type": "mousemove", "message_id": 2316}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 125, "x": 214, "type": "mouseover", "message_id": 2317}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 125, "x": 214, "type": "mousemove", "message_id": 2319}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 132, "x": 216, "type": "mouseover", "message_id": 2320}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 125, "x": 214, "type": "mouseover", "message_id": 2318}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 132, "x": 216, "type": "mousemove", "message_id": 2322}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 132, "x": 216, "type": "mouseover", "message_id": 2321}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 139, "x": 218, "type": "mousemove", "message_id": 2323}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 147, "x": 219, "type": "mouseover", "message_id": 2325}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 147, "x": 219, "type": "mouseover", "message_id": 2324}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 147, "x": 219, "type": "mousemove", "message_id": 2326}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 155, "x": 220, "type": "mousemove", "message_id": 2327}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 163, "x": 220, "type": "mousemove", "message_id": 2328}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 172, "x": 220, "type": "mousemove", "message_id": 2329}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 181, "x": 220, "type": "mousemove", "message_id": 2330}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 190, "x": 221, "type": "mousemove", "message_id": 2331}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 200, "x": 224, "type": "mouseover", "message_id": 2332}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 200, "x": 224, "type": "mouseover", "message_id": 2333}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 200, "x": 224, "type": "mousemove", "message_id": 2334}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 207, "x": 227, "type": "mousemove", "message_id": 2335}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 214, "x": 228, "type": "mouseover", "message_id": 2336}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 214, "x": 228, "type": "mousemove", "message_id": 2338}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 214, "x": 228, "type": "mouseover", "message_id": 2337}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 229, "type": "mousemove", "message_id": 2339}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 223, "x": 230, "type": "mousemove", "message_id": 2340}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 226, "x": 230, "type": "mousemove", "message_id": 2341}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 229, "x": 231, "type": "mousemove", "message_id": 2342}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 232, "x": 232, "type": "mousemove", "message_id": 2343}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 237, "x": 233, "type": "mousemove", "message_id": 2344}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 241, "x": 235, "type": "mouseover", "message_id": 2345}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 241, "x": 235, "type": "mouseover", "message_id": 2346}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 241, "x": 235, "type": "mousemove", "message_id": 2347}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 246, "x": 236, "type": "mouseover", "message_id": 2348}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 246, "x": 236, "type": "mouseover", "message_id": 2349}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 246, "x": 236, "type": "mousemove", "message_id": 2350}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 249, "x": 237, "type": "mousemove", "message_id": 2351}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 239, "type": "mouseover", "message_id": 2352}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 239, "type": "mouseover", "message_id": 2353}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 254, "x": 239, "type": "mousemove", "message_id": 2354}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 259, "x": 241, "type": "mousemove", "message_id": 2355}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 243, "type": "mousemove", "message_id": 2356}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 245, "type": "mousemove", "message_id": 2357}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 246, "type": "mouseover", "message_id": 2358}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 246, "type": "mouseover", "message_id": 2359}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 246, "type": "mousemove", "message_id": 2360}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 247, "type": "mousemove", "message_id": 2361}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 248, "type": "mousemove", "message_id": 2362}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 248, "type": "mousemove", "message_id": 2363}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 248, "type": "mousemove", "message_id": 2364}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 248, "type": "mousemove", "message_id": 2365}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 248, "type": "mousemove", "message_id": 2366}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 247, "type": "mousemove", "message_id": 2367}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 247, "type": "mousemove", "message_id": 2368}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 247, "type": "mousemove", "message_id": 2369}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 247, "type": "mousemove", "message_id": 2370}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 246, "type": "mousemove", "message_id": 2371}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 246, "type": "mousemove", "message_id": 2372}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 246, "type": "mousedown", "message_id": 2373}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 246, "type": "mouseup", "message_id": 2374}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 246, "type": "mousemove", "message_id": 2375}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 246, "type": "mousemove", "message_id": 2376}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 246, "type": "mousemove", "message_id": 2377}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 246, "type": "mousemove", "message_id": 2378}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 246, "type": "mousemove", "message_id": 2379}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 247, "type": "mousemove", "message_id": 2380}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 247, "type": "mousemove", "message_id": 2381}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 247, "type": "mousemove", "message_id": 2382}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 246, "type": "mousemove", "message_id": 2383}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 245, "type": "mousemove", "message_id": 2384}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 244, "type": "mousemove", "message_id": 2385}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 243, "type": "mousemove", "message_id": 2386}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 241, "type": "mouseover", "message_id": 2387}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 241, "type": "mousemove", "message_id": 2389}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 290, "x": 240, "type": "mouseover", "message_id": 2390}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 241, "type": "mouseover", "message_id": 2388}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 290, "x": 240, "type": "mouseover", "message_id": 2391}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 290, "x": 240, "type": "mousemove", "message_id": 2392}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 293, "x": 237, "type": "mouseover", "message_id": 2394}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 292, "x": 239, "type": "mousemove", "message_id": 2393}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 293, "x": 237, "type": "mouseover", "message_id": 2395}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 293, "x": 237, "type": "mousemove", "message_id": 2396}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 295, "x": 236, "type": "mouseover", "message_id": 2397}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 295, "x": 236, "type": "mouseover", "message_id": 2398}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 295, "x": 236, "type": "mousemove", "message_id": 2399}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 234, "type": "mouseover", "message_id": 2400}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 234, "type": "mouseover", "message_id": 2401}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 234, "type": "mousemove", "message_id": 2402}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 298, "x": 233, "type": "mouseover", "message_id": 2404}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 298, "x": 233, "type": "mouseover", "message_id": 2403}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 298, "x": 233, "type": "mousemove", "message_id": 2405}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 231, "type": "mouseover", "message_id": 2406}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 231, "type": "mousemove", "message_id": 2408}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 231, "type": "mouseover", "message_id": 2407}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 230, "type": "mouseover", "message_id": 2409}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 230, "type": "mouseover", "message_id": 2410}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 230, "type": "mousemove", "message_id": 2411}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 230, "type": "mousemove", "message_id": 2412}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 229, "type": "mousemove", "message_id": 2413}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 229, "type": "mousemove", "message_id": 2414}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 229, "type": "mousemove", "message_id": 2415}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2416, "altKey": false, "metaKey": false, "key": "s", "ctrlKey": false, "type": "keydown", "keyCode": 83}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 230, "type": "mousemove", "message_id": 2418}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 234, "type": "mouseover", "message_id": 2421}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 234, "type": "mouseover", "message_id": 2420}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 231, "type": "mousemove", "message_id": 2419}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 234, "type": "mousemove", "message_id": 2422}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 297, "x": 238, "type": "mouseover", "message_id": 2424}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 236, "type": "mousemove", "message_id": 2423}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 297, "x": 238, "type": "mouseover", "message_id": 2425}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 297, "x": 238, "type": "mousemove", "message_id": 2426}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 297, "x": 241, "type": "mouseover", "message_id": 2427}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 297, "x": 241, "type": "mouseover", "message_id": 2428}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 297, "x": 241, "type": "mousemove", "message_id": 2429}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 244, "type": "mousemove", "message_id": 2430}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 295, "x": 247, "type": "mousemove", "message_id": 2431}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 294, "x": 251, "type": "mousemove", "message_id": 2432}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 293, "x": 256, "type": "mousemove", "message_id": 2433}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 293, "x": 265, "type": "mousemove", "message_id": 2434}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 291, "x": 281, "type": "mouseover", "message_id": 2435}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 291, "x": 281, "type": "mouseover", "message_id": 2436}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 291, "x": 281, "type": "mousemove", "message_id": 2437}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 298, "type": "mousemove", "message_id": 2438}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 327, "type": "mouseover", "message_id": 2439}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 327, "type": "mousemove", "message_id": 2441}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 327, "type": "mouseover", "message_id": 2440}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 352, "type": "mousemove", "message_id": 2442}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 259, "x": 373, "type": "mousemove", "message_id": 2443}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 390, "type": "mousemove", "message_id": 2444}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 243, "x": 403, "type": "mousemove", "message_id": 2445}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 237, "x": 412, "type": "mousemove", "message_id": 2446}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 233, "x": 418, "type": "mousemove", "message_id": 2447}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 230, "x": 426, "type": "mousemove", "message_id": 2448}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 230, "x": 433, "type": "mouseover", "message_id": 2449}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 230, "x": 433, "type": "mouseover", "message_id": 2450}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 230, "x": 433, "type": "mousemove", "message_id": 2451}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 230, "x": 436, "type": "mousemove", "message_id": 2452}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 231, "x": 440, "type": "mouseover", "message_id": 2454}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 231, "x": 439, "type": "mousemove", "message_id": 2453}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 231, "x": 440, "type": "mousemove", "message_id": 2456}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 231, "x": 440, "type": "mouseover", "message_id": 2455}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 231, "x": 440, "type": "mousemove", "message_id": 2457}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 231, "x": 440, "type": "mousemove", "message_id": 2458}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 230, "x": 440, "type": "mousemove", "message_id": 2459}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 440, "type": "mousemove", "message_id": 2460}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 225, "x": 439, "type": "mousemove", "message_id": 2461}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 221, "x": 439, "type": "mousemove", "message_id": 2462}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 218, "x": 439, "type": "mousemove", "message_id": 2463}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 212, "x": 439, "type": "mousemove", "message_id": 2464}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 207, "x": 440, "type": "mousemove", "message_id": 2465}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 202, "x": 441, "type": "mousemove", "message_id": 2466}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 198, "x": 443, "type": "mouseover", "message_id": 2468}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 198, "x": 443, "type": "mouseover", "message_id": 2467}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 198, "x": 443, "type": "mousemove", "message_id": 2469}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 192, "x": 445, "type": "mousemove", "message_id": 2470}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 186, "x": 447, "type": "mousemove", "message_id": 2471}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 180, "x": 448, "type": "mouseover", "message_id": 2472}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 180, "x": 448, "type": "mouseover", "message_id": 2473}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 180, "x": 448, "type": "mousemove", "message_id": 2474}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 177, "x": 449, "type": "mousemove", "message_id": 2475}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 173, "x": 450, "type": "mousemove", "message_id": 2476}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 170, "x": 451, "type": "mousemove", "message_id": 2477}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 167, "x": 451, "type": "mousemove", "message_id": 2478}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 165, "x": 451, "type": "mousemove", "message_id": 2479}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 163, "x": 451, "type": "mousemove", "message_id": 2480}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 162, "x": 451, "type": "mousemove", "message_id": 2481}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 162, "x": 451, "type": "mousemove", "message_id": 2482}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 162, "x": 451, "type": "mousedown", "message_id": 2483}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 162, "x": 451, "type": "mousemove", "message_id": 2484}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 162, "x": 451, "type": "mousemove", "message_id": 2485}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 162, "x": 451, "type": "mouseup", "message_id": 2486}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 163, "x": 451, "type": "mousemove", "message_id": 2487}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 163, "x": 451, "type": "mousemove", "message_id": 2488}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2489, "altKey": false, "metaKey": false, "key": "r", "ctrlKey": false, "type": "keydown", "keyCode": 82}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 163, "x": 452, "type": "mousemove", "message_id": 2491}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 163, "x": 454, "type": "mouseover", "message_id": 2492}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 163, "x": 454, "type": "mouseover", "message_id": 2493}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 163, "x": 454, "type": "mousemove", "message_id": 2494}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 164, "x": 456, "type": "mousemove", "message_id": 2495}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 166, "x": 457, "type": "mouseover", "message_id": 2496}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 166, "x": 457, "type": "mouseover", "message_id": 2497}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 166, "x": 457, "type": "mousemove", "message_id": 2498}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 167, "x": 457, "type": "mousemove", "message_id": 2499}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 167, "x": 456, "type": "mousemove", "message_id": 2500}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 167, "x": 452, "type": "mouseover", "message_id": 2501}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 167, "x": 452, "type": "mouseover", "message_id": 2502}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 167, "x": 452, "type": "mousemove", "message_id": 2503}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 167, "x": 446, "type": "mousemove", "message_id": 2504}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 166, "x": 436, "type": "mousemove", "message_id": 2505}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 165, "x": 431, "type": "mousemove", "message_id": 2506}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 165, "x": 432, "type": "mouseover", "message_id": 2507}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 165, "x": 432, "type": "mouseover", "message_id": 2508}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 165, "x": 432, "type": "mousemove", "message_id": 2509}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 165, "x": 432, "type": "mousemove", "message_id": 2510}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 165, "x": 432, "type": "mousemove", "message_id": 2511}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 165, "x": 433, "type": "mousemove", "message_id": 2512}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 167, "x": 436, "type": "mouseover", "message_id": 2513}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 167, "x": 436, "type": "mouseover", "message_id": 2514}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 167, "x": 436, "type": "mousemove", "message_id": 2515}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 169, "x": 440, "type": "mousemove", "message_id": 2516}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 172, "x": 444, "type": "mouseover", "message_id": 2518}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 172, "x": 444, "type": "mouseover", "message_id": 2517}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 172, "x": 444, "type": "mousemove", "message_id": 2519}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 451, "type": "mouseover", "message_id": 2521}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 451, "type": "mouseover", "message_id": 2520}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 451, "type": "mousemove", "message_id": 2522}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 181, "x": 462, "type": "mouseover", "message_id": 2523}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 181, "x": 462, "type": "mousemove", "message_id": 2525}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 181, "x": 462, "type": "mouseover", "message_id": 2524}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 190, "x": 479, "type": "mousemove", "message_id": 2526}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 205, "x": 504, "type": "mouseover", "message_id": 2527}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 205, "x": 504, "type": "mouseover", "message_id": 2528}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 218, "x": 525, "type": "mouseover", "message_id": 2530}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 205, "x": 504, "type": "mousemove", "message_id": 2529}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 218, "x": 525, "type": "mousemove", "message_id": 2532}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 218, "x": 525, "type": "mouseover", "message_id": 2531}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 238, "x": 554, "type": "mousemove", "message_id": 2533}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 608, "type": "mousemove", "message_id": 2536}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 258, "x": 580, "type": "mousemove", "message_id": 2534}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 597, "type": "mousemove", "message_id": 2535}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 294, "x": 616, "type": "mousemove", "message_id": 2537}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 302, "x": 622, "type": "mousemove", "message_id": 2538}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 310, "x": 628, "type": "mousemove", "message_id": 2539}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 634, "type": "mousemove", "message_id": 2540}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 638, "type": "mousemove", "message_id": 2541}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 329, "x": 639, "type": "mouseover", "message_id": 2542}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 329, "x": 639, "type": "mouseover", "message_id": 2543}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 329, "x": 639, "type": "mousemove", "message_id": 2544}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 332, "x": 640, "type": "mousemove", "message_id": 2545}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 640, "type": "mousemove", "message_id": 2546}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 640, "type": "mousemove", "message_id": 2547}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 640, "type": "mousemove", "message_id": 2548}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 640, "type": "mousemove", "message_id": 2549}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 640, "type": "mousemove", "message_id": 2550}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 640, "type": "mousedown", "message_id": 2551}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 641, "type": "mousemove", "message_id": 2552}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 641, "type": "mouseup", "message_id": 2553}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 642, "type": "mousemove", "message_id": 2554}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 643, "type": "mousemove", "message_id": 2555}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 644, "type": "mousemove", "message_id": 2556}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 644, "type": "mousemove", "message_id": 2557}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 643, "type": "mousemove", "message_id": 2558}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 642, "type": "mousemove", "message_id": 2559}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 641, "type": "mousemove", "message_id": 2560}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 641, "type": "mousemove", "message_id": 2561}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 640, "type": "mousemove", "message_id": 2562}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 639, "type": "mousemove", "message_id": 2563}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 638, "type": "mousemove", "message_id": 2564}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 637, "type": "mousemove", "message_id": 2565}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 637, "type": "mousemove", "message_id": 2566}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 637, "type": "mousemove", "message_id": 2567}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2568, "altKey": false, "metaKey": false, "key": "h", "ctrlKey": false, "type": "keydown", "keyCode": 72}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 638, "type": "mousemove", "message_id": 2570}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 639, "type": "mousemove", "message_id": 2571}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 640, "type": "mousemove", "message_id": 2572}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 640, "type": "mousemove", "message_id": 2573}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 640, "type": "mousemove", "message_id": 2574}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 641, "type": "mousemove", "message_id": 2575}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 641, "type": "mousemove", "message_id": 2576}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 642, "type": "mousemove", "message_id": 2577}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 643, "type": "mousemove", "message_id": 2578}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 643, "type": "mousemove", "message_id": 2579}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 643, "type": "mousemove", "message_id": 2580}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 642, "type": "mousemove", "message_id": 2581}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 336, "x": 640, "type": "mouseover", "message_id": 2582}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 336, "x": 640, "type": "mouseover", "message_id": 2583}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 336, "x": 640, "type": "mousemove", "message_id": 2584}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 338, "x": 638, "type": "mousemove", "message_id": 2585}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 342, "x": 634, "type": "mousemove", "message_id": 2586}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 346, "x": 628, "type": "mousemove", "message_id": 2587}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 349, "x": 622, "type": "mousemove", "message_id": 2588}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 354, "x": 612, "type": "mouseover", "message_id": 2590}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 354, "x": 612, "type": "mouseover", "message_id": 2589}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 354, "x": 612, "type": "mousemove", "message_id": 2591}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 359, "x": 601, "type": "mousemove", "message_id": 2592}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 364, "x": 590, "type": "mouseover", "message_id": 2593}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 364, "x": 590, "type": "mouseover", "message_id": 2594}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 364, "x": 590, "type": "mousemove", "message_id": 2595}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 370, "x": 580, "type": "mousemove", "message_id": 2596}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 375, "x": 570, "type": "mousemove", "message_id": 2597}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 379, "x": 563, "type": "mousemove", "message_id": 2598}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 383, "x": 559, "type": "mousemove", "message_id": 2599}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 555, "type": "mouseover", "message_id": 2602}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 555, "type": "mouseover", "message_id": 2601}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 386, "x": 556, "type": "mousemove", "message_id": 2600}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 555, "type": "mousemove", "message_id": 2603}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 389, "x": 553, "type": "mousemove", "message_id": 2605}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 389, "x": 554, "type": "mousemove", "message_id": 2604}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 390, "x": 553, "type": "mousemove", "message_id": 2606}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 390, "x": 553, "type": "mousemove", "message_id": 2607}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 390, "x": 553, "type": "mousemove", "message_id": 2608}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 390, "x": 552, "type": "mousemove", "message_id": 2609}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 390, "x": 552, "type": "mousemove", "message_id": 2610}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 390, "x": 551, "type": "mousemove", "message_id": 2611}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 389, "x": 551, "type": "mousemove", "message_id": 2612}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 389, "x": 551, "type": "mousemove", "message_id": 2613}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 389, "x": 551, "type": "mousemove", "message_id": 2614}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 389, "x": 551, "type": "mousemove", "message_id": 2615}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 550, "type": "mousemove", "message_id": 2616}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 550, "type": "mousemove", "message_id": 2617}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 550, "type": "mousemove", "message_id": 2618}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 550, "type": "mousedown", "message_id": 2619}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 550, "type": "mousemove", "message_id": 2620}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 550, "type": "mouseup", "message_id": 2621}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 550, "type": "mousemove", "message_id": 2622}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 550, "type": "mousemove", "message_id": 2623}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 551, "type": "mousemove", "message_id": 2624}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 551, "type": "mousemove", "message_id": 2625}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 388, "x": 551, "type": "mousemove", "message_id": 2626}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 387, "x": 551, "type": "mousemove", "message_id": 2627}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 387, "x": 551, "type": "mousemove", "message_id": 2628}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 386, "x": 550, "type": "mousemove", "message_id": 2629}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 385, "x": 550, "type": "mousemove", "message_id": 2630}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 383, "x": 550, "type": "mousemove", "message_id": 2631}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 382, "x": 550, "type": "mousemove", "message_id": 2632}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2633, "altKey": false, "metaKey": false, "key": "l", "ctrlKey": false, "type": "keydown", "keyCode": 76}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 381, "x": 551, "type": "mousemove", "message_id": 2634}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 379, "x": 552, "type": "mousemove", "message_id": 2635}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 377, "x": 553, "type": "mousemove", "message_id": 2636}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 374, "x": 554, "type": "mousemove", "message_id": 2637}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 370, "x": 555, "type": "mousemove", "message_id": 2638}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 366, "x": 557, "type": "mouseover", "message_id": 2639}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 366, "x": 557, "type": "mouseover", "message_id": 2640}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 366, "x": 557, "type": "mousemove", "message_id": 2641}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 361, "x": 560, "type": "mousemove", "message_id": 2642}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 357, "x": 564, "type": "mouseover", "message_id": 2643}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 357, "x": 564, "type": "mouseover", "message_id": 2644}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 357, "x": 564, "type": "mousemove", "message_id": 2645}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 354, "x": 567, "type": "mousemove", "message_id": 2646}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 351, "x": 571, "type": "mousemove", "message_id": 2647}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 348, "x": 575, "type": "mousemove", "message_id": 2648}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 344, "x": 579, "type": "mousemove", "message_id": 2649}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 341, "x": 582, "type": "mousemove", "message_id": 2650}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 337, "x": 586, "type": "mousemove", "message_id": 2651}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 591, "type": "mousemove", "message_id": 2652}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 330, "x": 598, "type": "mousemove", "message_id": 2653}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 327, "x": 605, "type": "mousemove", "message_id": 2654}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 611, "type": "mousemove", "message_id": 2655}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 615, "type": "mouseover", "message_id": 2657}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 615, "type": "mouseover", "message_id": 2656}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 615, "type": "mousemove", "message_id": 2658}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 619, "type": "mouseover", "message_id": 2659}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 619, "type": "mouseover", "message_id": 2660}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 619, "type": "mousemove", "message_id": 2661}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 623, "type": "mouseover", "message_id": 2663}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 314, "x": 622, "type": "mousemove", "message_id": 2662}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 623, "type": "mouseover", "message_id": 2664}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 623, "type": "mousemove", "message_id": 2665}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 623, "type": "mousemove", "message_id": 2666}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 623, "type": "mousemove", "message_id": 2667}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 623, "type": "mousemove", "message_id": 2668}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 623, "type": "mousemove", "message_id": 2669}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 315, "x": 624, "type": "mousemove", "message_id": 2670}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 624, "type": "mousemove", "message_id": 2671}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 623, "type": "mousemove", "message_id": 2672}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 621, "type": "mouseover", "message_id": 2673}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 621, "type": "mouseover", "message_id": 2674}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 328, "x": 620, "type": "mouseover", "message_id": 2676}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 621, "type": "mousemove", "message_id": 2675}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 328, "x": 620, "type": "mouseover", "message_id": 2677}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 328, "x": 620, "type": "mousemove", "message_id": 2678}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 331, "x": 619, "type": "mousemove", "message_id": 2679}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 332, "x": 618, "type": "mousemove", "message_id": 2680}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 332, "x": 617, "type": "mousemove", "message_id": 2681}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 332, "x": 617, "type": "mousemove", "message_id": 2682}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 332, "x": 617, "type": "mousedown", "message_id": 2683}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 332, "x": 617, "type": "mousemove", "message_id": 2684}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 615, "type": "mouseover", "message_id": 2686}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 615, "type": "mouseover", "message_id": 2685}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 615, "type": "mousemove", "message_id": 2687}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 615, "type": "mouseover", "message_id": 2688}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 615, "type": "mouseover", "message_id": 2689}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 615, "type": "mouseup", "message_id": 2690}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 609, "type": "mouseover", "message_id": 2692}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 609, "type": "mouseover", "message_id": 2693}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 609, "type": "mousemove", "message_id": 2694}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 598, "type": "mousemove", "message_id": 2695}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 582, "type": "mouseover", "message_id": 2696}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 582, "type": "mouseover", "message_id": 2697}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 333, "x": 582, "type": "mousemove", "message_id": 2698}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 331, "x": 560, "type": "mousemove", "message_id": 2699}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 329, "x": 537, "type": "mouseover", "message_id": 2700}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 329, "x": 537, "type": "mouseover", "message_id": 2701}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 329, "x": 537, "type": "mousemove", "message_id": 2702}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 327, "x": 510, "type": "mousemove", "message_id": 2703}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 326, "x": 479, "type": "mousemove", "message_id": 2704}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 443, "type": "mousemove", "message_id": 2705}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 410, "type": "mousemove", "message_id": 2706}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 389, "type": "mousemove", "message_id": 2707}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 367, "type": "mousemove", "message_id": 2708}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 352, "type": "mouseover", "message_id": 2709}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 352, "type": "mouseover", "message_id": 2710}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 352, "type": "mousemove", "message_id": 2711}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 342, "type": "mousemove", "message_id": 2712}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 337, "type": "mousemove", "message_id": 2713}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 328, "type": "mousemove", "message_id": 2715}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 332, "type": "mousemove", "message_id": 2714}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 323, "type": "mousemove", "message_id": 2716}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 319, "type": "mousemove", "message_id": 2717}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 315, "type": "mousemove", "message_id": 2718}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 311, "type": "mousemove", "message_id": 2719}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 306, "type": "mousemove", "message_id": 2720}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 301, "type": "mousemove", "message_id": 2721}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 296, "type": "mousemove", "message_id": 2722}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 293, "type": "mousemove", "message_id": 2723}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 292, "type": "mouseover", "message_id": 2724}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 292, "type": "mouseover", "message_id": 2725}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 292, "type": "mousemove", "message_id": 2726}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 292, "type": "mousemove", "message_id": 2727}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 292, "type": "mousedown", "message_id": 2728}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 292, "type": "mousemove", "message_id": 2729}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 292, "type": "mousemove", "message_id": 2730}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 292, "type": "mouseup", "message_id": 2731}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 292, "type": "mousemove", "message_id": 2736}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 294, "type": "mouseover", "message_id": 2737}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 294, "type": "mouseover", "message_id": 2738}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 297, "type": "mousemove", "message_id": 2740}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 294, "type": "mousemove", "message_id": 2739}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 300, "type": "mousemove", "message_id": 2741}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 305, "type": "mousemove", "message_id": 2742}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 311, "type": "mousemove", "message_id": 2743}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 329, "type": "mousemove", "message_id": 2745}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 319, "type": "mousemove", "message_id": 2744}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 315, "x": 340, "type": "mousemove", "message_id": 2746}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 314, "x": 354, "type": "mousemove", "message_id": 2747}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 370, "type": "mouseover", "message_id": 2748}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 370, "type": "mouseover", "message_id": 2749}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 370, "type": "mousemove", "message_id": 2750}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 389, "type": "mouseover", "message_id": 2751}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 389, "type": "mousemove", "message_id": 2753}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 311, "x": 413, "type": "mousemove", "message_id": 2754}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 389, "type": "mouseover", "message_id": 2752}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 311, "x": 442, "type": "mousemove", "message_id": 2755}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 311, "x": 473, "type": "mousemove", "message_id": 2756}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 495, "type": "mousemove", "message_id": 2757}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 519, "type": "mousemove", "message_id": 2758}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 314, "x": 541, "type": "mousemove", "message_id": 2759}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 558, "type": "mouseover", "message_id": 2760}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 558, "type": "mouseover", "message_id": 2761}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 558, "type": "mousemove", "message_id": 2762}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 570, "type": "mouseover", "message_id": 2763}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 570, "type": "mousemove", "message_id": 2765}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 570, "type": "mouseover", "message_id": 2764}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 579, "type": "mousemove", "message_id": 2766}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 586, "type": "mousemove", "message_id": 2767}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 591, "type": "mousemove", "message_id": 2768}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2769, "altKey": false, "metaKey": false, "key": "l", "ctrlKey": false, "type": "keydown", "keyCode": 76}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 596, "type": "mousemove", "message_id": 2770}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 322, "x": 600, "type": "mouseover", "message_id": 2771}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 322, "x": 600, "type": "mouseover", "message_id": 2772}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 322, "x": 600, "type": "mousemove", "message_id": 2773}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 603, "type": "mouseover", "message_id": 2775}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 603, "type": "mouseover", "message_id": 2774}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 606, "type": "mousemove", "message_id": 2777}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 603, "type": "mousemove", "message_id": 2776}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 608, "type": "mousemove", "message_id": 2778}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 327, "x": 611, "type": "mouseover", "message_id": 2779}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 327, "x": 611, "type": "mousemove", "message_id": 2781}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 327, "x": 611, "type": "mouseover", "message_id": 2780}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 329, "x": 615, "type": "mouseover", "message_id": 2782}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 329, "x": 615, "type": "mouseover", "message_id": 2783}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 331, "x": 620, "type": "mousemove", "message_id": 2785}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 329, "x": 615, "type": "mousemove", "message_id": 2784}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 626, "type": "mouseover", "message_id": 2787}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 623, "type": "mousemove", "message_id": 2786}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 626, "type": "mouseover", "message_id": 2788}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 626, "type": "mousemove", "message_id": 2789}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 336, "x": 627, "type": "mouseover", "message_id": 2790}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 336, "x": 627, "type": "mouseover", "message_id": 2791}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 336, "x": 628, "type": "mousemove", "message_id": 2793}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 336, "x": 627, "type": "mousemove", "message_id": 2792}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 336, "x": 628, "type": "mousemove", "message_id": 2794}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 336, "x": 628, "type": "mousemove", "message_id": 2795}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 336, "x": 628, "type": "mousemove", "message_id": 2796}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 628, "type": "mousemove", "message_id": 2797}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 628, "type": "mousemove", "message_id": 2798}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 628, "type": "mousemove", "message_id": 2799}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 628, "type": "mousemove", "message_id": 2800}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 628, "type": "mousemove", "message_id": 2801}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 628, "type": "mousemove", "message_id": 2802}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 628, "type": "mousedown", "message_id": 2803}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 628, "type": "mousemove", "message_id": 2804}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 628, "type": "mousemove", "message_id": 2805}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 627, "type": "mousemove", "message_id": 2806}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 331, "x": 624, "type": "mouseover", "message_id": 2809}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 334, "x": 627, "type": "mouseup", "message_id": 2807}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 331, "x": 624, "type": "mouseover", "message_id": 2810}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 331, "x": 624, "type": "mousemove", "message_id": 2811}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 326, "x": 620, "type": "mousemove", "message_id": 2812}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 614, "type": "mouseover", "message_id": 2813}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 614, "type": "mouseover", "message_id": 2814}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 614, "type": "mousemove", "message_id": 2815}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 308, "x": 604, "type": "mouseover", "message_id": 2816}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 308, "x": 604, "type": "mouseover", "message_id": 2817}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 308, "x": 604, "type": "mousemove", "message_id": 2818}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 298, "x": 592, "type": "mouseover", "message_id": 2819}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 298, "x": 592, "type": "mouseover", "message_id": 2820}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 298, "x": 592, "type": "mousemove", "message_id": 2821}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 289, "x": 580, "type": "mousemove", "message_id": 2822}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 569, "type": "mousemove", "message_id": 2823}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 559, "type": "mousemove", "message_id": 2824}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 551, "type": "mousemove", "message_id": 2825}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 260, "x": 547, "type": "mousemove", "message_id": 2826}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 542, "type": "mousemove", "message_id": 2827}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 250, "x": 538, "type": "mousemove", "message_id": 2828}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 246, "x": 534, "type": "mousemove", "message_id": 2829}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 243, "x": 530, "type": "mousemove", "message_id": 2830}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 239, "x": 526, "type": "mousemove", "message_id": 2831}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 236, "x": 522, "type": "mousemove", "message_id": 2832}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 233, "x": 517, "type": "mousemove", "message_id": 2833}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 230, "x": 512, "type": "mousemove", "message_id": 2834}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 227, "x": 508, "type": "mousemove", "message_id": 2835}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 225, "x": 506, "type": "mouseover", "message_id": 2836}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 225, "x": 506, "type": "mouseover", "message_id": 2837}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 225, "x": 506, "type": "mousemove", "message_id": 2838}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 222, "x": 503, "type": "mousemove", "message_id": 2839}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 219, "x": 501, "type": "mousemove", "message_id": 2840}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 216, "x": 499, "type": "mouseover", "message_id": 2841}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 216, "x": 499, "type": "mouseover", "message_id": 2842}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 216, "x": 499, "type": "mousemove", "message_id": 2843}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 214, "x": 498, "type": "mouseover", "message_id": 2844}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 212, "x": 498, "type": "mousemove", "message_id": 2847}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 214, "x": 498, "type": "mousemove", "message_id": 2846}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 214, "x": 498, "type": "mouseover", "message_id": 2845}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 498, "type": "mousemove", "message_id": 2849}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 211, "x": 498, "type": "mousemove", "message_id": 2848}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 498, "type": "mousemove", "message_id": 2850}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 498, "type": "mousedown", "message_id": 2851}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 498, "type": "mouseup", "message_id": 2852}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 2857, "altKey": false, "metaKey": false, "key": "l", "ctrlKey": false, "type": "keydown", "keyCode": 76}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 498, "type": "mousemove", "message_id": 2858}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 496, "type": "mouseover", "message_id": 2859}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 496, "type": "mouseover", "message_id": 2860}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 496, "type": "mousemove", "message_id": 2861}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 494, "type": "mousemove", "message_id": 2862}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 492, "type": "mousemove", "message_id": 2863}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 209, "x": 490, "type": "mousemove", "message_id": 2864}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 208, "x": 489, "type": "mouseover", "message_id": 2865}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 208, "x": 489, "type": "mouseover", "message_id": 2866}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 208, "x": 489, "type": "mousemove", "message_id": 2867}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 207, "x": 488, "type": "mousemove", "message_id": 2868}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 205, "x": 488, "type": "mousemove", "message_id": 2869}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 203, "x": 488, "type": "mousemove", "message_id": 2870}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 200, "x": 488, "type": "mousemove", "message_id": 2871}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 197, "x": 488, "type": "mousemove", "message_id": 2872}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 194, "x": 488, "type": "mousemove", "message_id": 2873}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 190, "x": 488, "type": "mousemove", "message_id": 2874}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 187, "x": 488, "type": "mousemove", "message_id": 2875}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 184, "x": 488, "type": "mousemove", "message_id": 2876}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 182, "x": 489, "type": "mousemove", "message_id": 2877}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 179, "x": 489, "type": "mousemove", "message_id": 2878}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 177, "x": 489, "type": "mousemove", "message_id": 2879}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 176, "x": 489, "type": "mousemove", "message_id": 2880}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 489, "type": "mousemove", "message_id": 2881}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 489, "type": "mousemove", "message_id": 2882}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 489, "type": "mousedown", "message_id": 2883}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 489, "type": "mousemove", "message_id": 2884}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 176, "x": 488, "type": "mousemove", "message_id": 2885}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 176, "x": 488, "type": "mouseup", "message_id": 2886}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 179, "x": 486, "type": "mouseover", "message_id": 2888}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 179, "x": 486, "type": "mouseover", "message_id": 2889}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 179, "x": 486, "type": "mousemove", "message_id": 2890}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 183, "x": 482, "type": "mousemove", "message_id": 2891}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 187, "x": 476, "type": "mousemove", "message_id": 2892}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 191, "x": 469, "type": "mousemove", "message_id": 2893}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 196, "x": 461, "type": "mouseover", "message_id": 2894}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 196, "x": 461, "type": "mouseover", "message_id": 2895}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 196, "x": 461, "type": "mousemove", "message_id": 2896}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 201, "x": 453, "type": "mousemove", "message_id": 2897}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 205, "x": 444, "type": "mouseover", "message_id": 2898}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 205, "x": 444, "type": "mouseover", "message_id": 2899}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 205, "x": 444, "type": "mousemove", "message_id": 2900}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 435, "type": "mouseover", "message_id": 2901}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 435, "type": "mouseover", "message_id": 2902}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 435, "type": "mousemove", "message_id": 2903}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 216, "x": 422, "type": "mouseover", "message_id": 2904}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 216, "x": 422, "type": "mouseover", "message_id": 2905}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 216, "x": 422, "type": "mousemove", "message_id": 2906}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 221, "x": 411, "type": "mousemove", "message_id": 2907}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 395, "type": "mouseover", "message_id": 2908}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 395, "type": "mouseover", "message_id": 2909}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 395, "type": "mousemove", "message_id": 2910}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 236, "x": 378, "type": "mouseover", "message_id": 2911}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 236, "x": 378, "type": "mouseover", "message_id": 2912}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 236, "x": 378, "type": "mousemove", "message_id": 2913}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 242, "x": 360, "type": "mousemove", "message_id": 2914}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 248, "x": 343, "type": "mousemove", "message_id": 2915}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 252, "x": 331, "type": "mousemove", "message_id": 2916}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 255, "x": 324, "type": "mousemove", "message_id": 2917}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 257, "x": 320, "type": "mousemove", "message_id": 2918}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 259, "x": 317, "type": "mousemove", "message_id": 2919}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 261, "x": 314, "type": "mousemove", "message_id": 2920}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 312, "type": "mouseover", "message_id": 2921}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 312, "type": "mouseover", "message_id": 2922}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 312, "type": "mousemove", "message_id": 2923}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 309, "type": "mouseover", "message_id": 2924}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 309, "type": "mouseover", "message_id": 2925}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 309, "type": "mousemove", "message_id": 2926}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 305, "type": "mouseover", "message_id": 2927}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 305, "type": "mouseover", "message_id": 2928}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 305, "type": "mousemove", "message_id": 2929}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 268, "x": 301, "type": "mousemove", "message_id": 2930}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 296, "type": "mouseover", "message_id": 2931}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 296, "type": "mouseover", "message_id": 2932}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 296, "type": "mousemove", "message_id": 2933}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 291, "type": "mousemove", "message_id": 2934}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 286, "type": "mouseover", "message_id": 2935}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 286, "type": "mouseover", "message_id": 2936}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 286, "type": "mousemove", "message_id": 2937}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 282, "type": "mouseover", "message_id": 2938}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 282, "type": "mouseover", "message_id": 2939}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 282, "type": "mousemove", "message_id": 2940}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 275, "x": 277, "type": "mouseover", "message_id": 2941}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 275, "x": 277, "type": "mouseover", "message_id": 2942}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 275, "x": 277, "type": "mousemove", "message_id": 2943}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 276, "x": 273, "type": "mouseover", "message_id": 2944}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 276, "x": 273, "type": "mousemove", "message_id": 2946}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 276, "x": 273, "type": "mouseover", "message_id": 2945}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 270, "type": "mousemove", "message_id": 2947}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 265, "type": "mouseover", "message_id": 2948}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 265, "type": "mouseover", "message_id": 2949}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 265, "type": "mousemove", "message_id": 2950}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 281, "x": 259, "type": "mousemove", "message_id": 2951}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 253, "type": "mousemove", "message_id": 2952}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 250, "type": "mouseover", "message_id": 2953}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 250, "type": "mouseover", "message_id": 2954}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 250, "type": "mousemove", "message_id": 2955}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 248, "type": "mousemove", "message_id": 2956}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 247, "type": "mouseover", "message_id": 2957}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 247, "type": "mouseover", "message_id": 2958}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 247, "type": "mousemove", "message_id": 2959}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 247, "type": "mousemove", "message_id": 2960}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 247, "type": "mousedown", "message_id": 2961}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 247, "type": "mousemove", "message_id": 2962}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 247, "type": "mousemove", "message_id": 2963}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 247, "type": "mouseup", "message_id": 2964}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 247, "type": "mousemove", "message_id": 2969}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 247, "type": "mousemove", "message_id": 2970}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 247, "type": "mousemove", "message_id": 2972}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 247, "type": "mousemove", "message_id": 2971}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 247, "type": "mousemove", "message_id": 2973}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 247, "type": "mousemove", "message_id": 2974}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 248, "type": "mousemove", "message_id": 2975}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 249, "type": "mousemove", "message_id": 2976}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 250, "type": "mousemove", "message_id": 2977}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 251, "type": "mousemove", "message_id": 2978}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 281, "x": 251, "type": "mousemove", "message_id": 2979}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 251, "type": "mousemove", "message_id": 2980}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 251, "type": "mousemove", "message_id": 2981}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 251, "type": "mousemove", "message_id": 2982}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 275, "x": 251, "type": "mousemove", "message_id": 2983}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 251, "type": "mousemove", "message_id": 2984}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 252, "type": "mousemove", "message_id": 2985}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 252, "type": "mousemove", "message_id": 2986}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 253, "type": "mousemove", "message_id": 2987}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 268, "x": 254, "type": "mousemove", "message_id": 2988}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 255, "type": "mousemove", "message_id": 2989}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 256, "type": "mousemove", "message_id": 2990}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 257, "type": "mousemove", "message_id": 2991}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 257, "type": "mousemove", "message_id": 2992}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 257, "type": "mousemove", "message_id": 2993}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 257, "type": "mousemove", "message_id": 2994}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 257, "type": "mousedown", "message_id": 2995}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 257, "type": "mousemove", "message_id": 2997}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 256, "type": "mousemove", "message_id": 2998}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 254, "type": "mouseover", "message_id": 3000}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 254, "type": "mouseover", "message_id": 3001}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 254, "type": "mousemove", "message_id": 3002}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 252, "type": "mousemove", "message_id": 3004}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 276, "x": 249, "type": "mousemove", "message_id": 3006}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 281, "x": 244, "type": "mousemove", "message_id": 3008}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 238, "type": "mousemove", "message_id": 3010}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 295, "x": 230, "type": "mouseover", "message_id": 3012}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 295, "x": 230, "type": "mouseover", "message_id": 3013}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 295, "x": 230, "type": "mousemove", "message_id": 3014}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 221, "type": "mousemove", "message_id": 3016}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 210, "type": "mousemove", "message_id": 3018}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 322, "x": 197, "type": "mousemove", "message_id": 3020}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 182, "type": "mouseover", "message_id": 3022}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 182, "type": "mousemove", "message_id": 3024}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 335, "x": 182, "type": "mouseover", "message_id": 3023}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 345, "x": 171, "type": "mouseover", "message_id": 3026}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 345, "x": 171, "type": "mouseover", "message_id": 3027}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 345, "x": 171, "type": "mousemove", "message_id": 3028}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 349, "x": 168, "type": "mouseover", "message_id": 3030}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 349, "x": 168, "type": "mouseover", "message_id": 3031}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 349, "x": 168, "type": "mousemove", "message_id": 3032}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 351, "x": 167, "type": "mouseover", "message_id": 3034}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 351, "x": 167, "type": "mouseover", "message_id": 3035}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 351, "x": 167, "type": "mousemove", "message_id": 3036}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 352, "x": 167, "type": "mousemove", "message_id": 3038}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 352, "x": 167, "type": "mousemove", "message_id": 3040}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 352, "x": 167, "type": "mousemove", "message_id": 3042}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 351, "x": 167, "type": "mousemove", "message_id": 3044}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 351, "x": 167, "type": "mousemove", "message_id": 3046}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 351, "x": 167, "type": "mousemove", "message_id": 3048}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 351, "x": 167, "type": "mousemove", "message_id": 3050}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 351, "x": 167, "type": "mousemove", "message_id": 3052}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 168, "type": "mousemove", "message_id": 3054}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 169, "type": "mousemove", "message_id": 3056}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 169, "type": "mouseup", "message_id": 3058}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 349, "x": 171, "type": "mouseover", "message_id": 3059}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 349, "x": 171, "type": "mouseover", "message_id": 3060}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 349, "x": 171, "type": "mousemove", "message_id": 3061}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 347, "x": 174, "type": "mouseover", "message_id": 3062}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 347, "x": 174, "type": "mouseover", "message_id": 3063}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 347, "x": 174, "type": "mousemove", "message_id": 3064}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 344, "x": 177, "type": "mousemove", "message_id": 3065}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 342, "x": 179, "type": "mousemove", "message_id": 3066}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 341, "x": 182, "type": "mouseover", "message_id": 3067}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 341, "x": 182, "type": "mouseover", "message_id": 3068}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 341, "x": 187, "type": "mousemove", "message_id": 3070}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 341, "x": 182, "type": "mousemove", "message_id": 3069}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 341, "x": 214, "type": "mouseover", "message_id": 3072}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 341, "x": 198, "type": "mousemove", "message_id": 3071}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 341, "x": 214, "type": "mouseover", "message_id": 3073}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 341, "x": 214, "type": "mousemove", "message_id": 3074}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 342, "x": 240, "type": "mouseover", "message_id": 3075}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 342, "x": 240, "type": "mouseover", "message_id": 3076}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 342, "x": 240, "type": "mousemove", "message_id": 3077}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 344, "x": 275, "type": "mousemove", "message_id": 3078}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 347, "x": 310, "type": "mousemove", "message_id": 3079}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 352, "type": "mousemove", "message_id": 3080}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 352, "x": 380, "type": "mousemove", "message_id": 3081}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 354, "x": 406, "type": "mousemove", "message_id": 3082}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 355, "x": 426, "type": "mousemove", "message_id": 3083}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 441, "type": "mouseover", "message_id": 3084}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 441, "type": "mouseover", "message_id": 3085}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 441, "type": "mousemove", "message_id": 3086}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 457, "type": "mouseover", "message_id": 3087}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 457, "type": "mousemove", "message_id": 3089}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 457, "type": "mouseover", "message_id": 3088}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 465, "type": "mouseover", "message_id": 3090}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 465, "type": "mouseover", "message_id": 3091}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 465, "type": "mousemove", "message_id": 3092}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 355, "x": 469, "type": "mousemove", "message_id": 3093}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 355, "x": 470, "type": "mouseover", "message_id": 3094}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 355, "x": 470, "type": "mouseover", "message_id": 3095}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 355, "x": 470, "type": "mousemove", "message_id": 3096}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 355, "x": 470, "type": "mousemove", "message_id": 3097}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 355, "x": 470, "type": "mousemove", "message_id": 3098}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 471, "type": "mousemove", "message_id": 3099}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 471, "type": "mousemove", "message_id": 3100}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 471, "type": "mousemove", "message_id": 3101}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 471, "type": "mousemove", "message_id": 3102}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 359, "x": 471, "type": "mousemove", "message_id": 3104}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 357, "x": 471, "type": "mousemove", "message_id": 3103}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 361, "x": 472, "type": "mousemove", "message_id": 3105}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 362, "x": 472, "type": "mousemove", "message_id": 3106}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 363, "x": 472, "type": "mousemove", "message_id": 3107}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 363, "x": 472, "type": "mousemove", "message_id": 3108}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 363, "x": 472, "type": "mousemove", "message_id": 3109}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 363, "x": 472, "type": "mousemove", "message_id": 3110}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 362, "x": 472, "type": "mousemove", "message_id": 3111}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 362, "x": 472, "type": "mousemove", "message_id": 3112}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 362, "x": 472, "type": "mousemove", "message_id": 3113}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 362, "x": 472, "type": "mousemove", "message_id": 3114}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 362, "x": 471, "type": "mousemove", "message_id": 3115}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 361, "x": 471, "type": "mousemove", "message_id": 3116}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 360, "x": 469, "type": "mouseover", "message_id": 3117}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 360, "x": 469, "type": "mouseover", "message_id": 3118}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 360, "x": 469, "type": "mousemove", "message_id": 3119}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 358, "x": 466, "type": "mouseover", "message_id": 3120}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 358, "x": 466, "type": "mouseover", "message_id": 3121}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 358, "x": 466, "type": "mousemove", "message_id": 3122}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 356, "x": 463, "type": "mousemove", "message_id": 3123}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 354, "x": 460, "type": "mouseover", "message_id": 3124}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 354, "x": 460, "type": "mousemove", "message_id": 3126}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 354, "x": 460, "type": "mouseover", "message_id": 3125}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 352, "x": 457, "type": "mousemove", "message_id": 3127}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 351, "x": 456, "type": "mouseover", "message_id": 3129}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 351, "x": 456, "type": "mousemove", "message_id": 3130}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 351, "x": 456, "type": "mouseover", "message_id": 3128}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 456, "type": "mousemove", "message_id": 3131}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 456, "type": "mousemove", "message_id": 3132}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 456, "type": "mousemove", "message_id": 3133}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 456, "type": "mousedown", "message_id": 3134}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 456, "type": "mousemove", "message_id": 3139}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 456, "type": "mouseup", "message_id": 3140}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 456, "type": "mousedown", "message_id": 3141}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 456, "type": "mouseup", "message_id": 3144}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 456, "type": "mousemove", "message_id": 3145}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 3146, "altKey": false, "metaKey": false, "key": "Backspace", "ctrlKey": false, "type": "keydown", "keyCode": 8}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 350, "x": 456, "type": "mousemove", "message_id": 3148}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 349, "x": 457, "type": "mousemove", "message_id": 3149}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 348, "x": 458, "type": "mousemove", "message_id": 3150}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 346, "x": 461, "type": "mouseover", "message_id": 3151}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 346, "x": 461, "type": "mouseover", "message_id": 3152}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 346, "x": 461, "type": "mousemove", "message_id": 3153}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 343, "x": 466, "type": "mousemove", "message_id": 3154}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 341, "x": 471, "type": "mousemove", "message_id": 3155}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 336, "x": 479, "type": "mousemove", "message_id": 3156}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 331, "x": 489, "type": "mousemove", "message_id": 3157}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 326, "x": 497, "type": "mousemove", "message_id": 3158}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 502, "type": "mousemove", "message_id": 3159}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 508, "type": "mousemove", "message_id": 3160}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 512, "type": "mousemove", "message_id": 3161}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 314, "x": 515, "type": "mousemove", "message_id": 3162}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 312, "x": 518, "type": "mousemove", "message_id": 3163}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 310, "x": 521, "type": "mousemove", "message_id": 3164}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 307, "x": 523, "type": "mousemove", "message_id": 3165}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 306, "x": 525, "type": "mouseover", "message_id": 3166}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 306, "x": 525, "type": "mouseover", "message_id": 3167}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 306, "x": 525, "type": "mousemove", "message_id": 3168}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 304, "x": 527, "type": "mouseover", "message_id": 3170}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 304, "x": 527, "type": "mouseover", "message_id": 3169}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 304, "x": 527, "type": "mousemove", "message_id": 3171}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 304, "x": 528, "type": "mouseover", "message_id": 3172}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 304, "x": 528, "type": "mousemove", "message_id": 3174}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 304, "x": 528, "type": "mouseover", "message_id": 3173}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 528, "type": "mousemove", "message_id": 3175}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 528, "type": "mousemove", "message_id": 3176}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 528, "type": "mousedown", "message_id": 3177}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 528, "type": "mouseup", "message_id": 3179}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 528, "type": "mousemove", "message_id": 3180}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 1, "deltaY": 0, "delta": -1, "type": "wheel", "message_id": 3181}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 302, "x": 529, "type": "mousemove", "message_id": 3182}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 532, "type": "mouseover", "message_id": 3183}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 532, "type": "mouseover", "message_id": 3184}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 532, "type": "mousemove", "message_id": 3185}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 539, "type": "mousemove", "message_id": 3186}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 292, "x": 550, "type": "mousemove", "message_id": 3187}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 564, "type": "mousemove", "message_id": 3188}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 579, "type": "mouseover", "message_id": 3189}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 579, "type": "mouseover", "message_id": 3190}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 579, "type": "mousemove", "message_id": 3191}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 592, "type": "mouseover", "message_id": 3192}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 592, "type": "mouseover", "message_id": 3193}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 592, "type": "mousemove", "message_id": 3194}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 602, "type": "mousemove", "message_id": 3195}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 610, "type": "mousemove", "message_id": 3196}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 614, "type": "mousemove", "message_id": 3197}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 267, "x": 618, "type": "mousemove", "message_id": 3198}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 620, "type": "mouseover", "message_id": 3199}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 620, "type": "mouseover", "message_id": 3200}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 620, "type": "mousemove", "message_id": 3201}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 621, "type": "mouseover", "message_id": 3202}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 621, "type": "mouseover", "message_id": 3203}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 621, "type": "mousemove", "message_id": 3204}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 621, "type": "mousemove", "message_id": 3205}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 621, "type": "mousemove", "message_id": 3206}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 622, "type": "mousemove", "message_id": 3207}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 622, "type": "mousemove", "message_id": 3208}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 623, "type": "mousemove", "message_id": 3209}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 623, "type": "mousemove", "message_id": 3210}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 623, "type": "mousemove", "message_id": 3211}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 624, "type": "mousemove", "message_id": 3212}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 625, "type": "mousemove", "message_id": 3213}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 626, "type": "mousemove", "message_id": 3214}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 627, "type": "mousemove", "message_id": 3215}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 628, "type": "mousemove", "message_id": 3216}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 629, "type": "mousemove", "message_id": 3217}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 630, "type": "mousemove", "message_id": 3218}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 630, "type": "mousemove", "message_id": 3219}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 630, "type": "mousemove", "message_id": 3220}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 263, "x": 630, "type": "mousemove", "message_id": 3221}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 630, "type": "mousemove", "message_id": 3222}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 265, "x": 629, "type": "mousemove", "message_id": 3223}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 266, "x": 628, "type": "mousemove", "message_id": 3224}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 626, "type": "mouseover", "message_id": 3225}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 626, "type": "mouseover", "message_id": 3226}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 269, "x": 626, "type": "mousemove", "message_id": 3227}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 622, "type": "mousemove", "message_id": 3228}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 615, "type": "mousemove", "message_id": 3229}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 607, "type": "mousemove", "message_id": 3230}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 293, "x": 602, "type": "mousemove", "message_id": 3231}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 599, "type": "mouseover", "message_id": 3232}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 599, "type": "mouseover", "message_id": 3233}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 599, "type": "mousemove", "message_id": 3234}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 304, "x": 598, "type": "mouseover", "message_id": 3235}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 304, "x": 598, "type": "mouseover", "message_id": 3236}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 304, "x": 598, "type": "mousemove", "message_id": 3237}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 309, "x": 598, "type": "mousemove", "message_id": 3238}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 599, "type": "mousemove", "message_id": 3239}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 600, "type": "mousemove", "message_id": 3240}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 601, "type": "mousemove", "message_id": 3241}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 603, "type": "mouseover", "message_id": 3242}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 603, "type": "mouseover", "message_id": 3243}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 603, "type": "mousemove", "message_id": 3244}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 605, "type": "mouseover", "message_id": 3245}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 605, "type": "mouseover", "message_id": 3246}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 605, "type": "mousemove", "message_id": 3247}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 322, "x": 610, "type": "mousemove", "message_id": 3248}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 615, "type": "mousemove", "message_id": 3249}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 621, "type": "mousemove", "message_id": 3250}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 626, "type": "mousemove", "message_id": 3251}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 630, "type": "mousemove", "message_id": 3252}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 635, "type": "mousemove", "message_id": 3253}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 638, "type": "mousemove", "message_id": 3254}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 641, "type": "mousemove", "message_id": 3255}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 642, "type": "mouseover", "message_id": 3256}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 642, "type": "mouseover", "message_id": 3257}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 642, "type": "mousemove", "message_id": 3258}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 642, "type": "mousemove", "message_id": 3259}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 642, "type": "mousemove", "message_id": 3260}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 642, "type": "mousemove", "message_id": 3261}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 642, "type": "mousemove", "message_id": 3262}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 642, "type": "mousemove", "message_id": 3263}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 642, "type": "mousemove", "message_id": 3264}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 642, "type": "mousemove", "message_id": 3265}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 642, "type": "mousedown", "message_id": 3266}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 642, "type": "mousemove", "message_id": 3268}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 642, "type": "mouseup", "message_id": 3269}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 643, "type": "mousemove", "message_id": 3270}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 644, "type": "mousemove", "message_id": 3271}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 645, "type": "mousemove", "message_id": 3272}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 645, "type": "mousemove", "message_id": 3273}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 647, "type": "mouseover", "message_id": 3274}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 647, "type": "mousemove", "message_id": 3276}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 647, "type": "mouseover", "message_id": 3275}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 649, "type": "mousemove", "message_id": 3277}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 652, "type": "mousemove", "message_id": 3278}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 654, "type": "mousemove", "message_id": 3279}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 657, "type": "mousemove", "message_id": 3280}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 661, "type": "mousemove", "message_id": 3281}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 326, "x": 665, "type": "mousemove", "message_id": 3282}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 327, "x": 669, "type": "mousemove", "message_id": 3283}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 327, "x": 673, "type": "mousemove", "message_id": 3284}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 328, "x": 676, "type": "mousemove", "message_id": 3285}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 328, "x": 678, "type": "mousemove", "message_id": 3286}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 328, "x": 679, "type": "mouseover", "message_id": 3287}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 328, "x": 679, "type": "mouseover", "message_id": 3288}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 328, "x": 679, "type": "mousemove", "message_id": 3289}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 328, "x": 679, "type": "mousemove", "message_id": 3290}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 328, "x": 678, "type": "mousemove", "message_id": 3291}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 328, "x": 678, "type": "mousemove", "message_id": 3292}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 328, "x": 678, "type": "mousemove", "message_id": 3293}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 3294, "altKey": false, "metaKey": false, "key": "Backspace", "ctrlKey": false, "type": "keydown", "keyCode": 8}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 327, "x": 678, "type": "mousemove", "message_id": 3296}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 326, "x": 679, "type": "mousemove", "message_id": 3297}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 679, "type": "mousemove", "message_id": 3298}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 322, "x": 679, "type": "mousemove", "message_id": 3299}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 678, "type": "mousemove", "message_id": 3300}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 311, "x": 677, "type": "mousemove", "message_id": 3301}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 673, "type": "mouseover", "message_id": 3302}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 673, "type": "mouseover", "message_id": 3303}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 673, "type": "mousemove", "message_id": 3304}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 292, "x": 664, "type": "mousemove", "message_id": 3305}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 652, "type": "mousemove", "message_id": 3306}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 264, "x": 635, "type": "mousemove", "message_id": 3307}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 249, "x": 612, "type": "mousemove", "message_id": 3308}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 238, "x": 594, "type": "mousemove", "message_id": 3309}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 223, "x": 569, "type": "mousemove", "message_id": 3310}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 210, "x": 545, "type": "mousemove", "message_id": 3311}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 198, "x": 524, "type": "mouseover", "message_id": 3312}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 198, "x": 524, "type": "mouseover", "message_id": 3313}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 198, "x": 524, "type": "mousemove", "message_id": 3314}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 188, "x": 505, "type": "mouseover", "message_id": 3315}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 188, "x": 505, "type": "mouseover", "message_id": 3316}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 188, "x": 505, "type": "mousemove", "message_id": 3317}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 181, "x": 490, "type": "mouseover", "message_id": 3318}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 181, "x": 490, "type": "mouseover", "message_id": 3319}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 181, "x": 490, "type": "mousemove", "message_id": 3320}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 177, "x": 481, "type": "mousemove", "message_id": 3321}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 176, "x": 477, "type": "mouseover", "message_id": 3322}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 176, "x": 477, "type": "mouseover", "message_id": 3323}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 176, "x": 477, "type": "mousemove", "message_id": 3324}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 476, "type": "mouseover", "message_id": 3325}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 476, "type": "mouseover", "message_id": 3326}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 476, "type": "mousemove", "message_id": 3327}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 476, "type": "mousedown", "message_id": 3328}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 476, "type": "mousemove", "message_id": 3330}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 476, "type": "mousemove", "message_id": 3331}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 476, "type": "mousemove", "message_id": 3333}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 476, "type": "mousemove", "message_id": 3335}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 476, "type": "mousemove", "message_id": 3337}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 476, "type": "mousemove", "message_id": 3339}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 174, "x": 476, "type": "mousemove", "message_id": 3341}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 174, "x": 476, "type": "mousemove", "message_id": 3343}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 174, "x": 476, "type": "mouseup", "message_id": 3345}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 174, "x": 476, "type": "mousemove", "message_id": 3346}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 477, "type": "mousemove", "message_id": 3347}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 175, "x": 478, "type": "mousemove", "message_id": 3348}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 176, "x": 479, "type": "mousemove", "message_id": 3349}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 176, "x": 480, "type": "mousemove", "message_id": 3350}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 177, "x": 483, "type": "mouseover", "message_id": 3351}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 177, "x": 483, "type": "mouseover", "message_id": 3352}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 177, "x": 483, "type": "mousemove", "message_id": 3353}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 178, "x": 484, "type": "mouseover", "message_id": 3354}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 178, "x": 484, "type": "mousemove", "message_id": 3356}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 178, "x": 484, "type": "mouseover", "message_id": 3355}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 178, "x": 485, "type": "mousemove", "message_id": 3357}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 178, "x": 485, "type": "mousemove", "message_id": 3358}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 178, "x": 485, "type": "mousemove", "message_id": 3359}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 178, "x": 485, "type": "mousemove", "message_id": 3360}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 179, "x": 486, "type": "mousemove", "message_id": 3361}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 179, "x": 486, "type": "mousemove", "message_id": 3362}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 180, "x": 486, "type": "mousemove", "message_id": 3363}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 180, "x": 486, "type": "mousemove", "message_id": 3364}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 180, "x": 486, "type": "mousemove", "message_id": 3367}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 3365, "altKey": false, "metaKey": false, "key": "Backspace", "ctrlKey": false, "type": "keydown", "keyCode": 8}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 180, "x": 486, "type": "mousemove", "message_id": 3368}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 180, "x": 486, "type": "mousemove", "message_id": 3369}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 180, "x": 486, "type": "mousemove", "message_id": 3370}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 181, "x": 486, "type": "mousemove", "message_id": 3371}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 181, "x": 485, "type": "mousemove", "message_id": 3372}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 182, "x": 483, "type": "mouseover", "message_id": 3373}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 182, "x": 483, "type": "mouseover", "message_id": 3374}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 182, "x": 483, "type": "mousemove", "message_id": 3375}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 184, "x": 479, "type": "mouseover", "message_id": 3376}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 184, "x": 479, "type": "mouseover", "message_id": 3377}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 184, "x": 479, "type": "mousemove", "message_id": 3378}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 187, "x": 471, "type": "mousemove", "message_id": 3379}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 192, "x": 459, "type": "mousemove", "message_id": 3380}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 199, "x": 442, "type": "mousemove", "message_id": 3381}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 208, "x": 420, "type": "mousemove", "message_id": 3382}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 216, "x": 398, "type": "mousemove", "message_id": 3383}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 222, "x": 377, "type": "mousemove", "message_id": 3384}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 228, "x": 361, "type": "mousemove", "message_id": 3385}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 233, "x": 351, "type": "mousemove", "message_id": 3386}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 236, "x": 347, "type": "mousemove", "message_id": 3387}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 241, "x": 342, "type": "mousemove", "message_id": 3388}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 246, "x": 339, "type": "mousemove", "message_id": 3389}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 336, "type": "mousemove", "message_id": 3390}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 256, "x": 331, "type": "mousemove", "message_id": 3391}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 323, "type": "mousemove", "message_id": 3392}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 311, "type": "mousemove", "message_id": 3393}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 300, "type": "mousemove", "message_id": 3394}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 288, "type": "mousemove", "message_id": 3395}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 293, "x": 278, "type": "mousemove", "message_id": 3396}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 296, "x": 273, "type": "mousemove", "message_id": 3397}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 298, "x": 268, "type": "mousemove", "message_id": 3398}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 265, "type": "mouseover", "message_id": 3399}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 265, "type": "mouseover", "message_id": 3400}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 299, "x": 265, "type": "mousemove", "message_id": 3401}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 263, "type": "mousemove", "message_id": 3402}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 262, "type": "mouseover", "message_id": 3403}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 262, "type": "mousemove", "message_id": 3405}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 261, "type": "mousemove", "message_id": 3406}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 262, "type": "mouseover", "message_id": 3404}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 260, "type": "mousemove", "message_id": 3407}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 259, "type": "mousemove", "message_id": 3408}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 257, "type": "mouseover", "message_id": 3409}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 257, "type": "mouseover", "message_id": 3410}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 301, "x": 257, "type": "mousemove", "message_id": 3411}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 302, "x": 254, "type": "mousemove", "message_id": 3412}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 252, "type": "mousemove", "message_id": 3413}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 249, "type": "mousemove", "message_id": 3414}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 304, "x": 246, "type": "mousemove", "message_id": 3415}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 305, "x": 243, "type": "mousemove", "message_id": 3416}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 307, "x": 240, "type": "mouseover", "message_id": 3417}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 307, "x": 240, "type": "mouseover", "message_id": 3418}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 307, "x": 240, "type": "mousemove", "message_id": 3419}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 310, "x": 235, "type": "mousemove", "message_id": 3420}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 226, "type": "mousemove", "message_id": 3421}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 315, "x": 216, "type": "mouseover", "message_id": 3422}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 315, "x": 216, "type": "mouseover", "message_id": 3423}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 315, "x": 216, "type": "mousemove", "message_id": 3424}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 207, "type": "mouseover", "message_id": 3425}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 207, "type": "mouseover", "message_id": 3426}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 200, "type": "mousemove", "message_id": 3428}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 207, "type": "mousemove", "message_id": 3427}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 317, "x": 197, "type": "mousemove", "message_id": 3429}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 195, "type": "mousemove", "message_id": 3430}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 195, "type": "mouseover", "message_id": 3431}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 195, "type": "mouseover", "message_id": 3432}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 195, "type": "mousemove", "message_id": 3433}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 195, "type": "mousemove", "message_id": 3434}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 195, "type": "mousemove", "message_id": 3435}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 195, "type": "mousemove", "message_id": 3436}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 195, "type": "mousemove", "message_id": 3437}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 195, "type": "mousemove", "message_id": 3438}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 195, "type": "mousemove", "message_id": 3439}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 319, "x": 195, "type": "mousedown", "message_id": 3440}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 195, "type": "mousemove", "message_id": 3442}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 195, "type": "mouseup", "message_id": 3443}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 3444, "altKey": false, "metaKey": false, "key": "Backspace", "ctrlKey": false, "type": "keydown", "keyCode": 8}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 195, "type": "mousemove", "message_id": 3446}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 195, "type": "mousemove", "message_id": 3447}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 197, "type": "mouseover", "message_id": 3449}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 197, "type": "mouseover", "message_id": 3448}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 197, "type": "mousemove", "message_id": 3450}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 202, "type": "mousemove", "message_id": 3451}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 208, "type": "mousemove", "message_id": 3452}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 232, "type": "mouseover", "message_id": 3454}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 321, "x": 219, "type": "mousemove", "message_id": 3453}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 232, "type": "mouseover", "message_id": 3455}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 232, "type": "mousemove", "message_id": 3456}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 246, "type": "mouseover", "message_id": 3458}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 246, "type": "mouseover", "message_id": 3457}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 246, "type": "mousemove", "message_id": 3459}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 259, "type": "mousemove", "message_id": 3460}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 288, "type": "mousemove", "message_id": 3462}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 273, "type": "mousemove", "message_id": 3461}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 303, "type": "mousemove", "message_id": 3463}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 319, "type": "mouseover", "message_id": 3464}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 319, "type": "mouseover", "message_id": 3465}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 319, "type": "mousemove", "message_id": 3466}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 336, "type": "mousemove", "message_id": 3467}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 349, "type": "mouseover", "message_id": 3468}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 349, "type": "mouseover", "message_id": 3469}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 349, "type": "mousemove", "message_id": 3470}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 364, "type": "mousemove", "message_id": 3471}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 326, "x": 379, "type": "mousemove", "message_id": 3472}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 326, "x": 393, "type": "mousemove", "message_id": 3473}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 326, "x": 405, "type": "mousemove", "message_id": 3474}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 325, "x": 416, "type": "mousemove", "message_id": 3475}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 324, "x": 431, "type": "mousemove", "message_id": 3476}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 450, "type": "mouseover", "message_id": 3477}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 450, "type": "mousemove", "message_id": 3479}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 323, "x": 450, "type": "mouseover", "message_id": 3478}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 320, "x": 472, "type": "mousemove", "message_id": 3480}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 318, "x": 491, "type": "mousemove", "message_id": 3481}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 316, "x": 518, "type": "mousemove", "message_id": 3482}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 313, "x": 543, "type": "mousemove", "message_id": 3483}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 310, "x": 567, "type": "mousemove", "message_id": 3484}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 308, "x": 588, "type": "mousemove", "message_id": 3485}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 306, "x": 606, "type": "mousemove", "message_id": 3486}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 305, "x": 625, "type": "mousemove", "message_id": 3487}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 304, "x": 642, "type": "mousemove", "message_id": 3488}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 657, "type": "mouseover", "message_id": 3489}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 657, "type": "mouseover", "message_id": 3490}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 303, "x": 657, "type": "mousemove", "message_id": 3491}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 302, "x": 673, "type": "mouseover", "message_id": 3492}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 302, "x": 673, "type": "mouseover", "message_id": 3493}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 302, "x": 673, "type": "mousemove", "message_id": 3494}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 297, "x": 702, "type": "mousemove", "message_id": 3496}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 300, "x": 685, "type": "mousemove", "message_id": 3495}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 294, "x": 718, "type": "mousemove", "message_id": 3497}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 291, "x": 735, "type": "mousemove", "message_id": 3498}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 751, "type": "mousemove", "message_id": 3499}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 768, "type": "mousemove", "message_id": 3500}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 784, "type": "mousemove", "message_id": 3501}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 799, "type": "mouseover", "message_id": 3502}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 799, "type": "mouseover", "message_id": 3503}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 799, "type": "mousemove", "message_id": 3504}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 812, "type": "mousemove", "message_id": 3505}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 823, "type": "mousemove", "message_id": 3506}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 832, "type": "mousemove", "message_id": 3507}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 845, "type": "mouseout", "message_id": 3508}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 824, "type": "mouseover", "message_id": 3509}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 824, "type": "mousemove", "message_id": 3511}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 824, "type": "mouseover", "message_id": 3510}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 824, "type": "mouseover", "message_id": 3512}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 824, "type": "mouseover", "message_id": 3513}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 813, "type": "mouseover", "message_id": 3515}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 824, "type": "mousemove", "message_id": 3514}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 813, "type": "mouseover", "message_id": 3516}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 813, "type": "mousemove", "message_id": 3517}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 802, "type": "mousemove", "message_id": 3518}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 792, "type": "mousemove", "message_id": 3519}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 270, "x": 781, "type": "mousemove", "message_id": 3520}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 770, "type": "mousemove", "message_id": 3521}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 758, "type": "mousemove", "message_id": 3522}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 743, "type": "mouseover", "message_id": 3524}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 743, "type": "mouseover", "message_id": 3523}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 276, "x": 730, "type": "mousemove", "message_id": 3526}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 743, "type": "mousemove", "message_id": 3525}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 720, "type": "mouseover", "message_id": 3527}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 720, "type": "mouseover", "message_id": 3528}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 720, "type": "mousemove", "message_id": 3529}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 710, "type": "mousemove", "message_id": 3530}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 701, "type": "mousemove", "message_id": 3531}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 693, "type": "mousemove", "message_id": 3532}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 687, "type": "mousemove", "message_id": 3533}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 682, "type": "mousemove", "message_id": 3534}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 677, "type": "mousemove", "message_id": 3535}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 672, "type": "mousemove", "message_id": 3536}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 665, "type": "mousemove", "message_id": 3537}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 656, "type": "mousemove", "message_id": 3538}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 647, "type": "mousemove", "message_id": 3539}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 634, "type": "mousemove", "message_id": 3540}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 620, "type": "mousemove", "message_id": 3541}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 610, "type": "mousemove", "message_id": 3542}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 602, "type": "mousemove", "message_id": 3543}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 276, "x": 595, "type": "mousemove", "message_id": 3544}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 587, "type": "mouseover", "message_id": 3545}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 587, "type": "mouseover", "message_id": 3546}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 587, "type": "mousemove", "message_id": 3547}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 580, "type": "mouseover", "message_id": 3549}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 580, "type": "mouseover", "message_id": 3548}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 573, "type": "mousemove", "message_id": 3551}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 580, "type": "mousemove", "message_id": 3550}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 567, "type": "mousemove", "message_id": 3552}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 563, "type": "mousemove", "message_id": 3553}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 556, "type": "mousemove", "message_id": 3554}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 549, "type": "mousemove", "message_id": 3555}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 541, "type": "mousemove", "message_id": 3556}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 534, "type": "mousemove", "message_id": 3557}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 528, "type": "mousemove", "message_id": 3558}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 523, "type": "mousemove", "message_id": 3559}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 272, "x": 518, "type": "mousemove", "message_id": 3560}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 513, "type": "mousemove", "message_id": 3561}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 273, "x": 508, "type": "mousemove", "message_id": 3562}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 274, "x": 500, "type": "mousemove", "message_id": 3563}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 275, "x": 491, "type": "mousemove", "message_id": 3564}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 275, "x": 481, "type": "mousemove", "message_id": 3565}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 275, "x": 473, "type": "mousemove", "message_id": 3566}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 275, "x": 468, "type": "mousemove", "message_id": 3567}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 276, "x": 463, "type": "mousemove", "message_id": 3568}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 276, "x": 459, "type": "mousemove", "message_id": 3569}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 277, "x": 454, "type": "mousemove", "message_id": 3570}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 278, "x": 449, "type": "mousemove", "message_id": 3571}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 279, "x": 445, "type": "mousemove", "message_id": 3572}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 439, "type": "mousemove", "message_id": 3573}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 281, "x": 434, "type": "mousemove", "message_id": 3574}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 282, "x": 430, "type": "mousemove", "message_id": 3575}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 427, "type": "mousemove", "message_id": 3576}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 284, "x": 425, "type": "mousemove", "message_id": 3577}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 423, "type": "mousemove", "message_id": 3578}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 422, "type": "mouseover", "message_id": 3579}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 422, "type": "mouseover", "message_id": 3580}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 422, "type": "mousemove", "message_id": 3581}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 422, "type": "mousemove", "message_id": 3583}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 422, "type": "mousemove", "message_id": 3582}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 422, "type": "mousemove", "message_id": 3584}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3585}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3586}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3587}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3588}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3589}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3590}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousedown", "message_id": 3591}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mouseup", "message_id": 3592}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3593}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3594}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3595}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3596}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3597}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3598}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3599}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3600}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 288, "x": 422, "type": "mousemove", "message_id": 3601}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 422, "type": "mousemove", "message_id": 3602}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 422, "type": "mousemove", "message_id": 3603}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 422, "type": "mousemove", "message_id": 3604}
+{"sender": 3699, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 3605, "altKey": false, "metaKey": true, "key": "Meta", "ctrlKey": false, "type": "keydown", "keyCode": 91}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 422, "type": "mousemove", "message_id": 3606}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3607}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3609}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3611}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3613}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3615}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3617}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3619}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3621}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3623}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3625}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3627}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3629}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3631}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3633}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3635}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3637}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3639}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3641}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3643}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3645}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3647}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3649}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3651}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3653}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3655}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3657}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3659}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3661}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3663}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3665}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3667}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3669}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3671}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3673}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3675}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3677}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3679}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3681}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3683}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3685}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3687}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3689}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3691}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3693}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3695}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3697}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3699}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3701}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3703}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3705}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3707}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3709}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3711}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 3713}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 3715}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3717}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3719}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3721}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3723}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3725}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3727}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3729}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3731}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 3733}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3735}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3737}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3739}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3741}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3743}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3745}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3747}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3749}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3751}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3753}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3755}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3757}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3759}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3761}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3763}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 3765}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3767}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3769}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3771}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3773}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3775}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3777}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3779}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3781}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3783}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3785}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3787}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 3789}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3791}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 3793}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3795}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3797}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3801}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 3799}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3803}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3805}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3807}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3809}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 3811}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 3813}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3815}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3817}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3819}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3821}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3823}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3825}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3827}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3829}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3831}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3833}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3835}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3837}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3839}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3841}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3843}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3845}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3847}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3849}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3851}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3853}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3855}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3857}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3859}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3861}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3863}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3865}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3867}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 3869}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3871}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -11, "delta": -11, "type": "wheel", "message_id": 3873}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 3875}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -10, "delta": -10, "type": "wheel", "message_id": 3877}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 3879}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3881}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -11, "delta": -11, "type": "wheel", "message_id": 3883}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3885}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -10, "delta": -10, "type": "wheel", "message_id": 3887}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3889}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3891}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -8, "delta": -8, "type": "wheel", "message_id": 3893}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3895}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3897}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3899}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3901}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3903}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -8, "delta": -8, "type": "wheel", "message_id": 3905}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3907}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3909}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 3911}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3913}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3915}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3917}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3919}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3921}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3923}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3925}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3927}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3929}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3931}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3933}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3935}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3939}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3937}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3941}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 3943}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3945}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3947}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3949}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3951}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3953}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 3955}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3957}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 3959}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3961}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3963}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3965}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3967}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3969}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 3971}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3973}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3975}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3977}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 3979}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3981}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 3983}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 3985}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 3987}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 3989}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -13, "delta": -13, "type": "wheel", "message_id": 3991}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -22, "delta": -22, "type": "wheel", "message_id": 3993}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -11, "delta": -11, "type": "wheel", "message_id": 3995}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -17, "delta": -17, "type": "wheel", "message_id": 3997}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -19, "delta": -19, "type": "wheel", "message_id": 3999}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -18, "delta": -18, "type": "wheel", "message_id": 4001}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -20, "delta": -20, "type": "wheel", "message_id": 4003}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -20, "delta": -20, "type": "wheel", "message_id": 4005}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -13, "delta": -13, "type": "wheel", "message_id": 4007}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -16, "delta": -16, "type": "wheel", "message_id": 4009}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -25, "delta": -25, "type": "wheel", "message_id": 4011}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -24, "delta": -24, "type": "wheel", "message_id": 4013}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -23, "delta": -23, "type": "wheel", "message_id": 4015}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -22, "delta": -22, "type": "wheel", "message_id": 4017}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -20, "delta": -20, "type": "wheel", "message_id": 4019}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -20, "delta": -20, "type": "wheel", "message_id": 4021}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -19, "delta": -19, "type": "wheel", "message_id": 4023}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -18, "delta": -18, "type": "wheel", "message_id": 4025}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -17, "delta": -17, "type": "wheel", "message_id": 4027}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -16, "delta": -16, "type": "wheel", "message_id": 4029}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -15, "delta": -15, "type": "wheel", "message_id": 4031}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -13, "delta": -13, "type": "wheel", "message_id": 4033}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -12, "delta": -12, "type": "wheel", "message_id": 4035}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -11, "delta": -11, "type": "wheel", "message_id": 4037}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -10, "delta": -10, "type": "wheel", "message_id": 4039}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -10, "delta": -10, "type": "wheel", "message_id": 4041}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 4043}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -8, "delta": -8, "type": "wheel", "message_id": 4045}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -8, "delta": -8, "type": "wheel", "message_id": 4047}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 4049}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 4051}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 4053}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 4055}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 4057}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 4059}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 4061}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 4063}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 4065}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 4067}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 4069}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 4071}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 4073}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 4075}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 4077}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 4079}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 4081}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 4083}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 4085}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 4087}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 4089}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 4091}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 4093}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 4095}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 4097}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -11, "delta": -11, "type": "wheel", "message_id": 4099}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -15, "delta": -15, "type": "wheel", "message_id": 4101}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -17, "delta": -17, "type": "wheel", "message_id": 4103}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -20, "delta": -20, "type": "wheel", "message_id": 4105}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -35, "delta": -35, "type": "wheel", "message_id": 4107}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -24, "delta": -24, "type": "wheel", "message_id": 4109}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -23, "delta": -23, "type": "wheel", "message_id": 4111}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -36, "delta": -36, "type": "wheel", "message_id": 4113}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -16, "delta": -16, "type": "wheel", "message_id": 4115}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -14, "delta": -14, "type": "wheel", "message_id": 4117}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -20, "delta": -20, "type": "wheel", "message_id": 4119}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -15, "delta": -15, "type": "wheel", "message_id": 4121}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -11, "delta": -11, "type": "wheel", "message_id": 4123}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 4125}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 4127}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 4129}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 4131}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 4133}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 4135}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 4137}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 5, "delta": 5, "type": "wheel", "message_id": 4139}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 10, "delta": 10, "type": "wheel", "message_id": 4141}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 8, "delta": 8, "type": "wheel", "message_id": 4143}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 18, "delta": 18, "type": "wheel", "message_id": 4145}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4147}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 31, "delta": 31, "type": "wheel", "message_id": 4149}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 57, "delta": 57, "type": "wheel", "message_id": 4151}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 33, "delta": 33, "type": "wheel", "message_id": 4153}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 57, "delta": 57, "type": "wheel", "message_id": 4155}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 57, "delta": 57, "type": "wheel", "message_id": 4157}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 58, "delta": 58, "type": "wheel", "message_id": 4159}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 56, "delta": 56, "type": "wheel", "message_id": 4161}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 53, "delta": 53, "type": "wheel", "message_id": 4163}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 50, "delta": 50, "type": "wheel", "message_id": 4165}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 45, "delta": 45, "type": "wheel", "message_id": 4167}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 43, "delta": 43, "type": "wheel", "message_id": 4169}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4171}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 36, "delta": 36, "type": "wheel", "message_id": 4173}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4175}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4177}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4179}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 26, "delta": 26, "type": "wheel", "message_id": 4181}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4183}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4185}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4187}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 18, "delta": 18, "type": "wheel", "message_id": 4189}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4191}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 6, "delta": 6, "type": "wheel", "message_id": 4193}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 17, "delta": 17, "type": "wheel", "message_id": 4195}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 18, "delta": 18, "type": "wheel", "message_id": 4197}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 15, "delta": 15, "type": "wheel", "message_id": 4199}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 29, "delta": 29, "type": "wheel", "message_id": 4201}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4203}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 35, "delta": 35, "type": "wheel", "message_id": 4205}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 41, "delta": 41, "type": "wheel", "message_id": 4207}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4209}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 52, "delta": 52, "type": "wheel", "message_id": 4211}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 51, "delta": 51, "type": "wheel", "message_id": 4213}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 51, "delta": 51, "type": "wheel", "message_id": 4215}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 48, "delta": 48, "type": "wheel", "message_id": 4217}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 45, "delta": 45, "type": "wheel", "message_id": 4219}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 41, "delta": 41, "type": "wheel", "message_id": 4221}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 40, "delta": 40, "type": "wheel", "message_id": 4223}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4225}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 36, "delta": 36, "type": "wheel", "message_id": 4227}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4229}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4231}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4233}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 25, "delta": 25, "type": "wheel", "message_id": 4235}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4237}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4239}
+{"panX": -132.9215612406124, "panY": -111.68644564823177, "scale": 1.6899999999999968, "sender": 3697, "msg_type": "ViewPort", "message_id": 4240}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4241}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 4243}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 13, "delta": 13, "type": "wheel", "message_id": 4245}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 22, "delta": 22, "type": "wheel", "message_id": 4247}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 19, "delta": 19, "type": "wheel", "message_id": 4249}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4251}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4253}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 41, "delta": 41, "type": "wheel", "message_id": 4255}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 29, "delta": 29, "type": "wheel", "message_id": 4257}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4259}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 38, "delta": 38, "type": "wheel", "message_id": 4261}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4263}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 58, "delta": 58, "type": "wheel", "message_id": 4265}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 55, "delta": 55, "type": "wheel", "message_id": 4267}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 53, "delta": 53, "type": "wheel", "message_id": 4269}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 49, "delta": 49, "type": "wheel", "message_id": 4271}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 48, "delta": 48, "type": "wheel", "message_id": 4273}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 47, "delta": 47, "type": "wheel", "message_id": 4275}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 45, "delta": 45, "type": "wheel", "message_id": 4277}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 43, "delta": 43, "type": "wheel", "message_id": 4279}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4281}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 36, "delta": 36, "type": "wheel", "message_id": 4283}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4285}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4287}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 422, "type": "mousemove", "message_id": 4289}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4290}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 423, "type": "mousemove", "message_id": 4292}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 26, "delta": 26, "type": "wheel", "message_id": 4293}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 423, "type": "mousemove", "message_id": 4295}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 423, "type": "mousemove", "message_id": 4296}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4297}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 423, "type": "mousemove", "message_id": 4299}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 424, "type": "mousemove", "message_id": 4300}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 287, "x": 424, "type": "mousemove", "message_id": 4301}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4302}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 8, "delta": 8, "type": "wheel", "message_id": 4304}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 23, "delta": 23, "type": "wheel", "message_id": 4306}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 424, "type": "mousemove", "message_id": 4308}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 18, "delta": 18, "type": "wheel", "message_id": 4309}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 424, "type": "mousemove", "message_id": 4311}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 23, "delta": 23, "type": "wheel", "message_id": 4312}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 28, "delta": 28, "type": "wheel", "message_id": 4315}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 424, "type": "mousemove", "message_id": 4314}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 424, "type": "mousemove", "message_id": 4317}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 44, "delta": 44, "type": "wheel", "message_id": 4318}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 48, "delta": 48, "type": "wheel", "message_id": 4320}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4322}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 45, "delta": 45, "type": "wheel", "message_id": 4324}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 22, "delta": 22, "type": "wheel", "message_id": 4326}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 63, "delta": 63, "type": "wheel", "message_id": 4328}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 63, "delta": 63, "type": "wheel", "message_id": 4330}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 61, "delta": 61, "type": "wheel", "message_id": 4332}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 58, "delta": 58, "type": "wheel", "message_id": 4334}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 53, "delta": 53, "type": "wheel", "message_id": 4336}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 52, "delta": 52, "type": "wheel", "message_id": 4338}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 49, "delta": 49, "type": "wheel", "message_id": 4340}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 48, "delta": 48, "type": "wheel", "message_id": 4342}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 45, "delta": 45, "type": "wheel", "message_id": 4344}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 37, "delta": 37, "type": "wheel", "message_id": 4348}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 41, "delta": 41, "type": "wheel", "message_id": 4346}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4350}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4352}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 29, "delta": 29, "type": "wheel", "message_id": 4354}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4356}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 4358}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4360}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 31, "delta": 31, "type": "wheel", "message_id": 4362}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 33, "delta": 33, "type": "wheel", "message_id": 4364}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 36, "delta": 36, "type": "wheel", "message_id": 4366}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 50, "delta": 50, "type": "wheel", "message_id": 4368}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 29, "delta": 29, "type": "wheel", "message_id": 4370}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 25, "delta": 25, "type": "wheel", "message_id": 4372}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 58, "delta": 58, "type": "wheel", "message_id": 4374}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 58, "delta": 58, "type": "wheel", "message_id": 4376}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 55, "delta": 55, "type": "wheel", "message_id": 4378}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 53, "delta": 53, "type": "wheel", "message_id": 4380}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 51, "delta": 51, "type": "wheel", "message_id": 4382}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 46, "delta": 46, "type": "wheel", "message_id": 4384}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 45, "delta": 45, "type": "wheel", "message_id": 4386}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 43, "delta": 43, "type": "wheel", "message_id": 4388}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 41, "delta": 41, "type": "wheel", "message_id": 4390}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 37, "delta": 37, "type": "wheel", "message_id": 4392}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4394}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4396}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 29, "delta": 29, "type": "wheel", "message_id": 4398}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4400}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4402}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 23, "delta": 23, "type": "wheel", "message_id": 4404}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4406}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 4408}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4410}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4412}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4414}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 51, "delta": 51, "type": "wheel", "message_id": 4416}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 35, "delta": 35, "type": "wheel", "message_id": 4418}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4420}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 62, "delta": 62, "type": "wheel", "message_id": 4422}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 67, "delta": 67, "type": "wheel", "message_id": 4424}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 66, "delta": 66, "type": "wheel", "message_id": 4426}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 66, "delta": 66, "type": "wheel", "message_id": 4428}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 62, "delta": 62, "type": "wheel", "message_id": 4430}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 58, "delta": 58, "type": "wheel", "message_id": 4432}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 55, "delta": 55, "type": "wheel", "message_id": 4434}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 53, "delta": 53, "type": "wheel", "message_id": 4436}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 49, "delta": 49, "type": "wheel", "message_id": 4438}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 45, "delta": 45, "type": "wheel", "message_id": 4440}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 41, "delta": 41, "type": "wheel", "message_id": 4442}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 38, "delta": 38, "type": "wheel", "message_id": 4444}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4446}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4448}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 29, "delta": 29, "type": "wheel", "message_id": 4450}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4452}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4454}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 23, "delta": 23, "type": "wheel", "message_id": 4456}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4458}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 4460}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 23, "delta": 23, "type": "wheel", "message_id": 4462}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4464}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4466}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 63, "delta": 63, "type": "wheel", "message_id": 4468}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 38, "delta": 38, "type": "wheel", "message_id": 4470}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 33, "delta": 33, "type": "wheel", "message_id": 4472}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 81, "delta": 81, "type": "wheel", "message_id": 4474}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 88, "delta": 88, "type": "wheel", "message_id": 4476}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 89, "delta": 89, "type": "wheel", "message_id": 4478}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 87, "delta": 87, "type": "wheel", "message_id": 4480}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 83, "delta": 83, "type": "wheel", "message_id": 4482}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 78, "delta": 78, "type": "wheel", "message_id": 4484}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 75, "delta": 75, "type": "wheel", "message_id": 4486}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 73, "delta": 73, "type": "wheel", "message_id": 4488}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 67, "delta": 67, "type": "wheel", "message_id": 4490}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 62, "delta": 62, "type": "wheel", "message_id": 4492}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 56, "delta": 56, "type": "wheel", "message_id": 4494}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 52, "delta": 52, "type": "wheel", "message_id": 4496}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 47, "delta": 47, "type": "wheel", "message_id": 4498}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 43, "delta": 43, "type": "wheel", "message_id": 4500}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4502}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 37, "delta": 37, "type": "wheel", "message_id": 4504}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4506}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4508}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 29, "delta": 29, "type": "wheel", "message_id": 4510}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 4512}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4514}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 29, "delta": 29, "type": "wheel", "message_id": 4516}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4518}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 29, "delta": 29, "type": "wheel", "message_id": 4520}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4522}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 40, "delta": 40, "type": "wheel", "message_id": 4524}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4526}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 48, "delta": 48, "type": "wheel", "message_id": 4528}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 48, "delta": 48, "type": "wheel", "message_id": 4530}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 47, "delta": 47, "type": "wheel", "message_id": 4532}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 44, "delta": 44, "type": "wheel", "message_id": 4534}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 41, "delta": 41, "type": "wheel", "message_id": 4536}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 40, "delta": 40, "type": "wheel", "message_id": 4538}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 38, "delta": 38, "type": "wheel", "message_id": 4540}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 37, "delta": 37, "type": "wheel", "message_id": 4542}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4544}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4546}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 29, "delta": 29, "type": "wheel", "message_id": 4548}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4550}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4552}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 23, "delta": 23, "type": "wheel", "message_id": 4554}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4556}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4558}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 4560}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4562}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 23, "delta": 23, "type": "wheel", "message_id": 4564}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4566}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 31, "delta": 31, "type": "wheel", "message_id": 4568}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 51, "delta": 51, "type": "wheel", "message_id": 4570}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4572}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4574}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 41, "delta": 41, "type": "wheel", "message_id": 4576}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 62, "delta": 62, "type": "wheel", "message_id": 4578}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 61, "delta": 61, "type": "wheel", "message_id": 4580}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 60, "delta": 60, "type": "wheel", "message_id": 4582}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 58, "delta": 58, "type": "wheel", "message_id": 4584}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 54, "delta": 54, "type": "wheel", "message_id": 4586}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 52, "delta": 52, "type": "wheel", "message_id": 4588}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 49, "delta": 49, "type": "wheel", "message_id": 4590}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 47, "delta": 47, "type": "wheel", "message_id": 4592}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 43, "delta": 43, "type": "wheel", "message_id": 4594}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4596}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 37, "delta": 37, "type": "wheel", "message_id": 4598}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 424, "type": "mousemove", "message_id": 4600}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4601}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 424, "type": "mousemove", "message_id": 4604}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 31, "delta": 31, "type": "wheel", "message_id": 4605}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 424, "type": "mousemove", "message_id": 4603}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 29, "delta": 29, "type": "wheel", "message_id": 4607}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 26, "delta": 26, "type": "wheel", "message_id": 4609}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4611}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 22, "delta": 22, "type": "wheel", "message_id": 4613}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4615}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 424, "type": "mousemove", "message_id": 4617}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 4618}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 23, "delta": 23, "type": "wheel", "message_id": 4620}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 26, "delta": 26, "type": "wheel", "message_id": 4622}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4624}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 47, "delta": 47, "type": "wheel", "message_id": 4626}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 52, "delta": 52, "type": "wheel", "message_id": 4628}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 52, "delta": 52, "type": "wheel", "message_id": 4630}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 51, "delta": 51, "type": "wheel", "message_id": 4632}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 90, "delta": 90, "type": "wheel", "message_id": 4634}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 91, "delta": 91, "type": "wheel", "message_id": 4636}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 91, "delta": 91, "type": "wheel", "message_id": 4638}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 88, "delta": 88, "type": "wheel", "message_id": 4640}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 83, "delta": 83, "type": "wheel", "message_id": 4642}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 80, "delta": 80, "type": "wheel", "message_id": 4644}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 75, "delta": 75, "type": "wheel", "message_id": 4646}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 424, "type": "mousemove", "message_id": 4648}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 73, "delta": 73, "type": "wheel", "message_id": 4649}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 67, "delta": 67, "type": "wheel", "message_id": 4651}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 62, "delta": 62, "type": "wheel", "message_id": 4653}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 56, "delta": 56, "type": "wheel", "message_id": 4655}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 51, "delta": 51, "type": "wheel", "message_id": 4657}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 47, "delta": 47, "type": "wheel", "message_id": 4659}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 43, "delta": 43, "type": "wheel", "message_id": 4661}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4663}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 37, "delta": 37, "type": "wheel", "message_id": 4665}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4667}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 11, "delta": 11, "type": "wheel", "message_id": 4669}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 40, "delta": 40, "type": "wheel", "message_id": 4671}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 424, "type": "mousemove", "message_id": 4672}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 6, "delta": 6, "type": "wheel", "message_id": 4673}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 37, "delta": 37, "type": "wheel", "message_id": 4674}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 37, "delta": 37, "type": "wheel", "message_id": 4675}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 57, "delta": 57, "type": "wheel", "message_id": 4676}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 33, "delta": 33, "type": "wheel", "message_id": 4677}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4678}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 46, "delta": 46, "type": "wheel", "message_id": 4679}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 74, "delta": 74, "type": "wheel", "message_id": 4680}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 78, "delta": 78, "type": "wheel", "message_id": 4681}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 75, "delta": 75, "type": "wheel", "message_id": 4682}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 73, "delta": 73, "type": "wheel", "message_id": 4683}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 68, "delta": 68, "type": "wheel", "message_id": 4684}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 67, "delta": 67, "type": "wheel", "message_id": 4685}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 64, "delta": 64, "type": "wheel", "message_id": 4686}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 62, "delta": 62, "type": "wheel", "message_id": 4687}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 56, "delta": 56, "type": "wheel", "message_id": 4688}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 51, "delta": 51, "type": "wheel", "message_id": 4689}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 47, "delta": 47, "type": "wheel", "message_id": 4690}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 43, "delta": 43, "type": "wheel", "message_id": 4691}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4692}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 37, "delta": 37, "type": "wheel", "message_id": 4693}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4695}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4694}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 4696}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4697}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 35, "delta": 35, "type": "wheel", "message_id": 4698}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4699}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 40, "delta": 40, "type": "wheel", "message_id": 4700}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 37, "delta": 37, "type": "wheel", "message_id": 4701}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4702}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4703}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4704}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 54, "delta": 54, "type": "wheel", "message_id": 4705}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 51, "delta": 51, "type": "wheel", "message_id": 4706}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 49, "delta": 49, "type": "wheel", "message_id": 4707}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 47, "delta": 47, "type": "wheel", "message_id": 4708}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 44, "delta": 44, "type": "wheel", "message_id": 4709}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 41, "delta": 41, "type": "wheel", "message_id": 4710}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 41, "delta": 41, "type": "wheel", "message_id": 4711}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4712}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 36, "delta": 36, "type": "wheel", "message_id": 4713}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4714}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4715}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4716}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 25, "delta": 25, "type": "wheel", "message_id": 4717}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4718}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4719}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 425, "type": "mousemove", "message_id": 4720}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 425, "type": "mousemove", "message_id": 4721}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 4722}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 17, "delta": 17, "type": "wheel", "message_id": 4723}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4724}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 35, "delta": 35, "type": "wheel", "message_id": 4725}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4726}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 425, "type": "mousemove", "message_id": 4727}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 38, "delta": 38, "type": "wheel", "message_id": 4728}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 35, "delta": 35, "type": "wheel", "message_id": 4729}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 44, "delta": 44, "type": "wheel", "message_id": 4730}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 69, "delta": 69, "type": "wheel", "message_id": 4731}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 70, "delta": 70, "type": "wheel", "message_id": 4732}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 68, "delta": 68, "type": "wheel", "message_id": 4733}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 67, "delta": 67, "type": "wheel", "message_id": 4734}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 63, "delta": 63, "type": "wheel", "message_id": 4735}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 60, "delta": 60, "type": "wheel", "message_id": 4736}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 58, "delta": 58, "type": "wheel", "message_id": 4737}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 55, "delta": 55, "type": "wheel", "message_id": 4738}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 51, "delta": 51, "type": "wheel", "message_id": 4739}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 425, "type": "mousemove", "message_id": 4740}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 47, "delta": 47, "type": "wheel", "message_id": 4741}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 43, "delta": 43, "type": "wheel", "message_id": 4742}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 39, "delta": 39, "type": "wheel", "message_id": 4743}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 36, "delta": 36, "type": "wheel", "message_id": 4744}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4745}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4746}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4747}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 26, "delta": 26, "type": "wheel", "message_id": 4748}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4749}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4750}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4751}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 286, "x": 425, "type": "mousemove", "message_id": 4752}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 18, "delta": 18, "type": "wheel", "message_id": 4753}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 17, "delta": 17, "type": "wheel", "message_id": 4754}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 16, "delta": 16, "type": "wheel", "message_id": 4755}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 15, "delta": 15, "type": "wheel", "message_id": 4756}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 425, "type": "mousemove", "message_id": 4757}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 13, "delta": 13, "type": "wheel", "message_id": 4758}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 12, "delta": 12, "type": "wheel", "message_id": 4759}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 11, "delta": 11, "type": "wheel", "message_id": 4760}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 11, "delta": 11, "type": "wheel", "message_id": 4761}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 10, "delta": 10, "type": "wheel", "message_id": 4762}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 9, "delta": 9, "type": "wheel", "message_id": 4763}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 8, "delta": 8, "type": "wheel", "message_id": 4764}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 8, "delta": 8, "type": "wheel", "message_id": 4765}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 7, "delta": 7, "type": "wheel", "message_id": 4766}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 7, "delta": 7, "type": "wheel", "message_id": 4767}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 7, "delta": 7, "type": "wheel", "message_id": 4768}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 425, "type": "mousemove", "message_id": 4769}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 6, "delta": 6, "type": "wheel", "message_id": 4770}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 6, "delta": 6, "type": "wheel", "message_id": 4771}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 4772}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 25, "delta": 25, "type": "wheel", "message_id": 4773}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 30, "delta": 30, "type": "wheel", "message_id": 4774}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4775}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 38, "delta": 38, "type": "wheel", "message_id": 4776}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 60, "delta": 60, "type": "wheel", "message_id": 4777}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 425, "type": "mousemove", "message_id": 4778}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 64, "delta": 64, "type": "wheel", "message_id": 4779}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 66, "delta": 66, "type": "wheel", "message_id": 4780}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 69, "delta": 69, "type": "wheel", "message_id": 4781}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 66, "delta": 66, "type": "wheel", "message_id": 4782}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 63, "delta": 63, "type": "wheel", "message_id": 4783}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 60, "delta": 60, "type": "wheel", "message_id": 4784}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 57, "delta": 57, "type": "wheel", "message_id": 4785}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 53, "delta": 53, "type": "wheel", "message_id": 4786}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 48, "delta": 48, "type": "wheel", "message_id": 4787}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 43, "delta": 43, "type": "wheel", "message_id": 4788}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 41, "delta": 41, "type": "wheel", "message_id": 4789}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 37, "delta": 37, "type": "wheel", "message_id": 4790}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 34, "delta": 34, "type": "wheel", "message_id": 4791}
+{"originalEvent": {"metaKey": true}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 32, "delta": 32, "type": "wheel", "message_id": 4792}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 29, "delta": 29, "type": "wheel", "message_id": 4793}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 27, "delta": 27, "type": "wheel", "message_id": 4794}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 24, "delta": 24, "type": "wheel", "message_id": 4795}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 23, "delta": 23, "type": "wheel", "message_id": 4796}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 425, "type": "mousemove", "message_id": 4797}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 425, "type": "mousemove", "message_id": 4798}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4799}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 4800}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 17, "delta": 17, "type": "wheel", "message_id": 4801}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 16, "delta": 16, "type": "wheel", "message_id": 4802}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 15, "delta": 15, "type": "wheel", "message_id": 4803}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 14, "delta": 14, "type": "wheel", "message_id": 4804}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 13, "delta": 13, "type": "wheel", "message_id": 4805}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 12, "delta": 12, "type": "wheel", "message_id": 4806}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 11, "delta": 11, "type": "wheel", "message_id": 4807}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 10, "delta": 10, "type": "wheel", "message_id": 4808}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 9, "delta": 9, "type": "wheel", "message_id": 4809}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 9, "delta": 9, "type": "wheel", "message_id": 4810}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 8, "delta": 8, "type": "wheel", "message_id": 4811}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 8, "delta": 8, "type": "wheel", "message_id": 4812}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 7, "delta": 7, "type": "wheel", "message_id": 4813}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 7, "delta": 7, "type": "wheel", "message_id": 4814}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 6, "delta": 6, "type": "wheel", "message_id": 4815}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 6, "delta": 6, "type": "wheel", "message_id": 4816}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 6, "delta": 6, "type": "wheel", "message_id": 4817}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 5, "delta": 5, "type": "wheel", "message_id": 4818}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 5, "delta": 5, "type": "wheel", "message_id": 4819}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 4820}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 4821}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 4822}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 4823}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 4824}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 4825}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 4826}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 4827}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 4828}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 4829}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 4830}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 4831}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 4832}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 4833}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4834}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4835}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4836}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4837}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4838}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4839}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4840}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4841}
+{"originalEvent": {"metaKey": false}, "sender": 3699, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 4842}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 285, "x": 424, "type": "mousemove", "message_id": 4843}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 422, "type": "mouseover", "message_id": 4844}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 422, "type": "mouseover", "message_id": 4845}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 283, "x": 422, "type": "mousemove", "message_id": 4846}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 280, "x": 418, "type": "mousemove", "message_id": 4847}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 276, "x": 414, "type": "mousemove", "message_id": 4848}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 271, "x": 408, "type": "mousemove", "message_id": 4849}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 251, "x": 390, "type": "mousemove", "message_id": 4851}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 262, "x": 399, "type": "mousemove", "message_id": 4850}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 241, "x": 384, "type": "mousemove", "message_id": 4852}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 227, "x": 376, "type": "mousemove", "message_id": 4853}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 215, "x": 371, "type": "mousemove", "message_id": 4854}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 207, "x": 367, "type": "mousemove", "message_id": 4855}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 197, "x": 360, "type": "mousemove", "message_id": 4856}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 187, "x": 353, "type": "mousemove", "message_id": 4857}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 177, "x": 345, "type": "mousemove", "message_id": 4858}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 171, "x": 339, "type": "mousemove", "message_id": 4859}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 162, "x": 330, "type": "mousemove", "message_id": 4860}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 151, "x": 318, "type": "mousemove", "message_id": 4861}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 144, "x": 308, "type": "mousemove", "message_id": 4862}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 130, "x": 289, "type": "mousemove", "message_id": 4863}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 115, "x": 266, "type": "mousemove", "message_id": 4864}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 97, "x": 241, "type": "mousemove", "message_id": 4865}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 85, "x": 224, "type": "mousemove", "message_id": 4866}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 68, "x": 202, "type": "mousemove", "message_id": 4867}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 186, "type": "mouseover", "message_id": 4868}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 186, "type": "mouseover", "message_id": 4869}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 54, "x": 186, "type": "mousemove", "message_id": 4870}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 44, "x": 173, "type": "mousemove", "message_id": 4871}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 37, "x": 165, "type": "mouseover", "message_id": 4872}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 37, "x": 165, "type": "mouseover", "message_id": 4873}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 37, "x": 165, "type": "mousemove", "message_id": 4874}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 31, "x": 157, "type": "mousemove", "message_id": 4875}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 26, "x": 152, "type": "mouseover", "message_id": 4876}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 26, "x": 152, "type": "mouseover", "message_id": 4877}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 26, "x": 152, "type": "mousemove", "message_id": 4878}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 24, "x": 150, "type": "mousemove", "message_id": 4879}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 23, "x": 150, "type": "mouseover", "message_id": 4880}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 22, "x": 150, "type": "mousemove", "message_id": 4884}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 23, "x": 150, "type": "mouseover", "message_id": 4881}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 23, "x": 150, "type": "mousemove", "message_id": 4882}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 23, "x": 150, "type": "mousemove", "message_id": 4883}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 22, "x": 151, "type": "mousemove", "message_id": 4885}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 22, "x": 151, "type": "mousemove", "message_id": 4886}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 23, "x": 153, "type": "mouseover", "message_id": 4888}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 23, "x": 153, "type": "mouseover", "message_id": 4887}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 25, "x": 159, "type": "mouseover", "message_id": 4890}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 23, "x": 153, "type": "mousemove", "message_id": 4889}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 25, "x": 159, "type": "mouseover", "message_id": 4891}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 25, "x": 159, "type": "mousemove", "message_id": 4892}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 27, "x": 163, "type": "mouseover", "message_id": 4893}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 27, "x": 163, "type": "mouseover", "message_id": 4894}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 27, "x": 163, "type": "mousemove", "message_id": 4895}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 29, "x": 168, "type": "mousemove", "message_id": 4896}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 30, "x": 172, "type": "mouseover", "message_id": 4897}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 30, "x": 172, "type": "mousemove", "message_id": 4899}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 30, "x": 172, "type": "mouseover", "message_id": 4898}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 30, "x": 173, "type": "mouseover", "message_id": 4900}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 30, "x": 173, "type": "mouseover", "message_id": 4901}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 30, "x": 173, "type": "mousemove", "message_id": 4903}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 30, "x": 173, "type": "mousemove", "message_id": 4902}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 31, "x": 174, "type": "mousemove", "message_id": 4904}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 31, "x": 175, "type": "mousemove", "message_id": 4905}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 31, "x": 177, "type": "mouseover", "message_id": 4906}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 31, "x": 177, "type": "mouseover", "message_id": 4907}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 31, "x": 177, "type": "mousemove", "message_id": 4908}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 32, "x": 181, "type": "mousemove", "message_id": 4909}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 33, "x": 184, "type": "mousemove", "message_id": 4910}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 34, "x": 187, "type": "mousemove", "message_id": 4911}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 35, "x": 189, "type": "mousemove", "message_id": 4912}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 35, "x": 190, "type": "mouseover", "message_id": 4913}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 35, "x": 190, "type": "mouseover", "message_id": 4914}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 35, "x": 190, "type": "mousemove", "message_id": 4915}
+{"sender": 3699, "msg_type": "MouseEvent", "y": 36, "x": 191, "type": "mousemove", "message_id": 4916}
diff --git a/recordings/test_view_hotkeys.replay b/recordings/test_view_hotkeys.replay
new file mode 100644
index 0000000000..edfc781609
--- /dev/null
+++ b/recordings/test_view_hotkeys.replay
@@ -0,0 +1,294 @@
+{"panX": 44.42938840723201, "panY": 53.2877486543979, "scale": 1.1207650273224041, "sender": 3913, "msg_type": "ViewPort", "message_id": 0}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 56, "x": 186, "type": "mousemove", "message_id": 18}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 57, "x": 186, "type": "mousemove", "message_id": 19}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 61, "x": 189, "type": "mouseover", "message_id": 20}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 61, "x": 189, "type": "mouseover", "message_id": 21}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 61, "x": 189, "type": "mousemove", "message_id": 22}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 65, "x": 192, "type": "mousemove", "message_id": 23}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 72, "x": 197, "type": "mousemove", "message_id": 24}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 80, "x": 205, "type": "mousemove", "message_id": 25}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 89, "x": 214, "type": "mousemove", "message_id": 26}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 98, "x": 222, "type": "mousemove", "message_id": 27}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 106, "x": 228, "type": "mousemove", "message_id": 28}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 113, "x": 233, "type": "mousemove", "message_id": 29}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 119, "x": 237, "type": "mousemove", "message_id": 30}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 125, "x": 239, "type": "mousemove", "message_id": 31}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 131, "x": 242, "type": "mousemove", "message_id": 32}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 136, "x": 244, "type": "mouseover", "message_id": 33}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 136, "x": 244, "type": "mouseover", "message_id": 34}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 136, "x": 244, "type": "mousemove", "message_id": 35}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 141, "x": 247, "type": "mouseover", "message_id": 36}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 141, "x": 247, "type": "mouseover", "message_id": 37}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 141, "x": 247, "type": "mousemove", "message_id": 38}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 146, "x": 249, "type": "mouseover", "message_id": 39}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 146, "x": 249, "type": "mouseover", "message_id": 40}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 146, "x": 249, "type": "mousemove", "message_id": 41}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 151, "x": 251, "type": "mousemove", "message_id": 42}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 155, "x": 253, "type": "mousemove", "message_id": 43}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 160, "x": 254, "type": "mouseover", "message_id": 44}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 160, "x": 254, "type": "mouseover", "message_id": 45}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 160, "x": 254, "type": "mousemove", "message_id": 46}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 164, "x": 255, "type": "mousemove", "message_id": 47}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 168, "x": 255, "type": "mousemove", "message_id": 48}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 171, "x": 255, "type": "mousemove", "message_id": 49}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 173, "x": 255, "type": "mousemove", "message_id": 50}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 176, "x": 255, "type": "mousemove", "message_id": 51}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 177, "x": 255, "type": "mousemove", "message_id": 52}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 179, "x": 255, "type": "mousemove", "message_id": 53}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 180, "x": 255, "type": "mousemove", "message_id": 54}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 181, "x": 254, "type": "mousemove", "message_id": 55}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 181, "x": 254, "type": "mousemove", "message_id": 56}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 182, "x": 254, "type": "mousemove", "message_id": 57}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 182, "x": 254, "type": "mousemove", "message_id": 58}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 182, "x": 254, "type": "mousemove", "message_id": 59}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 182, "x": 254, "type": "mousedown", "message_id": 60}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 182, "x": 254, "type": "mouseup", "message_id": 61}
+{"sender": 3913, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 62, "altKey": false, "metaKey": false, "key": "d", "ctrlKey": false, "type": "keydown", "keyCode": 68}
+{"sender": 3913, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 63, "altKey": false, "metaKey": false, "key": "d", "ctrlKey": false, "type": "keydown", "keyCode": 68}
+{"sender": 3913, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 64, "altKey": false, "metaKey": false, "key": "p", "ctrlKey": false, "type": "keydown", "keyCode": 80}
+{"sender": 3913, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 65, "altKey": false, "metaKey": false, "key": "p", "ctrlKey": false, "type": "keydown", "keyCode": 80}
+{"sender": 3913, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 66, "altKey": false, "metaKey": false, "key": "b", "ctrlKey": false, "type": "keydown", "keyCode": 66}
+{"sender": 3913, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 67, "altKey": false, "metaKey": false, "key": "b", "ctrlKey": false, "type": "keydown", "keyCode": 66}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 187, "x": 258, "type": "mouseover", "message_id": 68}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 187, "x": 258, "type": "mouseover", "message_id": 69}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 187, "x": 258, "type": "mousemove", "message_id": 70}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 191, "x": 261, "type": "mousemove", "message_id": 71}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 197, "x": 265, "type": "mousemove", "message_id": 72}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 229, "x": 296, "type": "mousemove", "message_id": 75}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 206, "x": 273, "type": "mousemove", "message_id": 73}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 215, "x": 282, "type": "mousemove", "message_id": 74}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 240, "x": 306, "type": "mousemove", "message_id": 76}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 255, "x": 317, "type": "mousemove", "message_id": 77}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 268, "x": 324, "type": "mousemove", "message_id": 78}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 277, "x": 327, "type": "mousemove", "message_id": 79}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 286, "x": 331, "type": "mousemove", "message_id": 80}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 294, "x": 333, "type": "mousemove", "message_id": 81}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 306, "x": 336, "type": "mousemove", "message_id": 82}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 319, "x": 339, "type": "mousemove", "message_id": 83}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 332, "x": 342, "type": "mousemove", "message_id": 84}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 343, "x": 345, "type": "mousemove", "message_id": 85}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 350, "x": 345, "type": "mouseover", "message_id": 86}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 350, "x": 345, "type": "mouseover", "message_id": 87}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 358, "x": 346, "type": "mousemove", "message_id": 89}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 350, "x": 345, "type": "mousemove", "message_id": 88}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 365, "x": 347, "type": "mousemove", "message_id": 90}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 371, "x": 347, "type": "mousemove", "message_id": 91}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 376, "x": 348, "type": "mousemove", "message_id": 92}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 378, "x": 348, "type": "mousemove", "message_id": 93}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 380, "x": 348, "type": "mousemove", "message_id": 94}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 381, "x": 348, "type": "mousemove", "message_id": 95}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 381, "x": 348, "type": "mousemove", "message_id": 96}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 381, "x": 348, "type": "mousedown", "message_id": 97}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 380, "x": 347, "type": "mousemove", "message_id": 98}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 378, "x": 346, "type": "mousemove", "message_id": 99}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 373, "x": 344, "type": "mouseover", "message_id": 100}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 373, "x": 344, "type": "mouseover", "message_id": 101}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 365, "x": 341, "type": "mouseover", "message_id": 103}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 373, "x": 344, "type": "mousemove", "message_id": 102}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 365, "x": 341, "type": "mouseover", "message_id": 104}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 365, "x": 341, "type": "mousemove", "message_id": 105}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 354, "x": 337, "type": "mousemove", "message_id": 106}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 339, "x": 331, "type": "mousemove", "message_id": 107}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 320, "x": 325, "type": "mousemove", "message_id": 108}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 299, "x": 318, "type": "mousemove", "message_id": 109}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 280, "x": 312, "type": "mousemove", "message_id": 110}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 265, "x": 308, "type": "mousemove", "message_id": 111}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 255, "x": 306, "type": "mousemove", "message_id": 112}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 250, "x": 305, "type": "mouseover", "message_id": 113}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 250, "x": 305, "type": "mouseover", "message_id": 114}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 246, "x": 304, "type": "mousemove", "message_id": 116}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 250, "x": 305, "type": "mousemove", "message_id": 115}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 244, "x": 304, "type": "mousemove", "message_id": 117}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 243, "x": 303, "type": "mousemove", "message_id": 118}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 242, "x": 303, "type": "mousemove", "message_id": 119}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 242, "x": 303, "type": "mousemove", "message_id": 120}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 242, "x": 303, "type": "mousemove", "message_id": 121}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 242, "x": 303, "type": "mouseup", "message_id": 122}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 243, "x": 303, "type": "mousemove", "message_id": 123}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 244, "x": 303, "type": "mousemove", "message_id": 124}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 246, "x": 303, "type": "mousemove", "message_id": 125}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 248, "x": 303, "type": "mousemove", "message_id": 126}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 251, "x": 303, "type": "mousemove", "message_id": 127}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 254, "x": 303, "type": "mousemove", "message_id": 128}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 259, "x": 303, "type": "mousemove", "message_id": 129}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 265, "x": 302, "type": "mousemove", "message_id": 130}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 272, "x": 302, "type": "mousemove", "message_id": 131}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 280, "x": 301, "type": "mousemove", "message_id": 132}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 287, "x": 301, "type": "mousemove", "message_id": 133}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 293, "x": 300, "type": "mousemove", "message_id": 134}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 298, "x": 299, "type": "mousemove", "message_id": 135}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 302, "x": 299, "type": "mousemove", "message_id": 136}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 305, "x": 299, "type": "mousemove", "message_id": 137}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 308, "x": 299, "type": "mousemove", "message_id": 138}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 310, "x": 299, "type": "mousemove", "message_id": 139}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 311, "x": 299, "type": "mousemove", "message_id": 140}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 312, "x": 299, "type": "mousemove", "message_id": 141}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 312, "x": 299, "type": "mousemove", "message_id": 142}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 143}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 313, "x": 299, "type": "mousemove", "message_id": 144}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": -3, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 145}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 146}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -8, "delta": -8, "type": "wheel", "message_id": 147}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 148}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 149}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 150}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": 0, "delta": 1, "type": "wheel", "message_id": 151}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": 0, "delta": 2, "type": "wheel", "message_id": 152}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 11, "delta": 11, "type": "wheel", "message_id": 153}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 14, "delta": 14, "type": "wheel", "message_id": 154}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 20, "delta": 20, "type": "wheel", "message_id": 156}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 313, "x": 299, "type": "mousemove", "message_id": 155}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 313, "x": 299, "type": "mousemove", "message_id": 157}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 11, "delta": 11, "type": "wheel", "message_id": 158}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 11, "delta": 11, "type": "wheel", "message_id": 159}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 7, "delta": 7, "type": "wheel", "message_id": 160}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 12, "delta": 12, "type": "wheel", "message_id": 161}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 9, "delta": 9, "type": "wheel", "message_id": 162}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 13, "delta": 13, "type": "wheel", "message_id": 163}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 164}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 165}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 166}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 167}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 168}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 169}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 170}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 171}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 172}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 173}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 174}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 175}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 176}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 177}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 178}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 179}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 180}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 181}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 182}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 183}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 184}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -2, "delta": -2, "type": "wheel", "message_id": 185}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 186}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": -2, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 187}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 188}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 189}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 190}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 191}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 192}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 193}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 194}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 195}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 196}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 197}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 4, "delta": 4, "type": "wheel", "message_id": 198}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 199}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 200}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 3, "delta": 3, "type": "wheel", "message_id": 201}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 202}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 203}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 1, "delta": 1, "type": "wheel", "message_id": 204}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": 2, "delta": 2, "type": "wheel", "message_id": 205}
+{"sender": 3913, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 206, "altKey": false, "metaKey": false, "key": "i", "ctrlKey": false, "type": "keydown", "keyCode": 73}
+{"sender": 3913, "msg_type": "KeyEvent", "shiftKey": false, "message_id": 207, "altKey": false, "metaKey": false, "key": "i", "ctrlKey": false, "type": "keydown", "keyCode": 73}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 208}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 209}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 210}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 211}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 212}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -9, "delta": -9, "type": "wheel", "message_id": 213}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -8, "delta": -8, "type": "wheel", "message_id": 214}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -8, "delta": -8, "type": "wheel", "message_id": 215}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -5, "delta": -5, "type": "wheel", "message_id": 216}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -11, "delta": -11, "type": "wheel", "message_id": 217}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 218}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -7, "delta": -7, "type": "wheel", "message_id": 219}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -6, "delta": -6, "type": "wheel", "message_id": 220}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 221}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -4, "delta": -4, "type": "wheel", "message_id": 222}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 223}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 224}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": 0, "deltaY": -3, "delta": -3, "type": "wheel", "message_id": 225}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 226}
+{"originalEvent": {"metaKey": false}, "sender": 3913, "msg_type": "MouseWheelEvent", "deltaX": -1, "deltaY": -1, "delta": -1, "type": "wheel", "message_id": 227}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 310, "x": 299, "type": "mousemove", "message_id": 229}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 311, "x": 299, "type": "mousemove", "message_id": 228}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 306, "x": 299, "type": "mousemove", "message_id": 230}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 303, "x": 299, "type": "mousemove", "message_id": 231}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 299, "x": 299, "type": "mousemove", "message_id": 232}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 292, "x": 299, "type": "mousemove", "message_id": 233}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 286, "x": 298, "type": "mousemove", "message_id": 234}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 279, "x": 298, "type": "mousemove", "message_id": 235}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 269, "x": 297, "type": "mousemove", "message_id": 236}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 261, "x": 296, "type": "mousemove", "message_id": 237}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 250, "x": 294, "type": "mouseover", "message_id": 238}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 250, "x": 294, "type": "mouseover", "message_id": 239}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 250, "x": 294, "type": "mousemove", "message_id": 240}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 238, "x": 292, "type": "mousemove", "message_id": 241}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 226, "x": 290, "type": "mousemove", "message_id": 242}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 218, "x": 289, "type": "mouseover", "message_id": 243}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 218, "x": 289, "type": "mouseover", "message_id": 244}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 218, "x": 289, "type": "mousemove", "message_id": 245}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 206, "x": 286, "type": "mouseover", "message_id": 246}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 206, "x": 286, "type": "mouseover", "message_id": 247}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 206, "x": 286, "type": "mousemove", "message_id": 248}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 195, "x": 282, "type": "mousemove", "message_id": 249}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 185, "x": 279, "type": "mousemove", "message_id": 250}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 176, "x": 276, "type": "mousemove", "message_id": 251}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 170, "x": 274, "type": "mousemove", "message_id": 252}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 162, "x": 269, "type": "mousemove", "message_id": 253}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 153, "x": 265, "type": "mousemove", "message_id": 254}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 144, "x": 259, "type": "mousemove", "message_id": 255}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 135, "x": 253, "type": "mousemove", "message_id": 256}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 130, "x": 248, "type": "mousemove", "message_id": 257}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 123, "x": 244, "type": "mousemove", "message_id": 258}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 118, "x": 240, "type": "mousemove", "message_id": 259}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 113, "x": 237, "type": "mousemove", "message_id": 260}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 109, "x": 235, "type": "mousemove", "message_id": 261}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 106, "x": 234, "type": "mouseover", "message_id": 263}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 106, "x": 234, "type": "mouseover", "message_id": 262}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 106, "x": 234, "type": "mousemove", "message_id": 264}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 102, "x": 231, "type": "mouseover", "message_id": 265}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 102, "x": 231, "type": "mouseover", "message_id": 266}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 102, "x": 231, "type": "mousemove", "message_id": 267}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 98, "x": 228, "type": "mousemove", "message_id": 268}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 94, "x": 224, "type": "mousemove", "message_id": 269}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 89, "x": 220, "type": "mousemove", "message_id": 270}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 86, "x": 217, "type": "mousemove", "message_id": 271}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 82, "x": 214, "type": "mousemove", "message_id": 272}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 79, "x": 211, "type": "mousemove", "message_id": 273}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 77, "x": 209, "type": "mousemove", "message_id": 274}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 75, "x": 208, "type": "mouseover", "message_id": 275}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 75, "x": 208, "type": "mouseover", "message_id": 276}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 75, "x": 208, "type": "mousemove", "message_id": 277}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 75, "x": 207, "type": "mousemove", "message_id": 278}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 75, "x": 207, "type": "mousemove", "message_id": 279}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 74, "x": 206, "type": "mousemove", "message_id": 280}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 73, "x": 205, "type": "mousemove", "message_id": 281}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 72, "x": 203, "type": "mouseover", "message_id": 282}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 72, "x": 203, "type": "mouseover", "message_id": 283}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 72, "x": 203, "type": "mousemove", "message_id": 284}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 70, "x": 202, "type": "mouseover", "message_id": 285}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 70, "x": 202, "type": "mouseover", "message_id": 286}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 70, "x": 202, "type": "mousemove", "message_id": 287}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 69, "x": 200, "type": "mouseover", "message_id": 288}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 69, "x": 200, "type": "mouseover", "message_id": 289}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 69, "x": 200, "type": "mousemove", "message_id": 290}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 68, "x": 199, "type": "mouseover", "message_id": 291}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 68, "x": 199, "type": "mouseover", "message_id": 292}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 68, "x": 199, "type": "mousemove", "message_id": 293}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 67, "x": 199, "type": "mousemove", "message_id": 294}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 65, "x": 198, "type": "mousemove", "message_id": 295}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 64, "x": 198, "type": "mousemove", "message_id": 296}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 63, "x": 197, "type": "mousemove", "message_id": 297}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 61, "x": 196, "type": "mousemove", "message_id": 298}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 59, "x": 195, "type": "mousemove", "message_id": 299}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 58, "x": 194, "type": "mousemove", "message_id": 300}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 57, "x": 193, "type": "mousemove", "message_id": 301}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 56, "x": 193, "type": "mousemove", "message_id": 304}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 57, "x": 193, "type": "mousemove", "message_id": 302}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 56, "x": 193, "type": "mousemove", "message_id": 303}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 56, "x": 193, "type": "mousemove", "message_id": 306}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 56, "x": 193, "type": "mousemove", "message_id": 305}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 56, "x": 193, "type": "mousemove", "message_id": 307}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 55, "x": 193, "type": "mousemove", "message_id": 308}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 55, "x": 193, "type": "mousedown", "message_id": 309}
+{"sender": 3913, "msg_type": "MouseEvent", "y": 55, "x": 193, "type": "mouseup", "message_id": 310}
diff --git a/requirements/requirements.in b/requirements/requirements.in
index 9711c1e28e..63488af939 100644
--- a/requirements/requirements.in
+++ b/requirements/requirements.in
@@ -60,3 +60,4 @@ uwsgitop==0.10.0
xmltodict==0.11.0
pip==9.0.1
setuptools==36.0.1
+dpath==1.4.0
diff --git a/tools/test/test_network_ui.sh b/tools/test/test_network_ui.sh
new file mode 100755
index 0000000000..f67bfa1c9e
--- /dev/null
+++ b/tools/test/test_network_ui.sh
@@ -0,0 +1,20 @@
+#!/bin/bash -x
+TS="0.01"
+./manage.py ui_test --verbose --time-scale 0.1
+./manage.py replay_recording 143 recordings/test_create_two_switches.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_edit_labels2.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_undo_redo.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_undo_redo_control_mouse_wheel.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_deploy_destroy.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_undo_redo_create_destroy.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_multiple_viewers.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_view_hotkeys.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_recording.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_mouse.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_rack.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_link_unconnected.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_touches.replay --time-scale ${TS} --delete-topology-at-start
+./manage.py replay_recording 143 recordings/test_export.replay --delete-topology-at-start --time-scale 0.1
+./manage.py replay_recording 143 recordings/test_mouse_exit_enter.replay --delete-topology-at-start --time-scale ${TS}
+sleep 1
+istanbul report --root coverage --dir out text text-summary html