{"version":3,"sources":["webpack:///./node_modules/zrender/lib/core/util.js","webpack:///./node_modules/zrender/lib/core/Transformable.js","webpack:///./node_modules/zrender/lib/contain/windingLine.js","webpack:///./node_modules/zrender/lib/core/LRU.js","webpack:///./node_modules/zrender/lib/core/bbox.js","webpack:///./node_modules/zrender/lib/contain/util.js","webpack:///./node_modules/zrender/lib/core/env.js","webpack:///./node_modules/zrender/lib/core/BoundingRect.js","webpack:///./node_modules/zrender/lib/core/curve.js","webpack:///./node_modules/zrender/lib/core/timsort.js","webpack:///./node_modules/zrender/lib/core/fourPointsTransform.js","webpack:///./node_modules/zrender/lib/core/dom.js","webpack:///./node_modules/zrender/lib/core/matrix.js","webpack:///./node_modules/zrender/lib/contain/text.js","webpack:///./node_modules/zrender/lib/contain/polygon.js","webpack:///./node_modules/zrender/lib/contain/line.js","webpack:///./node_modules/zrender/lib/contain/cubic.js","webpack:///./node_modules/zrender/lib/contain/quadratic.js","webpack:///./node_modules/zrender/lib/contain/arc.js","webpack:///./node_modules/zrender/lib/contain/path.js","webpack:///./node_modules/zrender/lib/core/vector.js","webpack:///./node_modules/zrender/lib/core/Point.js","webpack:///./node_modules/zrender/lib/core/event.js","webpack:///./node_modules/zrender/lib/core/OrientedBoundingRect.js","webpack:///./node_modules/zrender/lib/core/GestureMgr.js","webpack:///./node_modules/zrender/lib/core/WeakMap.js","webpack:///./node_modules/zrender/lib/config.js","webpack:///./node_modules/zrender/lib/core/Eventful.js","webpack:///./node_modules/zrender/lib/core/PathProxy.js"],"names":["BUILTIN_OBJECT","TYPED_ARRAY","objToString","Object","prototype","toString","arrayProto","Array","nativeForEach","forEach","nativeFilter","filter","nativeSlice","slice","nativeMap","map","ctorFunction","constructor","protoFunction","methods","$override","name","fn","idStart","guid","logError","args","_i","arguments","length","console","error","apply","clone","source","result","typeStr","call","isPrimitive","i","len","Ctor","from","isDom","key","hasOwnProperty","merge","target","overwrite","isObject","targetProp","sourceProp","isArray","isBuiltInObject","extend","assign","defaults","overlay","keysArr","keys","createCanvas","indexOf","array","value","inherits","clazz","baseClazz","clazzPrototype","F","prop","superClass","mixin","override","getOwnPropertyNames","keyList","isArrayLike","data","each","arr","cb","context","push","reduce","memo","obj","document","createElement","bind","isFunction","func","concat","curry","this","isString","isStringSafe","isNumber","type","isTypedArray","nodeType","ownerDocument","isGradientObject","colorStops","isPatternObject","image","eqNaN","retrieve","retrieve2","value0","value1","retrieve3","value2","normalizeCssArray","val","assert","condition","message","Error","trim","str","replace","primitiveKey","setAsPrimitive","HashMap","isArr","thisMap","visit","set","get","removeKey","createHashMap","createObject","proto","properties","create","StyleCtor","hasOwn","own","noop","mIdentity","matrix","EPSILON","isNotAroundZero","scaleTmp","tmpTransform","originTransform","abs","Math","Transformable","setPosition","x","y","setScale","scaleX","scaleY","setOrigin","originX","originY","needLocalTransform","rotation","updateTransform","parent","parentHasTransform","transform","m","getLocalTransform","_resolveGlobalScaleRatio","globalScaleRatio","getGlobalScale","relX","relY","sx","sy","invTransform","getComputedTransform","transformNode","ancestors","pop","setLocalTransform","sqrt","atan2","PI","decomposeTransform","ox","oy","out","transformCoordToLocal","v2","vector","transformCoordToGlobal","getLineScale","initDefaultProps","windingLine","x0","y0","x1","y1","t","dir","x_","Infinity","Entry","LinkedList","_len","insert","entry","insertEntry","head","tail","next","prev","remove","clear","LRU","maxSize","_list","_maxSize","_map","put","list","removed","_lastRemovedEntry","leastUsedEntry","mathMin","min","mathMax","max","mathSin","sin","mathCos","cos","PI2","start","vec2","end","extremity","fromPoints","points","p","left","right","top","bottom","fromLine","xDim","yDim","fromCubic","x2","y2","x3","y3","cubicExtrema","curve","cubicAt","n","fromQuadratic","quadraticExtremum","quadraticAt","tx","ty","fromArc","rx","ry","startAngle","endAngle","anticlockwise","vec2Min","vec2Max","diff","tmp","angle","normalizeRadian","Browser","firefox","ie","edge","newEdge","weChat","env","browser","node","wxa","worker","canvasSupported","svgSupported","touchEventsSupported","pointerEventsSupported","domSupported","transformSupported","transform3dSupported","wx","getSystemInfoSync","self","navigator","ua","match","test","version","split","getContext","SVGRect","window","style","documentElement","WebKitCSSMatrix","detect","userAgent","lt","Point","rb","lb","rt","minTv","maxTv","BoundingRect","width","height","isFinite","union","other","applyTransform","calculateTransform","b","a","intersect","mtv","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","overlap","dMin","dMax","d0","d1","d2","d3","dx","dy","copy","contain","plain","isZero","rect","maxX","maxY","mathPow","pow","mathSqrt","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","v2Create","_v1","_v2","isAroundZero","p0","p1","p2","p3","onet","cubicDerivativeAt","cubicRootAt","roots","c","d","A","B","C","t1","disc","K","t2","discSqrt","Y1","Y2","T","theta","acos","ASqrt","t3","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","interval","_t","v2DistSquare","cubicLength","iteration","px","py","step","quadraticDerivativeAt","quadraticRootAt","divider","quadraticSubdivide","quadraticProjectPoint","quadraticLength","DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","makeAscendingRun","lo","hi","compare","runHi","reverseRun","binaryInsertionSort","mid","pivot","gallopLeft","hint","lastOffset","maxOffset","offset","gallopRight","TimSort","runStart","runLength","minGallop","stackSize","mergeAt","start1","length1","start2","length2","k","cursor1","cursor2","dest","count1","count2","exit","_minGallop","mergeLow","customCursor","customDest","mergeHigh","mergeRuns","forceMergeRuns","pushRun","_runStart","_runLength","sort","remaining","ts","minRun","r","minRunLength","force","LN2","log","determinant","rows","rank","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","round","subRowMask","subRowStart","sum","j","colLocalIdx","colTag","buildTransformer","src","mA","det","vh","srcPointX","srcPointY","pk","EVENT_SAVED_PROP","_calcOut","transformLocalCoord","elFrom","elTarget","inX","inY","transformCoordWithViewport","el","inverse","getBoundingClientRect","isCanvasEl","saved","transformer","markers","transformerName","oldSrcCoords","srcCoords","destCoords","oldCoordTheSame","ii","offsetLeft","offsetTop","preparePointerTransformer","propLR","propTB","marker","stl","idxLR","idxTB","cssText","join","appendChild","prepareCoordMarkers","nodeName","toUpperCase","identity","mul","m1","m2","out0","out1","out2","out3","out4","out5","translate","v","rotate","rad","aa","ac","atx","ab","ad","aty","st","ct","scale","vx","vy","invert","_ctx","_cachedFont","textWidthCache","DEFAULT_FONT","measureText","text","font","getWidth","cacheOfFont","innerGetBoundingRect","textAlign","textBaseline","getLineHeight","adjustTextX","adjustTextY","getBoundingRect","textLines","uniondRect","verticalAlign","parsePercent","maxValue","lastIndexOf","parseFloat","calculateTextPosition","opts","textPosition","position","distance","halfHeight","textVerticalAlign","align","isAroundEqual","w","containStroke","lineWidth","_l","_a","cx","cy","CMD","PathProxy","windingCubic","nRoots","nExtrema","y0_","y1_","unit","windingQuadratic","y_","windingArc","dTheta","tmp_1","containPath","path","isStroke","xi","yi","cmd","isFirst","M","L","line","cubic","Q","quadratic","_x","arc","R","Z","pathProxy","add","v1","scaleAndAdd","sub","lenSquare","s","normalize","dist","distSquare","lerp","equal","scalar","dot","distanceSquare","negate","toArray","fromArray","input","isDomLevel2","addEventListener","MOUSE_EVENT_REG","clientToLocal","e","calculate","calculateZrXY","layerX","offsetX","zrX","zrY","layerY","offsetY","ex","clientX","ey","clientY","box","getNativeEvent","event","normalizeEvent","eventType","touch","targetTouches","changedTouches","wheelDelta","rawWheelDelta","deltaX","deltaY","getWheelDeltaMayPolyfill","zrDelta","detail","button","which","undefined","handler","opt","attachEvent","removeEventListener","detachEvent","stop","preventDefault","stopPropagation","cancelBubble","returnValue","isMiddleOrRightButtonOnMouseUpDown","extent","extent2","OrientedBoundingRect","_corners","_axes","_origin","fromBoundingRect","corners","axes","overlapped","noMtv","_intersectCheckOneSide","axis","_getProjMinMaxOnAxis","dist0","dist1","dim","origin","proj","proj_1","GestureMgr","_track","recognize","root","_doTrack","_recognize","touches","trackItem","pos","eventUtil","eventName","recognizers","gestureInfo","pointPair","pinch","tracks","trackLen","pinchEnd","pinchPre","pinchScale","pinchCenter","pinchX","pinchY","wmUniqueIndex","random","WeakMap","_id","_guard","defineProperty","enumerable","configurable","has","TypeError","dpr","devicePixelRatio","screen","deviceXDPI","logicalXDPI","DARK_MODE_THRESHOLD","DARK_LABEL_COLOR","LIGHT_LABEL_COLOR","LIGHTER_LABEL_COLOR","Eventful","eventProcessors","_$eventProcessor","on","query","_$handlers","_h","eventProcessor","normalizeQuery","h","wrap","ctx","callAtLast","zrEventfulCallAtLast","lastIndex","lastWrap","splice","isSilent","off","newList","l","trigger","argLen","hItem","afterTrigger","triggerWithContext","tmpOutX","tmpOutY","min2","max2","mathAbs","hasTypedArray","Float32Array","tmpAngles","modPI2","radian","normalizeArcAngles","angles","newStartAngle","delta","newEndAngle","notSaveData","_version","_xi","_yi","_x0","_y0","_saveData","increaseVersion","getVersion","segmentIgnoreThreshold","_ux","_uy","setDPR","setContext","beginPath","reset","_lineDash","_dashOffset","_pathSegLen","_pathLen","moveTo","addData","lineTo","exceedUnit","_needsDash","_dashedLineTo","bezierCurveTo","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","arcTo","radius","closePath","fill","toStatic","stroke","setLineDash","lineDash","_dashIdx","lineDashSum","_dashSum","setLineDashOffset","setData","appendPath","appendSize","appendPathData","f","g","_expandData","newData","dash","idx","dashSum","nDash","bezierLen","tmpLen","Number","MAX_VALUE","_calculateLength","ux","uy","pathSegLen","pathTotalLen","segCount","rebuildPath","percent","displayedLength","drawPart","accumLength","psi","isEllipse","breakBuild","ellipse","d_1"],"mappings":"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","file":"vendors~app~ad85ae96.js","sourcesContent":["var BUILTIN_OBJECT = {\n '[object Function]': true,\n '[object RegExp]': true,\n '[object Date]': true,\n '[object Error]': true,\n '[object CanvasGradient]': true,\n '[object CanvasPattern]': true,\n '[object Image]': true,\n '[object Canvas]': true\n};\nvar TYPED_ARRAY = {\n '[object Int8Array]': true,\n '[object Uint8Array]': true,\n '[object Uint8ClampedArray]': true,\n '[object Int16Array]': true,\n '[object Uint16Array]': true,\n '[object Int32Array]': true,\n '[object Uint32Array]': true,\n '[object Float32Array]': true,\n '[object Float64Array]': true\n};\nvar objToString = Object.prototype.toString;\nvar arrayProto = Array.prototype;\nvar nativeForEach = arrayProto.forEach;\nvar nativeFilter = arrayProto.filter;\nvar nativeSlice = arrayProto.slice;\nvar nativeMap = arrayProto.map;\nvar ctorFunction = function () { }.constructor;\nvar protoFunction = ctorFunction ? ctorFunction.prototype : null;\nvar methods = {};\nexport function $override(name, fn) {\n methods[name] = fn;\n}\nvar idStart = 0x0907;\nexport function guid() {\n return idStart++;\n}\nexport function logError() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (typeof console !== 'undefined') {\n console.error.apply(console, args);\n }\n}\nexport function clone(source) {\n if (source == null || typeof source !== 'object') {\n return source;\n }\n var result = source;\n var typeStr = objToString.call(source);\n if (typeStr === '[object Array]') {\n if (!isPrimitive(source)) {\n result = [];\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n }\n else if (TYPED_ARRAY[typeStr]) {\n if (!isPrimitive(source)) {\n var Ctor = source.constructor;\n if (Ctor.from) {\n result = Ctor.from(source);\n }\n else {\n result = new Ctor(source.length);\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n }\n }\n else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n result = {};\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n result[key] = clone(source[key]);\n }\n }\n }\n return result;\n}\nexport function merge(target, source, overwrite) {\n if (!isObject(source) || !isObject(target)) {\n return overwrite ? clone(source) : target;\n }\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n var targetProp = target[key];\n var sourceProp = source[key];\n if (isObject(sourceProp)\n && isObject(targetProp)\n && !isArray(sourceProp)\n && !isArray(targetProp)\n && !isDom(sourceProp)\n && !isDom(targetProp)\n && !isBuiltInObject(sourceProp)\n && !isBuiltInObject(targetProp)\n && !isPrimitive(sourceProp)\n && !isPrimitive(targetProp)) {\n merge(targetProp, sourceProp, overwrite);\n }\n else if (overwrite || !(key in target)) {\n target[key] = clone(source[key]);\n }\n }\n }\n return target;\n}\nexport function mergeAll(targetAndSources, overwrite) {\n var result = targetAndSources[0];\n for (var i = 1, len = targetAndSources.length; i < len; i++) {\n result = merge(result, targetAndSources[i], overwrite);\n }\n return result;\n}\nexport function extend(target, source) {\n if (Object.assign) {\n Object.assign(target, source);\n }\n else {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n}\nexport function defaults(target, source, overlay) {\n var keysArr = keys(source);\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n if ((overlay ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n return target;\n}\nexport var createCanvas = function () {\n return methods.createCanvas();\n};\nmethods.createCanvas = function () {\n return document.createElement('canvas');\n};\nexport function indexOf(array, value) {\n if (array) {\n if (array.indexOf) {\n return array.indexOf(value);\n }\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n }\n return -1;\n}\nexport function inherits(clazz, baseClazz) {\n var clazzPrototype = clazz.prototype;\n function F() { }\n F.prototype = baseClazz.prototype;\n clazz.prototype = new F();\n for (var prop in clazzPrototype) {\n if (clazzPrototype.hasOwnProperty(prop)) {\n clazz.prototype[prop] = clazzPrototype[prop];\n }\n }\n clazz.prototype.constructor = clazz;\n clazz.superClass = baseClazz;\n}\nexport function mixin(target, source, override) {\n target = 'prototype' in target ? target.prototype : target;\n source = 'prototype' in source ? source.prototype : source;\n if (Object.getOwnPropertyNames) {\n var keyList = Object.getOwnPropertyNames(source);\n for (var i = 0; i < keyList.length; i++) {\n var key = keyList[i];\n if (key !== 'constructor') {\n if ((override ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n }\n }\n else {\n defaults(target, source, override);\n }\n}\nexport function isArrayLike(data) {\n if (!data) {\n return false;\n }\n if (typeof data === 'string') {\n return false;\n }\n return typeof data.length === 'number';\n}\nexport function each(arr, cb, context) {\n if (!(arr && cb)) {\n return;\n }\n if (arr.forEach && arr.forEach === nativeForEach) {\n arr.forEach(cb, context);\n }\n else if (arr.length === +arr.length) {\n for (var i = 0, len = arr.length; i < len; i++) {\n cb.call(context, arr[i], i, arr);\n }\n }\n else {\n for (var key in arr) {\n if (arr.hasOwnProperty(key)) {\n cb.call(context, arr[key], key, arr);\n }\n }\n }\n}\nexport function map(arr, cb, context) {\n if (!arr) {\n return [];\n }\n if (!cb) {\n return slice(arr);\n }\n if (arr.map && arr.map === nativeMap) {\n return arr.map(cb, context);\n }\n else {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n result.push(cb.call(context, arr[i], i, arr));\n }\n return result;\n }\n}\nexport function reduce(arr, cb, memo, context) {\n if (!(arr && cb)) {\n return;\n }\n for (var i = 0, len = arr.length; i < len; i++) {\n memo = cb.call(context, memo, arr[i], i, arr);\n }\n return memo;\n}\nexport function filter(arr, cb, context) {\n if (!arr) {\n return [];\n }\n if (!cb) {\n return slice(arr);\n }\n if (arr.filter && arr.filter === nativeFilter) {\n return arr.filter(cb, context);\n }\n else {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n if (cb.call(context, arr[i], i, arr)) {\n result.push(arr[i]);\n }\n }\n return result;\n }\n}\nexport function find(arr, cb, context) {\n if (!(arr && cb)) {\n return;\n }\n for (var i = 0, len = arr.length; i < len; i++) {\n if (cb.call(context, arr[i], i, arr)) {\n return arr[i];\n }\n }\n}\nexport function keys(obj) {\n if (!obj) {\n return [];\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keyList = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n keyList.push(key);\n }\n }\n return keyList;\n}\nfunction bindPolyfill(func, context) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n return function () {\n return func.apply(context, args.concat(nativeSlice.call(arguments)));\n };\n}\nexport var bind = (protoFunction && isFunction(protoFunction.bind))\n ? protoFunction.call.bind(protoFunction.bind)\n : bindPolyfill;\nfunction curry(func) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return function () {\n return func.apply(this, args.concat(nativeSlice.call(arguments)));\n };\n}\nexport { curry };\nexport function isArray(value) {\n if (Array.isArray) {\n return Array.isArray(value);\n }\n return objToString.call(value) === '[object Array]';\n}\nexport function isFunction(value) {\n return typeof value === 'function';\n}\nexport function isString(value) {\n return typeof value === 'string';\n}\nexport function isStringSafe(value) {\n return objToString.call(value) === '[object String]';\n}\nexport function isNumber(value) {\n return typeof value === 'number';\n}\nexport function isObject(value) {\n var type = typeof value;\n return type === 'function' || (!!value && type === 'object');\n}\nexport function isBuiltInObject(value) {\n return !!BUILTIN_OBJECT[objToString.call(value)];\n}\nexport function isTypedArray(value) {\n return !!TYPED_ARRAY[objToString.call(value)];\n}\nexport function isDom(value) {\n return typeof value === 'object'\n && typeof value.nodeType === 'number'\n && typeof value.ownerDocument === 'object';\n}\nexport function isGradientObject(value) {\n return value.colorStops != null;\n}\nexport function isPatternObject(value) {\n return value.image != null;\n}\nexport function isRegExp(value) {\n return objToString.call(value) === '[object RegExp]';\n}\nexport function eqNaN(value) {\n return value !== value;\n}\nexport function retrieve() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n for (var i = 0, len = args.length; i < len; i++) {\n if (args[i] != null) {\n return args[i];\n }\n }\n}\nexport function retrieve2(value0, value1) {\n return value0 != null\n ? value0\n : value1;\n}\nexport function retrieve3(value0, value1, value2) {\n return value0 != null\n ? value0\n : value1 != null\n ? value1\n : value2;\n}\nexport function slice(arr) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return nativeSlice.apply(arr, args);\n}\nexport function normalizeCssArray(val) {\n if (typeof (val) === 'number') {\n return [val, val, val, val];\n }\n var len = val.length;\n if (len === 2) {\n return [val[0], val[1], val[0], val[1]];\n }\n else if (len === 3) {\n return [val[0], val[1], val[2], val[1]];\n }\n return val;\n}\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\nexport function trim(str) {\n if (str == null) {\n return null;\n }\n else if (typeof str.trim === 'function') {\n return str.trim();\n }\n else {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n}\nvar primitiveKey = '__ec_primitive__';\nexport function setAsPrimitive(obj) {\n obj[primitiveKey] = true;\n}\nexport function isPrimitive(obj) {\n return obj[primitiveKey];\n}\nvar HashMap = (function () {\n function HashMap(obj) {\n this.data = {};\n var isArr = isArray(obj);\n this.data = {};\n var thisMap = this;\n (obj instanceof HashMap)\n ? obj.each(visit)\n : (obj && each(obj, visit));\n function visit(value, key) {\n isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n }\n }\n HashMap.prototype.get = function (key) {\n return this.data.hasOwnProperty(key) ? this.data[key] : null;\n };\n HashMap.prototype.set = function (key, value) {\n return (this.data[key] = value);\n };\n HashMap.prototype.each = function (cb, context) {\n for (var key in this.data) {\n if (this.data.hasOwnProperty(key)) {\n cb.call(context, this.data[key], key);\n }\n }\n };\n HashMap.prototype.keys = function () {\n return keys(this.data);\n };\n HashMap.prototype.removeKey = function (key) {\n delete this.data[key];\n };\n return HashMap;\n}());\nexport { HashMap };\nexport function createHashMap(obj) {\n return new HashMap(obj);\n}\nexport function concatArray(a, b) {\n var newArray = new a.constructor(a.length + b.length);\n for (var i = 0; i < a.length; i++) {\n newArray[i] = a[i];\n }\n var offset = a.length;\n for (var i = 0; i < b.length; i++) {\n newArray[i + offset] = b[i];\n }\n return newArray;\n}\nexport function createObject(proto, properties) {\n var obj;\n if (Object.create) {\n obj = Object.create(proto);\n }\n else {\n var StyleCtor = function () { };\n StyleCtor.prototype = proto;\n obj = new StyleCtor();\n }\n if (properties) {\n extend(obj, properties);\n }\n return obj;\n}\nexport function hasOwn(own, prop) {\n return own.hasOwnProperty(prop);\n}\nexport function noop() { }\n","import * as matrix from './matrix';\nimport * as vector from './vector';\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\nvar scaleTmp = [];\nvar tmpTransform = [];\nvar originTransform = matrix.create();\nvar abs = Math.abs;\nvar Transformable = (function () {\n function Transformable() {\n }\n Transformable.prototype.setPosition = function (arr) {\n this.x = arr[0];\n this.y = arr[1];\n };\n Transformable.prototype.setScale = function (arr) {\n this.scaleX = arr[0];\n this.scaleY = arr[1];\n };\n Transformable.prototype.setOrigin = function (arr) {\n this.originX = arr[0];\n this.originY = arr[1];\n };\n Transformable.prototype.needLocalTransform = function () {\n return isNotAroundZero(this.rotation)\n || isNotAroundZero(this.x)\n || isNotAroundZero(this.y)\n || isNotAroundZero(this.scaleX - 1)\n || isNotAroundZero(this.scaleY - 1);\n };\n Transformable.prototype.updateTransform = function () {\n var parent = this.parent;\n var parentHasTransform = parent && parent.transform;\n var needLocalTransform = this.needLocalTransform();\n var m = this.transform;\n if (!(needLocalTransform || parentHasTransform)) {\n m && mIdentity(m);\n return;\n }\n m = m || matrix.create();\n if (needLocalTransform) {\n this.getLocalTransform(m);\n }\n else {\n mIdentity(m);\n }\n if (parentHasTransform) {\n if (needLocalTransform) {\n matrix.mul(m, parent.transform, m);\n }\n else {\n matrix.copy(m, parent.transform);\n }\n }\n this.transform = m;\n this._resolveGlobalScaleRatio(m);\n };\n Transformable.prototype._resolveGlobalScaleRatio = function (m) {\n var globalScaleRatio = this.globalScaleRatio;\n if (globalScaleRatio != null && globalScaleRatio !== 1) {\n this.getGlobalScale(scaleTmp);\n var relX = scaleTmp[0] < 0 ? -1 : 1;\n var relY = scaleTmp[1] < 0 ? -1 : 1;\n var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n m[0] *= sx;\n m[1] *= sx;\n m[2] *= sy;\n m[3] *= sy;\n }\n this.invTransform = this.invTransform || matrix.create();\n matrix.invert(this.invTransform, m);\n };\n Transformable.prototype.getLocalTransform = function (m) {\n return Transformable.getLocalTransform(this, m);\n };\n Transformable.prototype.getComputedTransform = function () {\n var transformNode = this;\n var ancestors = [];\n while (transformNode) {\n ancestors.push(transformNode);\n transformNode = transformNode.parent;\n }\n while (transformNode = ancestors.pop()) {\n transformNode.updateTransform();\n }\n return this.transform;\n };\n Transformable.prototype.setLocalTransform = function (m) {\n if (!m) {\n return;\n }\n var sx = m[0] * m[0] + m[1] * m[1];\n var sy = m[2] * m[2] + m[3] * m[3];\n if (isNotAroundZero(sx - 1)) {\n sx = Math.sqrt(sx);\n }\n if (isNotAroundZero(sy - 1)) {\n sy = Math.sqrt(sy);\n }\n if (m[0] < 0) {\n sx = -sx;\n }\n if (m[3] < 0) {\n sy = -sy;\n }\n this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\n if (sx < 0 && sy < 0) {\n this.rotation += Math.PI;\n sx = -sx;\n sy = -sy;\n }\n this.x = m[4];\n this.y = m[5];\n this.scaleX = sx;\n this.scaleY = sy;\n };\n Transformable.prototype.decomposeTransform = function () {\n if (!this.transform) {\n return;\n }\n var parent = this.parent;\n var m = this.transform;\n if (parent && parent.transform) {\n matrix.mul(tmpTransform, parent.invTransform, m);\n m = tmpTransform;\n }\n var ox = this.originX;\n var oy = this.originY;\n if (ox || oy) {\n originTransform[4] = ox;\n originTransform[5] = oy;\n matrix.mul(tmpTransform, m, originTransform);\n tmpTransform[4] -= ox;\n tmpTransform[5] -= oy;\n m = tmpTransform;\n }\n this.setLocalTransform(m);\n };\n Transformable.prototype.getGlobalScale = function (out) {\n var m = this.transform;\n out = out || [];\n if (!m) {\n out[0] = 1;\n out[1] = 1;\n return out;\n }\n out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n if (m[0] < 0) {\n out[0] = -out[0];\n }\n if (m[3] < 0) {\n out[1] = -out[1];\n }\n return out;\n };\n Transformable.prototype.transformCoordToLocal = function (x, y) {\n var v2 = [x, y];\n var invTransform = this.invTransform;\n if (invTransform) {\n vector.applyTransform(v2, v2, invTransform);\n }\n return v2;\n };\n Transformable.prototype.transformCoordToGlobal = function (x, y) {\n var v2 = [x, y];\n var transform = this.transform;\n if (transform) {\n vector.applyTransform(v2, v2, transform);\n }\n return v2;\n };\n Transformable.prototype.getLineScale = function () {\n var m = this.transform;\n return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10\n ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1]))\n : 1;\n };\n Transformable.getLocalTransform = function (target, m) {\n m = m || [];\n mIdentity(m);\n var ox = target.originX || 0;\n var oy = target.originY || 0;\n var sx = target.scaleX;\n var sy = target.scaleY;\n var rotation = target.rotation || 0;\n var x = target.x;\n var y = target.y;\n m[4] -= ox;\n m[5] -= oy;\n m[0] *= sx;\n m[1] *= sy;\n m[2] *= sx;\n m[3] *= sy;\n m[4] *= sx;\n m[5] *= sy;\n if (rotation) {\n matrix.rotate(m, m, rotation);\n }\n m[4] += ox;\n m[5] += oy;\n m[4] += x;\n m[5] += y;\n return m;\n };\n Transformable.initDefaultProps = (function () {\n var proto = Transformable.prototype;\n proto.x = 0;\n proto.y = 0;\n proto.scaleX = 1;\n proto.scaleY = 1;\n proto.originX = 0;\n proto.originY = 0;\n proto.rotation = 0;\n proto.globalScaleRatio = 1;\n })();\n return Transformable;\n}());\n;\nexport default Transformable;\n","export default function windingLine(x0, y0, x1, y1, x, y) {\n if ((y > y0 && y > y1) || (y < y0 && y < y1)) {\n return 0;\n }\n if (y1 === y0) {\n return 0;\n }\n var t = (y - y0) / (y1 - y0);\n var dir = y1 < y0 ? 1 : -1;\n if (t === 1 || t === 0) {\n dir = y1 < y0 ? 0.5 : -0.5;\n }\n var x_ = t * (x1 - x0) + x0;\n return x_ === x ? Infinity : x_ > x ? dir : 0;\n}\n","var Entry = (function () {\n function Entry(val) {\n this.value = val;\n }\n return Entry;\n}());\nexport { Entry };\nvar LinkedList = (function () {\n function LinkedList() {\n this._len = 0;\n }\n LinkedList.prototype.insert = function (val) {\n var entry = new Entry(val);\n this.insertEntry(entry);\n return entry;\n };\n LinkedList.prototype.insertEntry = function (entry) {\n if (!this.head) {\n this.head = this.tail = entry;\n }\n else {\n this.tail.next = entry;\n entry.prev = this.tail;\n entry.next = null;\n this.tail = entry;\n }\n this._len++;\n };\n LinkedList.prototype.remove = function (entry) {\n var prev = entry.prev;\n var next = entry.next;\n if (prev) {\n prev.next = next;\n }\n else {\n this.head = next;\n }\n if (next) {\n next.prev = prev;\n }\n else {\n this.tail = prev;\n }\n entry.next = entry.prev = null;\n this._len--;\n };\n LinkedList.prototype.len = function () {\n return this._len;\n };\n LinkedList.prototype.clear = function () {\n this.head = this.tail = null;\n this._len = 0;\n };\n return LinkedList;\n}());\nexport { LinkedList };\nvar LRU = (function () {\n function LRU(maxSize) {\n this._list = new LinkedList();\n this._maxSize = 10;\n this._map = {};\n this._maxSize = maxSize;\n }\n LRU.prototype.put = function (key, value) {\n var list = this._list;\n var map = this._map;\n var removed = null;\n if (map[key] == null) {\n var len = list.len();\n var entry = this._lastRemovedEntry;\n if (len >= this._maxSize && len > 0) {\n var leastUsedEntry = list.head;\n list.remove(leastUsedEntry);\n delete map[leastUsedEntry.key];\n removed = leastUsedEntry.value;\n this._lastRemovedEntry = leastUsedEntry;\n }\n if (entry) {\n entry.value = value;\n }\n else {\n entry = new Entry(value);\n }\n entry.key = key;\n list.insertEntry(entry);\n map[key] = entry;\n }\n return removed;\n };\n LRU.prototype.get = function (key) {\n var entry = this._map[key];\n var list = this._list;\n if (entry != null) {\n if (entry !== list.tail) {\n list.remove(entry);\n list.insertEntry(entry);\n }\n return entry.value;\n }\n };\n LRU.prototype.clear = function () {\n this._list.clear();\n this._map = {};\n };\n LRU.prototype.len = function () {\n return this._list.len();\n };\n return LRU;\n}());\nexport default LRU;\n","import * as vec2 from './vector';\nimport * as curve from './curve';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI2 = Math.PI * 2;\nvar start = vec2.create();\nvar end = vec2.create();\nvar extremity = vec2.create();\nexport function fromPoints(points, min, max) {\n if (points.length === 0) {\n return;\n }\n var p = points[0];\n var left = p[0];\n var right = p[0];\n var top = p[1];\n var bottom = p[1];\n for (var i = 1; i < points.length; i++) {\n p = points[i];\n left = mathMin(left, p[0]);\n right = mathMax(right, p[0]);\n top = mathMin(top, p[1]);\n bottom = mathMax(bottom, p[1]);\n }\n min[0] = left;\n min[1] = top;\n max[0] = right;\n max[1] = bottom;\n}\nexport function fromLine(x0, y0, x1, y1, min, max) {\n min[0] = mathMin(x0, x1);\n min[1] = mathMin(y0, y1);\n max[0] = mathMax(x0, x1);\n max[1] = mathMax(y0, y1);\n}\nvar xDim = [];\nvar yDim = [];\nexport function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n var cubicExtrema = curve.cubicExtrema;\n var cubicAt = curve.cubicAt;\n var n = cubicExtrema(x0, x1, x2, x3, xDim);\n min[0] = Infinity;\n min[1] = Infinity;\n max[0] = -Infinity;\n max[1] = -Infinity;\n for (var i = 0; i < n; i++) {\n var x = cubicAt(x0, x1, x2, x3, xDim[i]);\n min[0] = mathMin(x, min[0]);\n max[0] = mathMax(x, max[0]);\n }\n n = cubicExtrema(y0, y1, y2, y3, yDim);\n for (var i = 0; i < n; i++) {\n var y = cubicAt(y0, y1, y2, y3, yDim[i]);\n min[1] = mathMin(y, min[1]);\n max[1] = mathMax(y, max[1]);\n }\n min[0] = mathMin(x0, min[0]);\n max[0] = mathMax(x0, max[0]);\n min[0] = mathMin(x3, min[0]);\n max[0] = mathMax(x3, max[0]);\n min[1] = mathMin(y0, min[1]);\n max[1] = mathMax(y0, max[1]);\n min[1] = mathMin(y3, min[1]);\n max[1] = mathMax(y3, max[1]);\n}\nexport function fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n var quadraticExtremum = curve.quadraticExtremum;\n var quadraticAt = curve.quadraticAt;\n var tx = mathMax(mathMin(quadraticExtremum(x0, x1, x2), 1), 0);\n var ty = mathMax(mathMin(quadraticExtremum(y0, y1, y2), 1), 0);\n var x = quadraticAt(x0, x1, x2, tx);\n var y = quadraticAt(y0, y1, y2, ty);\n min[0] = mathMin(x0, x2, x);\n min[1] = mathMin(y0, y2, y);\n max[0] = mathMax(x0, x2, x);\n max[1] = mathMax(y0, y2, y);\n}\nexport function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max) {\n var vec2Min = vec2.min;\n var vec2Max = vec2.max;\n var diff = Math.abs(startAngle - endAngle);\n if (diff % PI2 < 1e-4 && diff > 1e-4) {\n min[0] = x - rx;\n min[1] = y - ry;\n max[0] = x + rx;\n max[1] = y + ry;\n return;\n }\n start[0] = mathCos(startAngle) * rx + x;\n start[1] = mathSin(startAngle) * ry + y;\n end[0] = mathCos(endAngle) * rx + x;\n end[1] = mathSin(endAngle) * ry + y;\n vec2Min(min, start, end);\n vec2Max(max, start, end);\n startAngle = startAngle % (PI2);\n if (startAngle < 0) {\n startAngle = startAngle + PI2;\n }\n endAngle = endAngle % (PI2);\n if (endAngle < 0) {\n endAngle = endAngle + PI2;\n }\n if (startAngle > endAngle && !anticlockwise) {\n endAngle += PI2;\n }\n else if (startAngle < endAngle && anticlockwise) {\n startAngle += PI2;\n }\n if (anticlockwise) {\n var tmp = endAngle;\n endAngle = startAngle;\n startAngle = tmp;\n }\n for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n if (angle > startAngle) {\n extremity[0] = mathCos(angle) * rx + x;\n extremity[1] = mathSin(angle) * ry + y;\n vec2Min(min, extremity, min);\n vec2Max(max, extremity, max);\n }\n }\n}\n","var PI2 = Math.PI * 2;\nexport function normalizeRadian(angle) {\n angle %= PI2;\n if (angle < 0) {\n angle += PI2;\n }\n return angle;\n}\n","var Browser = (function () {\n function Browser() {\n this.firefox = false;\n this.ie = false;\n this.edge = false;\n this.newEdge = false;\n this.weChat = false;\n }\n return Browser;\n}());\nvar Env = (function () {\n function Env() {\n this.browser = new Browser();\n this.node = false;\n this.wxa = false;\n this.worker = false;\n this.canvasSupported = false;\n this.svgSupported = false;\n this.touchEventsSupported = false;\n this.pointerEventsSupported = false;\n this.domSupported = false;\n this.transformSupported = false;\n this.transform3dSupported = false;\n }\n return Env;\n}());\nvar env = new Env();\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n env.wxa = true;\n env.canvasSupported = true;\n env.touchEventsSupported = true;\n}\nelse if (typeof document === 'undefined' && typeof self !== 'undefined') {\n env.worker = true;\n env.canvasSupported = true;\n}\nelse if (typeof navigator === 'undefined') {\n env.node = true;\n env.canvasSupported = true;\n env.svgSupported = true;\n}\nelse {\n detect(navigator.userAgent, env);\n}\nfunction detect(ua, env) {\n var browser = env.browser;\n var firefox = ua.match(/Firefox\\/([\\d.]+)/);\n var ie = ua.match(/MSIE\\s([\\d.]+)/)\n || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n var edge = ua.match(/Edge?\\/([\\d.]+)/);\n var weChat = (/micromessenger/i).test(ua);\n if (firefox) {\n browser.firefox = true;\n browser.version = firefox[1];\n }\n if (ie) {\n browser.ie = true;\n browser.version = ie[1];\n }\n if (edge) {\n browser.edge = true;\n browser.version = edge[1];\n browser.newEdge = +edge[1].split('.')[0] > 18;\n }\n if (weChat) {\n browser.weChat = true;\n }\n env.canvasSupported = !!document.createElement('canvas').getContext;\n env.svgSupported = typeof SVGRect !== 'undefined';\n env.touchEventsSupported = 'ontouchstart' in window && !browser.ie && !browser.edge;\n env.pointerEventsSupported = 'onpointerdown' in window\n && (browser.edge || (browser.ie && +browser.version >= 11));\n env.domSupported = typeof document !== 'undefined';\n var style = document.documentElement.style;\n env.transform3dSupported = ((browser.ie && 'transition' in style)\n || browser.edge\n || (('WebKitCSSMatrix' in window) && ('m11' in new WebKitCSSMatrix()))\n || 'MozPerspective' in style)\n && !('OTransition' in style);\n env.transformSupported = env.transform3dSupported\n || (browser.ie && +browser.version >= 9);\n}\nexport default env;\n","import * as matrix from './matrix';\nimport Point from './Point';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar lt = new Point();\nvar rb = new Point();\nvar lb = new Point();\nvar rt = new Point();\nvar minTv = new Point();\nvar maxTv = new Point();\nvar BoundingRect = (function () {\n function BoundingRect(x, y, width, height) {\n if (width < 0 && isFinite(width)) {\n x = x + width;\n width = -width;\n }\n if (height < 0 && isFinite(height)) {\n y = y + height;\n height = -height;\n }\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n BoundingRect.prototype.union = function (other) {\n var x = mathMin(other.x, this.x);\n var y = mathMin(other.y, this.y);\n if (isFinite(this.x) && isFinite(this.width)) {\n this.width = mathMax(other.x + other.width, this.x + this.width) - x;\n }\n else {\n this.width = other.width;\n }\n if (isFinite(this.y) && isFinite(this.height)) {\n this.height = mathMax(other.y + other.height, this.y + this.height) - y;\n }\n else {\n this.height = other.height;\n }\n this.x = x;\n this.y = y;\n };\n BoundingRect.prototype.applyTransform = function (m) {\n BoundingRect.applyTransform(this, this, m);\n };\n BoundingRect.prototype.calculateTransform = function (b) {\n var a = this;\n var sx = b.width / a.width;\n var sy = b.height / a.height;\n var m = matrix.create();\n matrix.translate(m, m, [-a.x, -a.y]);\n matrix.scale(m, m, [sx, sy]);\n matrix.translate(m, m, [b.x, b.y]);\n return m;\n };\n BoundingRect.prototype.intersect = function (b, mtv) {\n if (!b) {\n return false;\n }\n if (!(b instanceof BoundingRect)) {\n b = BoundingRect.create(b);\n }\n var a = this;\n var ax0 = a.x;\n var ax1 = a.x + a.width;\n var ay0 = a.y;\n var ay1 = a.y + a.height;\n var bx0 = b.x;\n var bx1 = b.x + b.width;\n var by0 = b.y;\n var by1 = b.y + b.height;\n var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\n if (mtv) {\n var dMin = Infinity;\n var dMax = 0;\n var d0 = Math.abs(ax1 - bx0);\n var d1 = Math.abs(bx1 - ax0);\n var d2 = Math.abs(ay1 - by0);\n var d3 = Math.abs(by1 - ay0);\n var dx = Math.min(d0, d1);\n var dy = Math.min(d2, d3);\n if (ax1 < bx0 || bx1 < ax0) {\n if (dx > dMax) {\n dMax = dx;\n if (d0 < d1) {\n Point.set(maxTv, -d0, 0);\n }\n else {\n Point.set(maxTv, d1, 0);\n }\n }\n }\n else {\n if (dx < dMin) {\n dMin = dx;\n if (d0 < d1) {\n Point.set(minTv, d0, 0);\n }\n else {\n Point.set(minTv, -d1, 0);\n }\n }\n }\n if (ay1 < by0 || by1 < ay0) {\n if (dy > dMax) {\n dMax = dy;\n if (d2 < d3) {\n Point.set(maxTv, 0, -d2);\n }\n else {\n Point.set(maxTv, 0, d3);\n }\n }\n }\n else {\n if (dx < dMin) {\n dMin = dx;\n if (d2 < d3) {\n Point.set(minTv, 0, d2);\n }\n else {\n Point.set(minTv, 0, -d3);\n }\n }\n }\n }\n if (mtv) {\n Point.copy(mtv, overlap ? minTv : maxTv);\n }\n return overlap;\n };\n BoundingRect.prototype.contain = function (x, y) {\n var rect = this;\n return x >= rect.x\n && x <= (rect.x + rect.width)\n && y >= rect.y\n && y <= (rect.y + rect.height);\n };\n BoundingRect.prototype.clone = function () {\n return new BoundingRect(this.x, this.y, this.width, this.height);\n };\n BoundingRect.prototype.copy = function (other) {\n BoundingRect.copy(this, other);\n };\n BoundingRect.prototype.plain = function () {\n return {\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n };\n };\n BoundingRect.prototype.isFinite = function () {\n return isFinite(this.x)\n && isFinite(this.y)\n && isFinite(this.width)\n && isFinite(this.height);\n };\n BoundingRect.prototype.isZero = function () {\n return this.width === 0 || this.height === 0;\n };\n BoundingRect.create = function (rect) {\n return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\n };\n BoundingRect.copy = function (target, source) {\n target.x = source.x;\n target.y = source.y;\n target.width = source.width;\n target.height = source.height;\n };\n BoundingRect.applyTransform = function (target, source, m) {\n if (!m) {\n if (target !== source) {\n BoundingRect.copy(target, source);\n }\n return;\n }\n if (m[1] < 1e-5 && m[1] > -1e-5 && m[2] < 1e-5 && m[2] > -1e-5) {\n var sx = m[0];\n var sy = m[3];\n var tx = m[4];\n var ty = m[5];\n target.x = source.x * sx + tx;\n target.y = source.y * sy + ty;\n target.width = source.width * sx;\n target.height = source.height * sy;\n if (target.width < 0) {\n target.x += target.width;\n target.width = -target.width;\n }\n if (target.height < 0) {\n target.y += target.height;\n target.height = -target.height;\n }\n return;\n }\n lt.x = lb.x = source.x;\n lt.y = rt.y = source.y;\n rb.x = rt.x = source.x + source.width;\n rb.y = lb.y = source.y + source.height;\n lt.transform(m);\n rt.transform(m);\n rb.transform(m);\n lb.transform(m);\n target.x = mathMin(lt.x, rb.x, lb.x, rt.x);\n target.y = mathMin(lt.y, rb.y, lb.y, rt.y);\n var maxX = mathMax(lt.x, rb.x, lb.x, rt.x);\n var maxY = mathMax(lt.y, rb.y, lb.y, rt.y);\n target.width = maxX - target.x;\n target.height = maxY - target.y;\n };\n return BoundingRect;\n}());\nexport default BoundingRect;\n","import { create as v2Create, distSquare as v2DistSquare } from './vector';\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3;\nvar _v0 = v2Create();\nvar _v1 = v2Create();\nvar _v2 = v2Create();\nfunction isAroundZero(val) {\n return val > -EPSILON && val < EPSILON;\n}\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\nexport function cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return onet * onet * (onet * p0 + 3 * t * p1)\n + t * t * (t * p3 + 3 * onet * p2);\n}\nexport function cubicDerivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet\n + (p3 - p2) * t * t);\n}\nexport function cubicRootAt(p0, p1, p2, p3, val, roots) {\n var a = p3 + 3 * (p1 - p2) - p0;\n var b = 3 * (p2 - p1 * 2 + p0);\n var c = 3 * (p1 - p0);\n var d = p0 - val;\n var A = b * b - 3 * a * c;\n var B = b * c - 9 * a * d;\n var C = c * c - 3 * b * d;\n var n = 0;\n if (isAroundZero(A) && isAroundZero(B)) {\n if (isAroundZero(b)) {\n roots[0] = 0;\n }\n else {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n }\n else {\n var disc = B * B - 4 * A * C;\n if (isAroundZero(disc)) {\n var K = B / A;\n var t1 = -b / a + K;\n var t2 = -K / 2;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n if (Y1 < 0) {\n Y1 = -mathPow(-Y1, ONE_THIRD);\n }\n else {\n Y1 = mathPow(Y1, ONE_THIRD);\n }\n if (Y2 < 0) {\n Y2 = -mathPow(-Y2, ONE_THIRD);\n }\n else {\n Y2 = mathPow(Y2, ONE_THIRD);\n }\n var t1 = (-b - (Y1 + Y2)) / (3 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n else {\n var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n var theta = Math.acos(T) / 3;\n var ASqrt = mathSqrt(A);\n var tmp = Math.cos(theta);\n var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n if (t3 >= 0 && t3 <= 1) {\n roots[n++] = t3;\n }\n }\n }\n return n;\n}\nexport function cubicExtrema(p0, p1, p2, p3, extrema) {\n var b = 6 * p2 - 12 * p1 + 6 * p0;\n var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n var c = 3 * p1 - 3 * p0;\n var n = 0;\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (isAroundZero(disc)) {\n extrema[0] = -b / (2 * a);\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n extrema[n++] = t2;\n }\n }\n }\n return n;\n}\nexport function cubicSubdivide(p0, p1, p2, p3, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p23 = (p3 - p2) * t + p2;\n var p012 = (p12 - p01) * t + p01;\n var p123 = (p23 - p12) * t + p12;\n var p0123 = (p123 - p012) * t + p012;\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123;\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\nexport function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n var t;\n var interval = 0.005;\n var d = Infinity;\n var prev;\n var next;\n var d1;\n var d2;\n _v0[0] = x;\n _v0[1] = y;\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n d1 = v2DistSquare(_v0, _v1);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n prev = t - interval;\n next = t + interval;\n _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n d1 = v2DistSquare(_v1, _v0);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n _v2[0] = cubicAt(x0, x1, x2, x3, next);\n _v2[1] = cubicAt(y0, y1, y2, y3, next);\n d2 = v2DistSquare(_v2, _v0);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n if (out) {\n out[0] = cubicAt(x0, x1, x2, x3, t);\n out[1] = cubicAt(y0, y1, y2, y3, t);\n }\n return mathSqrt(d);\n}\nexport function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {\n var px = x0;\n var py = y0;\n var d = 0;\n var step = 1 / iteration;\n for (var i = 1; i <= iteration; i++) {\n var t = i * step;\n var x = cubicAt(x0, x1, x2, x3, t);\n var y = cubicAt(y0, y1, y2, y3, t);\n var dx = x - px;\n var dy = y - py;\n d += Math.sqrt(dx * dx + dy * dy);\n px = x;\n py = y;\n }\n return d;\n}\nexport function quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\nexport function quadraticDerivativeAt(p0, p1, p2, t) {\n return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\nexport function quadraticRootAt(p0, p1, p2, val, roots) {\n var a = p0 - 2 * p1 + p2;\n var b = 2 * (p1 - p0);\n var c = p0 - val;\n var n = 0;\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (isAroundZero(disc)) {\n var t1 = -b / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n }\n return n;\n}\nexport function quadraticExtremum(p0, p1, p2) {\n var divider = p0 + p2 - 2 * p1;\n if (divider === 0) {\n return 0.5;\n }\n else {\n return (p0 - p1) / divider;\n }\n}\nexport function quadraticSubdivide(p0, p1, p2, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p012 = (p12 - p01) * t + p01;\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p012;\n out[4] = p12;\n out[5] = p2;\n}\nexport function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n var t;\n var interval = 0.005;\n var d = Infinity;\n _v0[0] = x;\n _v0[1] = y;\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = quadraticAt(x0, x1, x2, _t);\n _v1[1] = quadraticAt(y0, y1, y2, _t);\n var d1 = v2DistSquare(_v0, _v1);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n _v1[0] = quadraticAt(x0, x1, x2, prev);\n _v1[1] = quadraticAt(y0, y1, y2, prev);\n var d1 = v2DistSquare(_v1, _v0);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n _v2[0] = quadraticAt(x0, x1, x2, next);\n _v2[1] = quadraticAt(y0, y1, y2, next);\n var d2 = v2DistSquare(_v2, _v0);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n if (out) {\n out[0] = quadraticAt(x0, x1, x2, t);\n out[1] = quadraticAt(y0, y1, y2, t);\n }\n return mathSqrt(d);\n}\nexport function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {\n var px = x0;\n var py = y0;\n var d = 0;\n var step = 1 / iteration;\n for (var i = 1; i <= iteration; i++) {\n var t = i * step;\n var x = quadraticAt(x0, x1, x2, t);\n var y = quadraticAt(y0, y1, y2, t);\n var dx = x - px;\n var dy = y - py;\n d += Math.sqrt(dx * dx + dy * dy);\n px = x;\n py = y;\n }\n return d;\n}\n","var DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\nfunction minRunLength(n) {\n var r = 0;\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n return n + r;\n}\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n if (runHi === hi) {\n return 1;\n }\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n reverseRun(array, lo, runHi);\n }\n else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n return runHi - lo;\n}\nfunction reverseRun(array, lo, hi) {\n hi--;\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n while (left < right) {\n mid = left + right >>> 1;\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n }\n else {\n left = mid + 1;\n }\n }\n var n = start - left;\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n case 2:\n array[left + 2] = array[left + 1];\n case 1:\n array[left + 1] = array[left];\n break;\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n }\n array[left] = pivot;\n }\n}\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n else {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n }\n else {\n offset = m;\n }\n }\n return offset;\n}\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n else {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n }\n else {\n lastOffset = m + 1;\n }\n }\n return offset;\n}\nfunction TimSort(array, compare) {\n var minGallop = DEFAULT_MIN_GALLOPING;\n var length = 0;\n var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n var stackLength = 0;\n var runStart;\n var runLength;\n var stackSize = 0;\n length = array.length;\n if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n tmpStorageLength = length >>> 1;\n }\n var tmp = [];\n stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n runStart = [];\n runLength = [];\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n if ((n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1])\n || (n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1])) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n }\n else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n mergeAt(n);\n }\n }\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n mergeAt(n);\n }\n }\n function mergeAt(i) {\n var start1 = runStart[i];\n var length1 = runLength[i];\n var start2 = runStart[i + 1];\n var length2 = runLength[i + 1];\n runLength[i] = length1 + length2;\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n if (length1 === 0) {\n return;\n }\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n if (length2 === 0) {\n return;\n }\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n }\n else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n return;\n }\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n return;\n }\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n if (--length2 === 0) {\n exit = true;\n break;\n }\n }\n else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n exit = true;\n break;\n }\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n array[dest++] = tmp[cursor1++];\n if (--length1 === 1) {\n exit = true;\n break;\n }\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n _minGallop += 2;\n }\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n }\n else if (length1 === 0) {\n throw new Error();\n }\n else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n return;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n return;\n }\n var _minGallop = minGallop;\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n if (--length1 === 0) {\n exit = true;\n break;\n }\n }\n else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n array[dest--] = tmp[cursor2--];\n if (--length2 === 1) {\n exit = true;\n break;\n }\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n exit = true;\n break;\n }\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n _minGallop += 2;\n }\n minGallop = _minGallop;\n if (minGallop < 1) {\n minGallop = 1;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n }\n else if (length2 === 0) {\n throw new Error();\n }\n else {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n return {\n mergeRuns: mergeRuns,\n forceMergeRuns: forceMergeRuns,\n pushRun: pushRun\n };\n}\nexport default function sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n if (!hi) {\n hi = array.length;\n }\n var remaining = hi - lo;\n if (remaining < 2) {\n return;\n }\n var runLength = 0;\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n var ts = TimSort(array, compare);\n var minRun = minRunLength(remaining);\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n if (runLength < minRun) {\n var force = remaining;\n if (force > minRun) {\n force = minRun;\n }\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n ts.forceMergeRuns();\n}\n","var LN2 = Math.log(2);\nfunction determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\n var cacheKey = rowMask + '-' + colMask;\n var fullRank = rows.length;\n if (detCache.hasOwnProperty(cacheKey)) {\n return detCache[cacheKey];\n }\n if (rank === 1) {\n var colStart = Math.round(Math.log(((1 << fullRank) - 1) & ~colMask) / LN2);\n return rows[rowStart][colStart];\n }\n var subRowMask = rowMask | (1 << rowStart);\n var subRowStart = rowStart + 1;\n while (rowMask & (1 << subRowStart)) {\n subRowStart++;\n }\n var sum = 0;\n for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\n var colTag = 1 << j;\n if (!(colTag & colMask)) {\n sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j]\n * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\n colLocalIdx++;\n }\n }\n detCache[cacheKey] = sum;\n return sum;\n}\nexport function buildTransformer(src, dest) {\n var mA = [\n [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],\n [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],\n [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],\n [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],\n [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],\n [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],\n [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],\n [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]\n ];\n var detCache = {};\n var det = determinant(mA, 8, 0, 0, 0, detCache);\n if (det === 0) {\n return;\n }\n var vh = [];\n for (var i = 0; i < 8; i++) {\n for (var j = 0; j < 8; j++) {\n vh[j] == null && (vh[j] = 0);\n vh[j] += ((i + j) % 2 ? -1 : 1)\n * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache)\n / det * dest[i];\n }\n }\n return function (out, srcPointX, srcPointY) {\n var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\n out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\n out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\n };\n}\n","import env from './env';\nimport { buildTransformer } from './fourPointsTransform';\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\nvar _calcOut = [];\nexport function transformLocalCoord(out, elFrom, elTarget, inX, inY) {\n return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true)\n && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\n}\nexport function transformCoordWithViewport(out, el, inX, inY, inverse) {\n if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\n var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\n var markers = prepareCoordMarkers(el, saved);\n var transformer = preparePointerTransformer(markers, saved, inverse);\n if (transformer) {\n transformer(out, inX, inY);\n return true;\n }\n }\n return false;\n}\nfunction prepareCoordMarkers(el, saved) {\n var markers = saved.markers;\n if (markers) {\n return markers;\n }\n markers = saved.markers = [];\n var propLR = ['left', 'right'];\n var propTB = ['top', 'bottom'];\n for (var i = 0; i < 4; i++) {\n var marker = document.createElement('div');\n var stl = marker.style;\n var idxLR = i % 2;\n var idxTB = (i >> 1) % 2;\n stl.cssText = [\n 'position: absolute',\n 'visibility: hidden',\n 'padding: 0',\n 'margin: 0',\n 'border-width: 0',\n 'user-select: none',\n 'width:0',\n 'height:0',\n propLR[idxLR] + ':0',\n propTB[idxTB] + ':0',\n propLR[1 - idxLR] + ':auto',\n propTB[1 - idxTB] + ':auto',\n ''\n ].join('!important;');\n el.appendChild(marker);\n markers.push(marker);\n }\n return markers;\n}\nfunction preparePointerTransformer(markers, saved, inverse) {\n var transformerName = inverse ? 'invTrans' : 'trans';\n var transformer = saved[transformerName];\n var oldSrcCoords = saved.srcCoords;\n var srcCoords = [];\n var destCoords = [];\n var oldCoordTheSame = true;\n for (var i = 0; i < 4; i++) {\n var rect = markers[i].getBoundingClientRect();\n var ii = 2 * i;\n var x = rect.left;\n var y = rect.top;\n srcCoords.push(x, y);\n oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\n destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\n }\n return (oldCoordTheSame && transformer)\n ? transformer\n : (saved.srcCoords = srcCoords,\n saved[transformerName] = inverse\n ? buildTransformer(destCoords, srcCoords)\n : buildTransformer(srcCoords, destCoords));\n}\nexport function isCanvasEl(el) {\n return el.nodeName.toUpperCase() === 'CANVAS';\n}\n","export function create() {\n return [1, 0, 0, 1, 0, 0];\n}\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\nexport function copy(out, m) {\n out[0] = m[0];\n out[1] = m[1];\n out[2] = m[2];\n out[3] = m[3];\n out[4] = m[4];\n out[5] = m[5];\n return out;\n}\nexport function mul(out, m1, m2) {\n var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = out3;\n out[4] = out4;\n out[5] = out5;\n return out;\n}\nexport function translate(out, a, v) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4] + v[0];\n out[5] = a[5] + v[1];\n return out;\n}\nexport function rotate(out, a, rad) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var st = Math.sin(rad);\n var ct = Math.cos(rad);\n out[0] = aa * ct + ab * st;\n out[1] = -aa * st + ab * ct;\n out[2] = ac * ct + ad * st;\n out[3] = -ac * st + ct * ad;\n out[4] = ct * atx + st * aty;\n out[5] = ct * aty - st * atx;\n return out;\n}\nexport function scale(out, a, v) {\n var vx = v[0];\n var vy = v[1];\n out[0] = a[0] * vx;\n out[1] = a[1] * vy;\n out[2] = a[2] * vx;\n out[3] = a[3] * vy;\n out[4] = a[4] * vx;\n out[5] = a[5] * vy;\n return out;\n}\nexport function invert(out, a) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var det = aa * ad - ab * ac;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\nexport function clone(a) {\n var b = create();\n copy(b, a);\n return b;\n}\n","import BoundingRect from '../core/BoundingRect';\nimport { createCanvas } from '../core/util';\nimport LRU from '../core/LRU';\nvar textWidthCache = {};\nexport var DEFAULT_FONT = '12px sans-serif';\nvar _ctx;\nvar _cachedFont;\nfunction defaultMeasureText(text, font) {\n if (!_ctx) {\n _ctx = createCanvas().getContext('2d');\n }\n if (_cachedFont !== font) {\n _cachedFont = _ctx.font = font || DEFAULT_FONT;\n }\n return _ctx.measureText(text);\n}\nvar methods = {\n measureText: defaultMeasureText\n};\nexport function $override(name, fn) {\n methods[name] = fn;\n}\nexport function getWidth(text, font) {\n font = font || DEFAULT_FONT;\n var cacheOfFont = textWidthCache[font];\n if (!cacheOfFont) {\n cacheOfFont = textWidthCache[font] = new LRU(500);\n }\n var width = cacheOfFont.get(text);\n if (width == null) {\n width = methods.measureText(text, font).width;\n cacheOfFont.put(text, width);\n }\n return width;\n}\nexport function innerGetBoundingRect(text, font, textAlign, textBaseline) {\n var width = getWidth(text, font);\n var height = getLineHeight(font);\n var x = adjustTextX(0, width, textAlign);\n var y = adjustTextY(0, height, textBaseline);\n var rect = new BoundingRect(x, y, width, height);\n return rect;\n}\nexport function getBoundingRect(text, font, textAlign, textBaseline) {\n var textLines = ((text || '') + '').split('\\n');\n var len = textLines.length;\n if (len === 1) {\n return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline);\n }\n else {\n var uniondRect = new BoundingRect(0, 0, 0, 0);\n for (var i = 0; i < textLines.length; i++) {\n var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline);\n i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect);\n }\n return uniondRect;\n }\n}\nexport function adjustTextX(x, width, textAlign) {\n if (textAlign === 'right') {\n x -= width;\n }\n else if (textAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nexport function adjustTextY(y, height, verticalAlign) {\n if (verticalAlign === 'middle') {\n y -= height / 2;\n }\n else if (verticalAlign === 'bottom') {\n y -= height;\n }\n return y;\n}\nexport function getLineHeight(font) {\n return getWidth('国', font);\n}\nexport function measureText(text, font) {\n return methods.measureText(text, font);\n}\nexport function parsePercent(value, maxValue) {\n if (typeof value === 'string') {\n if (value.lastIndexOf('%') >= 0) {\n return parseFloat(value) / 100 * maxValue;\n }\n return parseFloat(value);\n }\n return value;\n}\nexport function calculateTextPosition(out, opts, rect) {\n var textPosition = opts.position || 'inside';\n var distance = opts.distance != null ? opts.distance : 5;\n var height = rect.height;\n var width = rect.width;\n var halfHeight = height / 2;\n var x = rect.x;\n var y = rect.y;\n var textAlign = 'left';\n var textVerticalAlign = 'top';\n if (textPosition instanceof Array) {\n x += parsePercent(textPosition[0], rect.width);\n y += parsePercent(textPosition[1], rect.height);\n textAlign = null;\n textVerticalAlign = null;\n }\n else {\n switch (textPosition) {\n case 'left':\n x -= distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n case 'right':\n x += distance + width;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n case 'top':\n x += width / 2;\n y -= distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n case 'bottom':\n x += width / 2;\n y += height + distance;\n textAlign = 'center';\n break;\n case 'inside':\n x += width / 2;\n y += halfHeight;\n textAlign = 'center';\n textVerticalAlign = 'middle';\n break;\n case 'insideLeft':\n x += distance;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n case 'insideRight':\n x += width - distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n case 'insideTop':\n x += width / 2;\n y += distance;\n textAlign = 'center';\n break;\n case 'insideBottom':\n x += width / 2;\n y += height - distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n case 'insideTopLeft':\n x += distance;\n y += distance;\n break;\n case 'insideTopRight':\n x += width - distance;\n y += distance;\n textAlign = 'right';\n break;\n case 'insideBottomLeft':\n x += distance;\n y += height - distance;\n textVerticalAlign = 'bottom';\n break;\n case 'insideBottomRight':\n x += width - distance;\n y += height - distance;\n textAlign = 'right';\n textVerticalAlign = 'bottom';\n break;\n }\n }\n out = out || {};\n out.x = x;\n out.y = y;\n out.align = textAlign;\n out.verticalAlign = textVerticalAlign;\n return out;\n}\n","import windingLine from './windingLine';\nvar EPSILON = 1e-8;\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\nexport function contain(points, x, y) {\n var w = 0;\n var p = points[0];\n if (!p) {\n return false;\n }\n for (var i = 1; i < points.length; i++) {\n var p2 = points[i];\n w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n p = p2;\n }\n var p0 = points[0];\n if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n }\n return w !== 0;\n}\n","export function containStroke(x0, y0, x1, y1, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n var _a = 0;\n var _b = x0;\n if ((y > y0 + _l && y > y1 + _l)\n || (y < y0 - _l && y < y1 - _l)\n || (x > x0 + _l && x > x1 + _l)\n || (x < x0 - _l && x < x1 - _l)) {\n return false;\n }\n if (x0 !== x1) {\n _a = (y0 - y1) / (x0 - x1);\n _b = (x0 * y1 - x1 * y0) / (x0 - x1);\n }\n else {\n return Math.abs(x - x0) <= _l / 2;\n }\n var tmp = _a * x - y + _b;\n var _s = tmp * tmp / (_a * _a + 1);\n return _s <= _l / 2 * _l / 2;\n}\n","import * as curve from '../core/curve';\nexport function containStroke(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n if ((y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l)\n || (y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l)\n || (x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l)\n || (x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l)) {\n return false;\n }\n var d = curve.cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\n return d <= _l / 2;\n}\n","import { quadraticProjectPoint } from '../core/curve';\nexport function containStroke(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n if ((y > y0 + _l && y > y1 + _l && y > y2 + _l)\n || (y < y0 - _l && y < y1 - _l && y < y2 - _l)\n || (x > x0 + _l && x > x1 + _l && x > x2 + _l)\n || (x < x0 - _l && x < x1 - _l && x < x2 - _l)) {\n return false;\n }\n var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\n return d <= _l / 2;\n}\n","import { normalizeRadian } from './util';\nvar PI2 = Math.PI * 2;\nexport function containStroke(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n x -= cx;\n y -= cy;\n var d = Math.sqrt(x * x + y * y);\n if ((d - _l > r) || (d + _l < r)) {\n return false;\n }\n if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n return true;\n }\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n }\n else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n var angle = Math.atan2(y, x);\n if (angle < 0) {\n angle += PI2;\n }\n return (angle >= startAngle && angle <= endAngle)\n || (angle + PI2 >= startAngle && angle + PI2 <= endAngle);\n}\n","import PathProxy from '../core/PathProxy';\nimport * as line from './line';\nimport * as cubic from './cubic';\nimport * as quadratic from './quadratic';\nimport * as arc from './arc';\nimport * as curve from '../core/curve';\nimport windingLine from './windingLine';\nvar CMD = PathProxy.CMD;\nvar PI2 = Math.PI * 2;\nvar EPSILON = 1e-4;\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\nvar roots = [-1, -1, -1];\nvar extrema = [-1, -1];\nfunction swapExtrema() {\n var tmp = extrema[0];\n extrema[0] = extrema[1];\n extrema[1] = tmp;\n}\nfunction windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\n if ((y > y0 && y > y1 && y > y2 && y > y3)\n || (y < y0 && y < y1 && y < y2 && y < y3)) {\n return 0;\n }\n var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots);\n if (nRoots === 0) {\n return 0;\n }\n else {\n var w = 0;\n var nExtrema = -1;\n var y0_ = void 0;\n var y1_ = void 0;\n for (var i = 0; i < nRoots; i++) {\n var t = roots[i];\n var unit = (t === 0 || t === 1) ? 0.5 : 1;\n var x_ = curve.cubicAt(x0, x1, x2, x3, t);\n if (x_ < x) {\n continue;\n }\n if (nExtrema < 0) {\n nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema);\n if (extrema[1] < extrema[0] && nExtrema > 1) {\n swapExtrema();\n }\n y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]);\n if (nExtrema > 1) {\n y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]);\n }\n }\n if (nExtrema === 2) {\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n }\n else if (t < extrema[1]) {\n w += y1_ < y0_ ? unit : -unit;\n }\n else {\n w += y3 < y1_ ? unit : -unit;\n }\n }\n else {\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n }\n else {\n w += y3 < y0_ ? unit : -unit;\n }\n }\n }\n return w;\n }\n}\nfunction windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\n if ((y > y0 && y > y1 && y > y2)\n || (y < y0 && y < y1 && y < y2)) {\n return 0;\n }\n var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots);\n if (nRoots === 0) {\n return 0;\n }\n else {\n var t = curve.quadraticExtremum(y0, y1, y2);\n if (t >= 0 && t <= 1) {\n var w = 0;\n var y_ = curve.quadraticAt(y0, y1, y2, t);\n for (var i = 0; i < nRoots; i++) {\n var unit = (roots[i] === 0 || roots[i] === 1) ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[i]);\n if (x_ < x) {\n continue;\n }\n if (roots[i] < t) {\n w += y_ < y0 ? unit : -unit;\n }\n else {\n w += y2 < y_ ? unit : -unit;\n }\n }\n return w;\n }\n else {\n var unit = (roots[0] === 0 || roots[0] === 1) ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[0]);\n if (x_ < x) {\n return 0;\n }\n return y2 < y0 ? unit : -unit;\n }\n }\n}\nfunction windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\n y -= cy;\n if (y > r || y < -r) {\n return 0;\n }\n var tmp = Math.sqrt(r * r - y * y);\n roots[0] = -tmp;\n roots[1] = tmp;\n var dTheta = Math.abs(startAngle - endAngle);\n if (dTheta < 1e-4) {\n return 0;\n }\n if (dTheta >= PI2 - 1e-4) {\n startAngle = 0;\n endAngle = PI2;\n var dir = anticlockwise ? 1 : -1;\n if (x >= roots[0] + cx && x <= roots[1] + cx) {\n return dir;\n }\n else {\n return 0;\n }\n }\n if (startAngle > endAngle) {\n var tmp_1 = startAngle;\n startAngle = endAngle;\n endAngle = tmp_1;\n }\n if (startAngle < 0) {\n startAngle += PI2;\n endAngle += PI2;\n }\n var w = 0;\n for (var i = 0; i < 2; i++) {\n var x_ = roots[i];\n if (x_ + cx > x) {\n var angle = Math.atan2(y, x_);\n var dir = anticlockwise ? 1 : -1;\n if (angle < 0) {\n angle = PI2 + angle;\n }\n if ((angle >= startAngle && angle <= endAngle)\n || (angle + PI2 >= startAngle && angle + PI2 <= endAngle)) {\n if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\n dir = -dir;\n }\n w += dir;\n }\n }\n }\n return w;\n}\nfunction containPath(path, lineWidth, isStroke, x, y) {\n var data = path.data;\n var len = path.len();\n var w = 0;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var x1;\n var y1;\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (cmd === CMD.M && i > 1) {\n if (!isStroke) {\n w += windingLine(xi, yi, x0, y0, x, y);\n }\n }\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n switch (cmd) {\n case CMD.M:\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n break;\n case CMD.L:\n if (isStroke) {\n if (line.containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\n }\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.C:\n if (isStroke) {\n if (cubic.containStroke(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.Q:\n if (isStroke) {\n if (quadratic.containStroke(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++];\n i += 1;\n var anticlockwise = !!(1 - data[i++]);\n x1 = Math.cos(theta) * rx + cx;\n y1 = Math.sin(theta) * ry + cy;\n if (!isFirst) {\n w += windingLine(xi, yi, x1, y1, x, y);\n }\n else {\n x0 = x1;\n y0 = y1;\n }\n var _x = (x - cx) * ry / rx + cx;\n if (isStroke) {\n if (arc.containStroke(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\n return true;\n }\n }\n else {\n w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\n }\n xi = Math.cos(theta + dTheta) * rx + cx;\n yi = Math.sin(theta + dTheta) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n x1 = x0 + width;\n y1 = y0 + height;\n if (isStroke) {\n if (line.containStroke(x0, y0, x1, y0, lineWidth, x, y)\n || line.containStroke(x1, y0, x1, y1, lineWidth, x, y)\n || line.containStroke(x1, y1, x0, y1, lineWidth, x, y)\n || line.containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingLine(x1, y0, x1, y1, x, y);\n w += windingLine(x0, y1, x0, y0, x, y);\n }\n break;\n case CMD.Z:\n if (isStroke) {\n if (line.containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingLine(xi, yi, x0, y0, x, y);\n }\n xi = x0;\n yi = y0;\n break;\n }\n }\n if (!isStroke && !isAroundEqual(yi, y0)) {\n w += windingLine(xi, yi, x0, y0, x, y) || 0;\n }\n return w !== 0;\n}\nexport function contain(pathProxy, x, y) {\n return containPath(pathProxy, 0, false, x, y);\n}\nexport function containStroke(pathProxy, lineWidth, x, y) {\n return containPath(pathProxy, lineWidth, true, x, y);\n}\n","export function create(x, y) {\n if (x == null) {\n x = 0;\n }\n if (y == null) {\n y = 0;\n }\n return [x, y];\n}\nexport function copy(out, v) {\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\nexport function clone(v) {\n return [v[0], v[1]];\n}\nexport function set(out, a, b) {\n out[0] = a;\n out[1] = b;\n return out;\n}\nexport function add(out, v1, v2) {\n out[0] = v1[0] + v2[0];\n out[1] = v1[1] + v2[1];\n return out;\n}\nexport function scaleAndAdd(out, v1, v2, a) {\n out[0] = v1[0] + v2[0] * a;\n out[1] = v1[1] + v2[1] * a;\n return out;\n}\nexport function sub(out, v1, v2) {\n out[0] = v1[0] - v2[0];\n out[1] = v1[1] - v2[1];\n return out;\n}\nexport function len(v) {\n return Math.sqrt(lenSquare(v));\n}\nexport var length = len;\nexport function lenSquare(v) {\n return v[0] * v[0] + v[1] * v[1];\n}\nexport var lengthSquare = lenSquare;\nexport function mul(out, v1, v2) {\n out[0] = v1[0] * v2[0];\n out[1] = v1[1] * v2[1];\n return out;\n}\nexport function div(out, v1, v2) {\n out[0] = v1[0] / v2[0];\n out[1] = v1[1] / v2[1];\n return out;\n}\nexport function dot(v1, v2) {\n return v1[0] * v2[0] + v1[1] * v2[1];\n}\nexport function scale(out, v, s) {\n out[0] = v[0] * s;\n out[1] = v[1] * s;\n return out;\n}\nexport function normalize(out, v) {\n var d = len(v);\n if (d === 0) {\n out[0] = 0;\n out[1] = 0;\n }\n else {\n out[0] = v[0] / d;\n out[1] = v[1] / d;\n }\n return out;\n}\nexport function distance(v1, v2) {\n return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0])\n + (v1[1] - v2[1]) * (v1[1] - v2[1]));\n}\nexport var dist = distance;\nexport function distanceSquare(v1, v2) {\n return (v1[0] - v2[0]) * (v1[0] - v2[0])\n + (v1[1] - v2[1]) * (v1[1] - v2[1]);\n}\nexport var distSquare = distanceSquare;\nexport function negate(out, v) {\n out[0] = -v[0];\n out[1] = -v[1];\n return out;\n}\nexport function lerp(out, v1, v2, t) {\n out[0] = v1[0] + t * (v2[0] - v1[0]);\n out[1] = v1[1] + t * (v2[1] - v1[1]);\n return out;\n}\nexport function applyTransform(out, v, m) {\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\nexport function min(out, v1, v2) {\n out[0] = Math.min(v1[0], v2[0]);\n out[1] = Math.min(v1[1], v2[1]);\n return out;\n}\nexport function max(out, v1, v2) {\n out[0] = Math.max(v1[0], v2[0]);\n out[1] = Math.max(v1[1], v2[1]);\n return out;\n}\n","var Point = (function () {\n function Point(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n Point.prototype.copy = function (other) {\n this.x = other.x;\n this.y = other.y;\n return this;\n };\n Point.prototype.clone = function () {\n return new Point(this.x, this.y);\n };\n Point.prototype.set = function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n };\n Point.prototype.equal = function (other) {\n return other.x === this.x && other.y === this.y;\n };\n Point.prototype.add = function (other) {\n this.x += other.x;\n this.y += other.y;\n return this;\n };\n Point.prototype.scale = function (scalar) {\n this.x *= scalar;\n this.y *= scalar;\n };\n Point.prototype.scaleAndAdd = function (other, scalar) {\n this.x += other.x * scalar;\n this.y += other.y * scalar;\n };\n Point.prototype.sub = function (other) {\n this.x -= other.x;\n this.y -= other.y;\n return this;\n };\n Point.prototype.dot = function (other) {\n return this.x * other.x + this.y * other.y;\n };\n Point.prototype.len = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n };\n Point.prototype.lenSquare = function () {\n return this.x * this.x + this.y * this.y;\n };\n Point.prototype.normalize = function () {\n var len = this.len();\n this.x /= len;\n this.y /= len;\n return this;\n };\n Point.prototype.distance = function (other) {\n var dx = this.x - other.x;\n var dy = this.y - other.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n Point.prototype.distanceSquare = function (other) {\n var dx = this.x - other.x;\n var dy = this.y - other.y;\n return dx * dx + dy * dy;\n };\n Point.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n return this;\n };\n Point.prototype.transform = function (m) {\n if (!m) {\n return;\n }\n var x = this.x;\n var y = this.y;\n this.x = m[0] * x + m[2] * y + m[4];\n this.y = m[1] * x + m[3] * y + m[5];\n return this;\n };\n Point.prototype.toArray = function (out) {\n out[0] = this.x;\n out[1] = this.y;\n return out;\n };\n Point.prototype.fromArray = function (input) {\n this.x = input[0];\n this.y = input[1];\n };\n Point.set = function (p, x, y) {\n p.x = x;\n p.y = y;\n };\n Point.copy = function (p, p2) {\n p.x = p2.x;\n p.y = p2.y;\n };\n Point.len = function (p) {\n return Math.sqrt(p.x * p.x + p.y * p.y);\n };\n Point.lenSquare = function (p) {\n return p.x * p.x + p.y * p.y;\n };\n Point.dot = function (p0, p1) {\n return p0.x * p1.x + p0.y * p1.y;\n };\n Point.add = function (out, p0, p1) {\n out.x = p0.x + p1.x;\n out.y = p0.y + p1.y;\n };\n Point.sub = function (out, p0, p1) {\n out.x = p0.x - p1.x;\n out.y = p0.y - p1.y;\n };\n Point.scale = function (out, p0, scalar) {\n out.x = p0.x * scalar;\n out.y = p0.y * scalar;\n };\n Point.scaleAndAdd = function (out, p0, p1, scalar) {\n out.x = p0.x + p1.x * scalar;\n out.y = p0.y + p1.y * scalar;\n };\n Point.lerp = function (out, p0, p1, t) {\n var onet = 1 - t;\n out.x = onet * p0.x + t * p1.x;\n out.y = onet * p0.y + t * p1.y;\n };\n return Point;\n}());\nexport default Point;\n","import Eventful from './Eventful';\nimport env from './env';\nimport { isCanvasEl, transformCoordWithViewport } from './dom';\nvar isDomLevel2 = (typeof window !== 'undefined') && !!window.addEventListener;\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\nvar _calcOut = [];\nexport function clientToLocal(el, e, out, calculate) {\n out = out || {};\n if (calculate || !env.canvasSupported) {\n calculateZrXY(el, e, out);\n }\n else if (env.browser.firefox\n && e.layerX != null\n && e.layerX !== e.offsetX) {\n out.zrX = e.layerX;\n out.zrY = e.layerY;\n }\n else if (e.offsetX != null) {\n out.zrX = e.offsetX;\n out.zrY = e.offsetY;\n }\n else {\n calculateZrXY(el, e, out);\n }\n return out;\n}\nfunction calculateZrXY(el, e, out) {\n if (env.domSupported && el.getBoundingClientRect) {\n var ex = e.clientX;\n var ey = e.clientY;\n if (isCanvasEl(el)) {\n var box = el.getBoundingClientRect();\n out.zrX = ex - box.left;\n out.zrY = ey - box.top;\n return;\n }\n else {\n if (transformCoordWithViewport(_calcOut, el, ex, ey)) {\n out.zrX = _calcOut[0];\n out.zrY = _calcOut[1];\n return;\n }\n }\n }\n out.zrX = out.zrY = 0;\n}\nexport function getNativeEvent(e) {\n return e\n || window.event;\n}\nexport function normalizeEvent(el, e, calculate) {\n e = getNativeEvent(e);\n if (e.zrX != null) {\n return e;\n }\n var eventType = e.type;\n var isTouch = eventType && eventType.indexOf('touch') >= 0;\n if (!isTouch) {\n clientToLocal(el, e, e, calculate);\n var wheelDelta = getWheelDeltaMayPolyfill(e);\n e.zrDelta = wheelDelta ? wheelDelta / 120 : -(e.detail || 0) / 3;\n }\n else {\n var touch = eventType !== 'touchend'\n ? e.targetTouches[0]\n : e.changedTouches[0];\n touch && clientToLocal(el, touch, e, calculate);\n }\n var button = e.button;\n if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\n e.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));\n }\n return e;\n}\nfunction getWheelDeltaMayPolyfill(e) {\n var rawWheelDelta = e.wheelDelta;\n if (rawWheelDelta) {\n return rawWheelDelta;\n }\n var deltaX = e.deltaX;\n var deltaY = e.deltaY;\n if (deltaX == null || deltaY == null) {\n return rawWheelDelta;\n }\n var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX);\n var sign = deltaY > 0 ? -1\n : deltaY < 0 ? 1\n : deltaX > 0 ? -1\n : 1;\n return 3 * delta * sign;\n}\nexport function addEventListener(el, name, handler, opt) {\n if (isDomLevel2) {\n el.addEventListener(name, handler, opt);\n }\n else {\n el.attachEvent('on' + name, handler);\n }\n}\nexport function removeEventListener(el, name, handler, opt) {\n if (isDomLevel2) {\n el.removeEventListener(name, handler, opt);\n }\n else {\n el.detachEvent('on' + name, handler);\n }\n}\nexport var stop = isDomLevel2\n ? function (e) {\n e.preventDefault();\n e.stopPropagation();\n e.cancelBubble = true;\n }\n : function (e) {\n e.returnValue = false;\n e.cancelBubble = true;\n };\nexport function isMiddleOrRightButtonOnMouseUpDown(e) {\n return e.which === 2 || e.which === 3;\n}\nexport function notLeftMouse(e) {\n return e.which > 1;\n}\nexport { Eventful as Dispatcher };\n","import Point from './Point';\nvar extent = [0, 0];\nvar extent2 = [0, 0];\nvar minTv = new Point();\nvar maxTv = new Point();\nvar OrientedBoundingRect = (function () {\n function OrientedBoundingRect(rect, transform) {\n this._corners = [];\n this._axes = [];\n this._origin = [0, 0];\n for (var i = 0; i < 4; i++) {\n this._corners[i] = new Point();\n }\n for (var i = 0; i < 2; i++) {\n this._axes[i] = new Point();\n }\n if (rect) {\n this.fromBoundingRect(rect, transform);\n }\n }\n OrientedBoundingRect.prototype.fromBoundingRect = function (rect, transform) {\n var corners = this._corners;\n var axes = this._axes;\n var x = rect.x;\n var y = rect.y;\n var x2 = x + rect.width;\n var y2 = y + rect.height;\n corners[0].set(x, y);\n corners[1].set(x2, y);\n corners[2].set(x2, y2);\n corners[3].set(x, y2);\n if (transform) {\n for (var i = 0; i < 4; i++) {\n corners[i].transform(transform);\n }\n }\n Point.sub(axes[0], corners[1], corners[0]);\n Point.sub(axes[1], corners[3], corners[0]);\n axes[0].normalize();\n axes[1].normalize();\n for (var i = 0; i < 2; i++) {\n this._origin[i] = axes[i].dot(corners[0]);\n }\n };\n OrientedBoundingRect.prototype.intersect = function (other, mtv) {\n var overlapped = true;\n var noMtv = !mtv;\n minTv.set(Infinity, Infinity);\n maxTv.set(0, 0);\n if (!this._intersectCheckOneSide(this, other, minTv, maxTv, noMtv, 1)) {\n overlapped = false;\n if (noMtv) {\n return overlapped;\n }\n }\n if (!this._intersectCheckOneSide(other, this, minTv, maxTv, noMtv, -1)) {\n overlapped = false;\n if (noMtv) {\n return overlapped;\n }\n }\n if (!noMtv) {\n Point.copy(mtv, overlapped ? minTv : maxTv);\n }\n return overlapped;\n };\n OrientedBoundingRect.prototype._intersectCheckOneSide = function (self, other, minTv, maxTv, noMtv, inverse) {\n var overlapped = true;\n for (var i = 0; i < 2; i++) {\n var axis = this._axes[i];\n this._getProjMinMaxOnAxis(i, self._corners, extent);\n this._getProjMinMaxOnAxis(i, other._corners, extent2);\n if (extent[1] < extent2[0] || extent[0] > extent2[1]) {\n overlapped = false;\n if (noMtv) {\n return overlapped;\n }\n var dist0 = Math.abs(extent2[0] - extent[1]);\n var dist1 = Math.abs(extent[0] - extent2[1]);\n if (Math.min(dist0, dist1) > maxTv.len()) {\n if (dist0 < dist1) {\n Point.scale(maxTv, axis, -dist0 * inverse);\n }\n else {\n Point.scale(maxTv, axis, dist1 * inverse);\n }\n }\n }\n else if (minTv) {\n var dist0 = Math.abs(extent2[0] - extent[1]);\n var dist1 = Math.abs(extent[0] - extent2[1]);\n if (Math.min(dist0, dist1) < minTv.len()) {\n if (dist0 < dist1) {\n Point.scale(minTv, axis, dist0 * inverse);\n }\n else {\n Point.scale(minTv, axis, -dist1 * inverse);\n }\n }\n }\n }\n return overlapped;\n };\n OrientedBoundingRect.prototype._getProjMinMaxOnAxis = function (dim, corners, out) {\n var axis = this._axes[dim];\n var origin = this._origin;\n var proj = corners[0].dot(axis) + origin[dim];\n var min = proj;\n var max = proj;\n for (var i = 1; i < corners.length; i++) {\n var proj_1 = corners[i].dot(axis) + origin[dim];\n min = Math.min(proj_1, min);\n max = Math.max(proj_1, max);\n }\n out[0] = min;\n out[1] = max;\n };\n return OrientedBoundingRect;\n}());\nexport default OrientedBoundingRect;\n","import * as eventUtil from './event';\nvar GestureMgr = (function () {\n function GestureMgr() {\n this._track = [];\n }\n GestureMgr.prototype.recognize = function (event, target, root) {\n this._doTrack(event, target, root);\n return this._recognize(event);\n };\n GestureMgr.prototype.clear = function () {\n this._track.length = 0;\n return this;\n };\n GestureMgr.prototype._doTrack = function (event, target, root) {\n var touches = event.touches;\n if (!touches) {\n return;\n }\n var trackItem = {\n points: [],\n touches: [],\n target: target,\n event: event\n };\n for (var i = 0, len = touches.length; i < len; i++) {\n var touch = touches[i];\n var pos = eventUtil.clientToLocal(root, touch, {});\n trackItem.points.push([pos.zrX, pos.zrY]);\n trackItem.touches.push(touch);\n }\n this._track.push(trackItem);\n };\n GestureMgr.prototype._recognize = function (event) {\n for (var eventName in recognizers) {\n if (recognizers.hasOwnProperty(eventName)) {\n var gestureInfo = recognizers[eventName](this._track, event);\n if (gestureInfo) {\n return gestureInfo;\n }\n }\n }\n };\n return GestureMgr;\n}());\nexport { GestureMgr };\nfunction dist(pointPair) {\n var dx = pointPair[1][0] - pointPair[0][0];\n var dy = pointPair[1][1] - pointPair[0][1];\n return Math.sqrt(dx * dx + dy * dy);\n}\nfunction center(pointPair) {\n return [\n (pointPair[0][0] + pointPair[1][0]) / 2,\n (pointPair[0][1] + pointPair[1][1]) / 2\n ];\n}\nvar recognizers = {\n pinch: function (tracks, event) {\n var trackLen = tracks.length;\n if (!trackLen) {\n return;\n }\n var pinchEnd = (tracks[trackLen - 1] || {}).points;\n var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd;\n if (pinchPre\n && pinchPre.length > 1\n && pinchEnd\n && pinchEnd.length > 1) {\n var pinchScale = dist(pinchEnd) / dist(pinchPre);\n !isFinite(pinchScale) && (pinchScale = 1);\n event.pinchScale = pinchScale;\n var pinchCenter = center(pinchEnd);\n event.pinchX = pinchCenter[0];\n event.pinchY = pinchCenter[1];\n return {\n type: 'pinch',\n target: tracks[0].target,\n event: event\n };\n }\n }\n};\n","var wmUniqueIndex = Math.round(Math.random() * 9);\nvar WeakMap = (function () {\n function WeakMap() {\n this._id = '__ec_inner_' + wmUniqueIndex++;\n }\n WeakMap.prototype.get = function (key) {\n return this._guard(key)[this._id];\n };\n WeakMap.prototype.set = function (key, value) {\n var target = this._guard(key);\n if (typeof Object.defineProperty === 'function') {\n Object.defineProperty(target, this._id, {\n value: value,\n enumerable: false,\n configurable: true\n });\n }\n else {\n target[this._id] = value;\n }\n return this;\n };\n WeakMap.prototype[\"delete\"] = function (key) {\n if (this.has(key)) {\n delete this._guard(key)[this._id];\n return true;\n }\n return false;\n };\n WeakMap.prototype.has = function (key) {\n return !!this._guard(key)[this._id];\n };\n WeakMap.prototype._guard = function (key) {\n if (key !== Object(key)) {\n throw TypeError('Value of WeakMap is not a non-null object.');\n }\n return key;\n };\n return WeakMap;\n}());\nexport default WeakMap;\n","var dpr = 1;\nif (typeof window !== 'undefined') {\n dpr = Math.max(window.devicePixelRatio\n || (window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI)\n || 1, 1);\n}\nexport var debugMode = 0;\nexport var devicePixelRatio = dpr;\nexport var DARK_MODE_THRESHOLD = 0.4;\nexport var DARK_LABEL_COLOR = '#333';\nexport var LIGHT_LABEL_COLOR = '#ccc';\nexport var LIGHTER_LABEL_COLOR = '#eee';\n","var Eventful = (function () {\n function Eventful(eventProcessors) {\n if (eventProcessors) {\n this._$eventProcessor = eventProcessors;\n }\n }\n Eventful.prototype.on = function (event, query, handler, context) {\n if (!this._$handlers) {\n this._$handlers = {};\n }\n var _h = this._$handlers;\n if (typeof query === 'function') {\n context = handler;\n handler = query;\n query = null;\n }\n if (!handler || !event) {\n return this;\n }\n var eventProcessor = this._$eventProcessor;\n if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\n query = eventProcessor.normalizeQuery(query);\n }\n if (!_h[event]) {\n _h[event] = [];\n }\n for (var i = 0; i < _h[event].length; i++) {\n if (_h[event][i].h === handler) {\n return this;\n }\n }\n var wrap = {\n h: handler,\n query: query,\n ctx: (context || this),\n callAtLast: handler.zrEventfulCallAtLast\n };\n var lastIndex = _h[event].length - 1;\n var lastWrap = _h[event][lastIndex];\n (lastWrap && lastWrap.callAtLast)\n ? _h[event].splice(lastIndex, 0, wrap)\n : _h[event].push(wrap);\n return this;\n };\n Eventful.prototype.isSilent = function (eventName) {\n var _h = this._$handlers;\n return !_h || !_h[eventName] || !_h[eventName].length;\n };\n Eventful.prototype.off = function (eventType, handler) {\n var _h = this._$handlers;\n if (!_h) {\n return this;\n }\n if (!eventType) {\n this._$handlers = {};\n return this;\n }\n if (handler) {\n if (_h[eventType]) {\n var newList = [];\n for (var i = 0, l = _h[eventType].length; i < l; i++) {\n if (_h[eventType][i].h !== handler) {\n newList.push(_h[eventType][i]);\n }\n }\n _h[eventType] = newList;\n }\n if (_h[eventType] && _h[eventType].length === 0) {\n delete _h[eventType];\n }\n }\n else {\n delete _h[eventType];\n }\n return this;\n };\n Eventful.prototype.trigger = function (eventType) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!this._$handlers) {\n return this;\n }\n var _h = this._$handlers[eventType];\n var eventProcessor = this._$eventProcessor;\n if (_h) {\n var argLen = args.length;\n var len = _h.length;\n for (var i = 0; i < len; i++) {\n var hItem = _h[i];\n if (eventProcessor\n && eventProcessor.filter\n && hItem.query != null\n && !eventProcessor.filter(eventType, hItem.query)) {\n continue;\n }\n switch (argLen) {\n case 0:\n hItem.h.call(hItem.ctx);\n break;\n case 1:\n hItem.h.call(hItem.ctx, args[0]);\n break;\n case 2:\n hItem.h.call(hItem.ctx, args[0], args[1]);\n break;\n default:\n hItem.h.apply(hItem.ctx, args);\n break;\n }\n }\n }\n eventProcessor && eventProcessor.afterTrigger\n && eventProcessor.afterTrigger(eventType);\n return this;\n };\n Eventful.prototype.triggerWithContext = function (type) {\n if (!this._$handlers) {\n return this;\n }\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n var ctx = args[argLen - 1];\n var len = _h.length;\n for (var i = 0; i < len; i++) {\n var hItem = _h[i];\n if (eventProcessor\n && eventProcessor.filter\n && hItem.query != null\n && !eventProcessor.filter(type, hItem.query)) {\n continue;\n }\n switch (argLen) {\n case 0:\n hItem.h.call(ctx);\n break;\n case 1:\n hItem.h.call(ctx, args[0]);\n break;\n case 2:\n hItem.h.call(ctx, args[0], args[1]);\n break;\n default:\n hItem.h.apply(ctx, args.slice(1, argLen - 1));\n break;\n }\n }\n }\n eventProcessor && eventProcessor.afterTrigger\n && eventProcessor.afterTrigger(type);\n return this;\n };\n return Eventful;\n}());\nexport default Eventful;\n","import * as vec2 from './vector';\nimport BoundingRect from './BoundingRect';\nimport { devicePixelRatio as dpr } from '../config';\nimport { fromLine, fromCubic, fromQuadratic, fromArc } from './bbox';\nimport { cubicAt, cubicLength, cubicSubdivide, quadraticLength, quadraticSubdivide } from './curve';\nvar CMD = {\n M: 1,\n L: 2,\n C: 3,\n Q: 4,\n A: 5,\n Z: 6,\n R: 7\n};\nvar tmpOutX = [];\nvar tmpOutY = [];\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathSqrt = Math.sqrt;\nvar mathAbs = Math.abs;\nvar PI = Math.PI;\nvar PI2 = PI * 2;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\nvar tmpAngles = [];\nfunction modPI2(radian) {\n var n = Math.round(radian / PI * 1e8) / 1e8;\n return (n % 2) * PI;\n}\nexport function normalizeArcAngles(angles, anticlockwise) {\n var newStartAngle = modPI2(angles[0]);\n if (newStartAngle < 0) {\n newStartAngle += PI2;\n }\n var delta = newStartAngle - angles[0];\n var newEndAngle = angles[1];\n newEndAngle += delta;\n if (!anticlockwise && newEndAngle - newStartAngle >= PI2) {\n newEndAngle = newStartAngle + PI2;\n }\n else if (anticlockwise && newStartAngle - newEndAngle >= PI2) {\n newEndAngle = newStartAngle - PI2;\n }\n else if (!anticlockwise && newStartAngle > newEndAngle) {\n newEndAngle = newStartAngle +\n (PI2 - modPI2(newStartAngle - newEndAngle));\n }\n else if (anticlockwise && newStartAngle < newEndAngle) {\n newEndAngle = newStartAngle -\n (PI2 - modPI2(newEndAngle - newStartAngle));\n }\n angles[0] = newStartAngle;\n angles[1] = newEndAngle;\n}\nvar PathProxy = (function () {\n function PathProxy(notSaveData) {\n this.dpr = 1;\n this._version = 0;\n this._xi = 0;\n this._yi = 0;\n this._x0 = 0;\n this._y0 = 0;\n this._len = 0;\n if (notSaveData) {\n this._saveData = false;\n }\n if (this._saveData) {\n this.data = [];\n }\n }\n PathProxy.prototype.increaseVersion = function () {\n this._version++;\n };\n PathProxy.prototype.getVersion = function () {\n return this._version;\n };\n PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n if (segmentIgnoreThreshold > 0) {\n this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n }\n };\n PathProxy.prototype.setDPR = function (dpr) {\n this.dpr = dpr;\n };\n PathProxy.prototype.setContext = function (ctx) {\n this._ctx = ctx;\n };\n PathProxy.prototype.getContext = function () {\n return this._ctx;\n };\n PathProxy.prototype.beginPath = function () {\n this._ctx && this._ctx.beginPath();\n this.reset();\n return this;\n };\n PathProxy.prototype.reset = function () {\n if (this._saveData) {\n this._len = 0;\n }\n if (this._lineDash) {\n this._lineDash = null;\n this._dashOffset = 0;\n }\n if (this._pathSegLen) {\n this._pathSegLen = null;\n this._pathLen = 0;\n }\n this._version++;\n };\n PathProxy.prototype.moveTo = function (x, y) {\n this.addData(CMD.M, x, y);\n this._ctx && this._ctx.moveTo(x, y);\n this._x0 = x;\n this._y0 = y;\n this._xi = x;\n this._yi = y;\n return this;\n };\n PathProxy.prototype.lineTo = function (x, y) {\n var exceedUnit = mathAbs(x - this._xi) > this._ux\n || mathAbs(y - this._yi) > this._uy\n || this._len < 5;\n this.addData(CMD.L, x, y);\n if (this._ctx && exceedUnit) {\n this._needsDash ? this._dashedLineTo(x, y)\n : this._ctx.lineTo(x, y);\n }\n if (exceedUnit) {\n this._xi = x;\n this._yi = y;\n }\n return this;\n };\n PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n if (this._ctx) {\n this._needsDash ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3)\n : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n this._xi = x3;\n this._yi = y3;\n return this;\n };\n PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {\n this.addData(CMD.Q, x1, y1, x2, y2);\n if (this._ctx) {\n this._needsDash ? this._dashedQuadraticTo(x1, y1, x2, y2)\n : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n }\n this._xi = x2;\n this._yi = y2;\n return this;\n };\n PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n tmpAngles[0] = startAngle;\n tmpAngles[1] = endAngle;\n normalizeArcAngles(tmpAngles, anticlockwise);\n startAngle = tmpAngles[0];\n endAngle = tmpAngles[1];\n var delta = endAngle - startAngle;\n this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n this._xi = mathCos(endAngle) * r + cx;\n this._yi = mathSin(endAngle) * r + cy;\n return this;\n };\n PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {\n if (this._ctx) {\n this._ctx.arcTo(x1, y1, x2, y2, radius);\n }\n return this;\n };\n PathProxy.prototype.rect = function (x, y, w, h) {\n this._ctx && this._ctx.rect(x, y, w, h);\n this.addData(CMD.R, x, y, w, h);\n return this;\n };\n PathProxy.prototype.closePath = function () {\n this.addData(CMD.Z);\n var ctx = this._ctx;\n var x0 = this._x0;\n var y0 = this._y0;\n if (ctx) {\n this._needsDash && this._dashedLineTo(x0, y0);\n ctx.closePath();\n }\n this._xi = x0;\n this._yi = y0;\n return this;\n };\n PathProxy.prototype.fill = function (ctx) {\n ctx && ctx.fill();\n this.toStatic();\n };\n PathProxy.prototype.stroke = function (ctx) {\n ctx && ctx.stroke();\n this.toStatic();\n };\n PathProxy.prototype.setLineDash = function (lineDash) {\n if (lineDash instanceof Array) {\n this._lineDash = lineDash;\n this._dashIdx = 0;\n var lineDashSum = 0;\n for (var i = 0; i < lineDash.length; i++) {\n lineDashSum += lineDash[i];\n }\n this._dashSum = lineDashSum;\n this._needsDash = true;\n }\n else {\n this._lineDash = null;\n this._needsDash = false;\n }\n return this;\n };\n PathProxy.prototype.setLineDashOffset = function (offset) {\n this._dashOffset = offset;\n return this;\n };\n PathProxy.prototype.len = function () {\n return this._len;\n };\n PathProxy.prototype.setData = function (data) {\n var len = data.length;\n if (!(this.data && this.data.length === len) && hasTypedArray) {\n this.data = new Float32Array(len);\n }\n for (var i = 0; i < len; i++) {\n this.data[i] = data[i];\n }\n this._len = len;\n };\n PathProxy.prototype.appendPath = function (path) {\n if (!(path instanceof Array)) {\n path = [path];\n }\n var len = path.length;\n var appendSize = 0;\n var offset = this._len;\n for (var i = 0; i < len; i++) {\n appendSize += path[i].len();\n }\n if (hasTypedArray && (this.data instanceof Float32Array)) {\n this.data = new Float32Array(offset + appendSize);\n }\n for (var i = 0; i < len; i++) {\n var appendPathData = path[i].data;\n for (var k = 0; k < appendPathData.length; k++) {\n this.data[offset++] = appendPathData[k];\n }\n }\n this._len = offset;\n };\n PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) {\n if (!this._saveData) {\n return;\n }\n var data = this.data;\n if (this._len + arguments.length > data.length) {\n this._expandData();\n data = this.data;\n }\n for (var i = 0; i < arguments.length; i++) {\n data[this._len++] = arguments[i];\n }\n };\n PathProxy.prototype._expandData = function () {\n if (!(this.data instanceof Array)) {\n var newData = [];\n for (var i = 0; i < this._len; i++) {\n newData[i] = this.data[i];\n }\n this.data = newData;\n }\n };\n PathProxy.prototype._dashedLineTo = function (x1, y1) {\n var dashSum = this._dashSum;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var offset = this._dashOffset;\n var x0 = this._xi;\n var y0 = this._yi;\n var dx = x1 - x0;\n var dy = y1 - y0;\n var dist = mathSqrt(dx * dx + dy * dy);\n var x = x0;\n var y = y0;\n var nDash = lineDash.length;\n var dash;\n var idx;\n dx /= dist;\n dy /= dist;\n if (offset < 0) {\n offset = dashSum + offset;\n }\n offset %= dashSum;\n x -= offset * dx;\n y -= offset * dy;\n while ((dx > 0 && x <= x1) || (dx < 0 && x >= x1)\n || (dx === 0 && ((dy > 0 && y <= y1) || (dy < 0 && y >= y1)))) {\n idx = this._dashIdx;\n dash = lineDash[idx];\n x += dx * dash;\n y += dy * dash;\n this._dashIdx = (idx + 1) % nDash;\n if ((dx > 0 && x < x0) || (dx < 0 && x > x0) || (dy > 0 && y < y0) || (dy < 0 && y > y0)) {\n continue;\n }\n ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin(x, x1) : mathMax(x, x1), dy >= 0 ? mathMin(y, y1) : mathMax(y, y1));\n }\n dx = x - x1;\n dy = y - y1;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n };\n PathProxy.prototype._dashedBezierTo = function (x1, y1, x2, y2, x3, y3) {\n var ctx = this._ctx;\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var x0 = this._xi;\n var y0 = this._yi;\n var bezierLen = 0;\n var idx = this._dashIdx;\n var nDash = lineDash.length;\n var t;\n var dx;\n var dy;\n var x;\n var y;\n var tmpLen = 0;\n if (offset < 0) {\n offset = dashSum + offset;\n }\n offset %= dashSum;\n for (t = 0; t < 1; t += 0.1) {\n dx = cubicAt(x0, x1, x2, x3, t + 0.1)\n - cubicAt(x0, x1, x2, x3, t);\n dy = cubicAt(y0, y1, y2, y3, t + 0.1)\n - cubicAt(y0, y1, y2, y3, t);\n bezierLen += mathSqrt(dx * dx + dy * dy);\n }\n for (; idx < nDash; idx++) {\n tmpLen += lineDash[idx];\n if (tmpLen > offset) {\n break;\n }\n }\n t = (tmpLen - offset) / bezierLen;\n while (t <= 1) {\n x = cubicAt(x0, x1, x2, x3, t);\n y = cubicAt(y0, y1, y2, y3, t);\n idx % 2 ? ctx.moveTo(x, y)\n : ctx.lineTo(x, y);\n t += lineDash[idx] / bezierLen;\n idx = (idx + 1) % nDash;\n }\n (idx % 2 !== 0) && ctx.lineTo(x3, y3);\n dx = x3 - x;\n dy = y3 - y;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n };\n PathProxy.prototype._dashedQuadraticTo = function (x1, y1, x2, y2) {\n var x3 = x2;\n var y3 = y2;\n x2 = (x2 + 2 * x1) / 3;\n y2 = (y2 + 2 * y1) / 3;\n x1 = (this._xi + 2 * x1) / 3;\n y1 = (this._yi + 2 * y1) / 3;\n this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\n };\n PathProxy.prototype.toStatic = function () {\n if (!this._saveData) {\n return;\n }\n var data = this.data;\n if (data instanceof Array) {\n data.length = this._len;\n if (hasTypedArray && this._len > 11) {\n this.data = new Float32Array(data);\n }\n }\n };\n PathProxy.prototype.getBoundingRect = function () {\n min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n var data = this.data;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var i;\n for (i = 0; i < this._len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n min2[0] = x0;\n min2[1] = y0;\n max2[0] = x0;\n max2[1] = y0;\n break;\n case CMD.L:\n fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.C:\n fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.Q:\n fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n break;\n case CMD.Z:\n xi = x0;\n yi = y0;\n break;\n }\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n }\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n };\n PathProxy.prototype._calculateLength = function () {\n var data = this.data;\n var len = this._len;\n var ux = this._ux;\n var uy = this._uy;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n if (!this._pathSegLen) {\n this._pathSegLen = [];\n }\n var pathSegLen = this._pathSegLen;\n var pathTotalLen = 0;\n var segCount = 0;\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n var l = -1;\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n break;\n case CMD.L: {\n var x2 = data[i++];\n var y2 = data[i++];\n var dx = x2 - xi;\n var dy = y2 - yi;\n if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) {\n l = Math.sqrt(dx * dx + dy * dy);\n xi = x2;\n yi = y2;\n }\n break;\n }\n case CMD.C: {\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n var x3 = data[i++];\n var y3 = data[i++];\n l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);\n xi = x3;\n yi = y3;\n break;\n }\n case CMD.Q: {\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);\n xi = x2;\n yi = y2;\n break;\n }\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var delta = data[i++];\n var endAngle = delta + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n l = mathMax(rx, ry) * mathMin(PI2, Math.abs(delta));\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R: {\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n l = width * 2 + height * 2;\n break;\n }\n case CMD.Z: {\n var dx = x0 - xi;\n var dy = y0 - yi;\n l = Math.sqrt(dx * dx + dy * dy);\n xi = x0;\n yi = y0;\n break;\n }\n }\n if (l >= 0) {\n pathSegLen[segCount++] = l;\n pathTotalLen += l;\n }\n }\n this._pathLen = pathTotalLen;\n return pathTotalLen;\n };\n PathProxy.prototype.rebuildPath = function (ctx, percent) {\n var d = this.data;\n var ux = this._ux;\n var uy = this._uy;\n var len = this._len;\n var x0;\n var y0;\n var xi;\n var yi;\n var x;\n var y;\n var drawPart = percent < 1;\n var pathSegLen;\n var pathTotalLen;\n var accumLength = 0;\n var segCount = 0;\n var displayedLength;\n if (drawPart) {\n if (!this._pathSegLen) {\n this._calculateLength();\n }\n pathSegLen = this._pathSegLen;\n pathTotalLen = this._pathLen;\n displayedLength = percent * pathTotalLen;\n if (!displayedLength) {\n return;\n }\n }\n lo: for (var i = 0; i < len;) {\n var cmd = d[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = d[i];\n yi = d[i + 1];\n x0 = xi;\n y0 = yi;\n }\n switch (cmd) {\n case CMD.M:\n x0 = xi = d[i++];\n y0 = yi = d[i++];\n ctx.moveTo(xi, yi);\n break;\n case CMD.L: {\n x = d[i++];\n y = d[i++];\n if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);\n break lo;\n }\n accumLength += l;\n }\n ctx.lineTo(x, y);\n xi = x;\n yi = y;\n }\n break;\n }\n case CMD.C: {\n var x1 = d[i++];\n var y1 = d[i++];\n var x2 = d[i++];\n var y2 = d[i++];\n var x3 = d[i++];\n var y3 = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);\n cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);\n ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);\n break lo;\n }\n accumLength += l;\n }\n ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n xi = x3;\n yi = y3;\n break;\n }\n case CMD.Q: {\n var x1 = d[i++];\n var y1 = d[i++];\n var x2 = d[i++];\n var y2 = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n quadraticSubdivide(xi, x1, x2, t, tmpOutX);\n quadraticSubdivide(yi, y1, y2, t, tmpOutY);\n ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);\n break lo;\n }\n accumLength += l;\n }\n ctx.quadraticCurveTo(x1, y1, x2, y2);\n xi = x2;\n yi = y2;\n break;\n }\n case CMD.A:\n var cx = d[i++];\n var cy = d[i++];\n var rx = d[i++];\n var ry = d[i++];\n var startAngle = d[i++];\n var delta = d[i++];\n var psi = d[i++];\n var anticlockwise = !d[i++];\n var r = (rx > ry) ? rx : ry;\n var scaleX = (rx > ry) ? 1 : rx / ry;\n var scaleY = (rx > ry) ? ry / rx : 1;\n var isEllipse = mathAbs(rx - ry) > 1e-3;\n var endAngle = startAngle + delta;\n var breakBuild = false;\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n endAngle = startAngle + delta * (displayedLength - accumLength) / l;\n breakBuild = true;\n }\n accumLength += l;\n }\n if (isEllipse && ctx.ellipse) {\n ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);\n }\n else {\n ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n }\n if (breakBuild) {\n break lo;\n }\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = d[i];\n y0 = yi = d[i + 1];\n x = d[i++];\n y = d[i++];\n var width = d[i++];\n var height = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var d_1 = displayedLength - accumLength;\n ctx.moveTo(x, y);\n ctx.lineTo(x + mathMin(d_1, width), y);\n d_1 -= width;\n if (d_1 > 0) {\n ctx.lineTo(x + width, y + mathMin(d_1, height));\n }\n d_1 -= height;\n if (d_1 > 0) {\n ctx.lineTo(x + mathMax(width - d_1, 0), y + height);\n }\n d_1 -= width;\n if (d_1 > 0) {\n ctx.lineTo(x, y + mathMax(height - d_1, 0));\n }\n break lo;\n }\n accumLength += l;\n }\n ctx.rect(x, y, width, height);\n break;\n case CMD.Z:\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);\n break lo;\n }\n accumLength += l;\n }\n ctx.closePath();\n xi = x0;\n yi = y0;\n }\n }\n };\n PathProxy.CMD = CMD;\n PathProxy.initDefaultProps = (function () {\n var proto = PathProxy.prototype;\n proto._saveData = true;\n proto._needsDash = false;\n proto._dashOffset = 0;\n proto._dashIdx = 0;\n proto._dashSum = 0;\n proto._ux = 0;\n proto._uy = 0;\n })();\n return PathProxy;\n}());\nexport default PathProxy;\n"],"sourceRoot":""}