UNPKG

69.2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/js/polyfill.js"],"names":["CLASS_PREFIX","CLASS_DRAG_IMAGE","CLASS_DRAG_IMAGE_SNAPBACK","CLASS_DRAG_OPERATION_ICON","EVENT_PREFIX","EVENT_DRAG_DRAGSTART_PENDING","EVENT_DRAG_DRAGSTART_CANCEL","ALLOWED_EFFECTS","DROP_EFFECTS","detectFeatures","features","dragEvents","document","documentElement","draggable","userAgentSupportingNativeDnD","undefined","isBlinkEngine","window","chrome","test","navigator","userAgent","supportsPassiveEventListener","supportsPassiveEventListeners","opts","Object","defineProperty","get","addEventListener","e","supportsPassive","isDOMElement","object","tagName","addDocumentListener","ev","handler","passive","removeDocumentListener","removeEventListener","onEvt","el","event","capture","options","off","prepareNodeCopyAsDragImage","srcNode","dstNode","nodeType","cs","getComputedStyle","i","length","csName","style","setProperty","getPropertyValue","getPropertyPriority","pointerEvents","removeAttribute","nodeName","canvasSrc","canvasDst","canvasSrcImgData","getContext","getImageData","width","height","putImageData","hasChildNodes","childNodes","createDragImage","sourceNode","dragImage","cloneNode","average","array","reduce","s","v","isTouchIdentifierContainedInTouchEvent","touchEvent","touchIdentifier","changedTouches","touch","identifier","updateCentroidCoordinatesOfTouchesIn","coordinateProp","outPoint","pageXs","pageYs","touches","push","x","y","TRANSFORM_CSS_VENDOR_PREFIXES","extractTransformStyles","map","prefix","transform","replace","translateElementToPoint","element","pnt","originalTransforms","offset","centerOnCoordinates","parseInt","offsetWidth","offsetHeight","translate","transformProp","applyDragImageSnapback","sourceEl","dragImageTransforms","transitionEndCb","visibility","display","console","log","classList","add","csDragImage","durationInS","parseFloat","transitionDuration","isNaN","rect","getBoundingClientRect","left","top","body","scrollLeft","scrollTop","marginLeft","marginTop","delayInS","transitionDelay","durationInMs","Math","round","setTimeout","DataTransfer","_dataStore","_setDragImageHandler","_dropEffect","prototype","set","value","mode","indexOf","enumerable","configurable","freeze","types","effectAllowed","setData","type","data","Error","getData","clearData","format","index","splice","setDragImage","image","tryFindDraggableTarget","target","getAttribute","parentNode","determineDropEffect","createDragEventFromTouch","targetElement","cancelable","dataTransfer","relatedTarget","dndEvent","Event","bubbles","screenX","screenY","clientX","clientY","pageX","pageY","targetRect","offsetX","offsetY","dispatchDragEvent","dragEvent","dataStore","leaveEvt","defaultView","cancelled","dispatchEvent","determineDragOperation","dropEffect","DragOperationController","_initialEvent","_config","_sourceNode","_dragOperationEndedCb","_dragOperationState","_immediateUserSelection","_currentDropTarget","_lastTouchEvent","_initialTouch","_touchMoveHandler","_onTouchMove","bind","_touchEndOrCancelHandler","_onTouchEndOrCancel","_setup","_this","_currentDragOperation","_dragDataStore","_currentHotspotCoordinates","_dragImagePageCoordinates","dragImageSrc","_dataTransfer","_dragImageOffset","_cleanup","dragImageSetup","_dragImageTransforms","position","zIndex","_dragImage","dragImageOffset","dragImageCenterOnTouch","appendChild","_iterationIntervalId","setInterval","_iterationLock","_dragAndDropProcessModelIteration","iterationInterval","clearInterval","removeChild","startDrag","dragStartConditionOverride","error","preventDefault","dragImageTranslateOverride","handledDragImageTranslate_1","previousDragOperation","dragCancelled","dragFailed","_dragOperationEnded","_finishDragOperation","newUserSelection","elementFromPoint","previousTargetElement","remove","currentDragOperationClass","state","config","activeDragOperation","onTouchstart","composePath","dragTarget","dragOperationEnded","err","onDelayTouchstart","evt","composedPath","heldItem","end","cancel","move","scroll","onReleasedItem","CustomEvent","clearTimeout","timer","holdToDrag","defaultActionOverride","defaultPrevented","polyfill","override","keys","forEach","key","forceApply","detectedFeatures","tryFindDraggableTarget_override","cp","o","_path","shadowRoot"],"mappings":";;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;AAwBA,MAAMA,YAAY,GAAG,WAArB;AACA,MAAMC,gBAAgB,GAAGD,YAAY,GAAG,YAAxC;AACA,MAAME,yBAAyB,GAAGF,YAAY,GAAG,UAAjD;AACA,MAAMG,yBAAyB,GAAGH,YAAY,GAAG,MAAjD;AACA,MAAMI,YAAY,GAAG,WAArB;AACA,MAAMC,4BAA4B,GAAGD,YAAY,GAAG,mBAApD;AACA,MAAME,2BAA2B,GAAGF,YAAY,GAAG,kBAAnD;AACA,MAAMG,eAAe,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,UAAjB,EAA6B,UAA7B,EAAyC,MAAzC,EAAiD,UAAjD,EAA6D,MAA7D,EAAqE,KAArE,CAAxB;AACA,MAAMC,YAAY,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,MAAjB,EAAyB,MAAzB,CAArB;;AAEA,SAASC,cAAT,GAA0B;AACtB,QAAMC,QAAQ,GAAG;AACbC,IAAAA,UAAU,EAAE,iBAAiBC,QAAQ,CAACC,eADzB;AAEbC,IAAAA,SAAS,EAAE,eAAeF,QAAQ,CAACC,eAFtB;AAGbE,IAAAA,4BAA4B,EAAEC;AAHjB,GAAjB;AAKA,QAAMC,aAAa,GAAG,CAAC,CAACC,MAAM,CAACC,MAAT,IAAmB,UAAUC,IAAV,CAAeC,SAAS,CAACC,SAAzB,CAAzC;AACAZ,EAAAA,QAAQ,CAACK,4BAAT,GAAwC,EAAE,2BAA2BK,IAA3B,CAAgCC,SAAS,CAACC,SAA1C,KAAyDL,aAAa,IAAI,kBAAkBL,QAAQ,CAACC,eAAvG,CAAxC;AACA,SAAOH,QAAP;AACH;;AACD,SAASa,4BAAT,GAAwC;AACpC,MAAIC,6BAA6B,GAAG,KAApC;;AACA,MAAI;AACA,UAAMC,IAAI,GAAGC,MAAM,CAACC,cAAP,CAAsB,EAAtB,EAA0B,SAA1B,EAAqC;AAC9CC,MAAAA,GAAG,EAAE,YAAW;AACZJ,QAAAA,6BAA6B,GAAG,IAAhC;AACH;AAH6C,KAArC,CAAb;AAKAN,IAAAA,MAAM,CAACW,gBAAP,CAAwB,MAAxB,EAAgC,IAAhC,EAAsCJ,IAAtC;AACH,GAPD,CAOE,OAAOK,CAAP,EAAU,CAAE;;AACd,SAAON,6BAAP;AACH;;AAED,MAAMO,eAAe,GAAGR,4BAA4B,EAApD;;AACA,SAASS,YAAT,CAAsBC,MAAtB,EAA8B;AAC1B,SAAOA,MAAM,IAAIA,MAAM,CAACC,OAAxB;AACH;;AACD,SAASC,mBAAT,CAA6BC,EAA7B,EAAiCC,OAAjC,EAA0CC,OAA1C,EAAmD;AAC/C,MAAIA,OAAO,KAAK,KAAK,CAArB,EAAwB;AACpBA,IAAAA,OAAO,GAAG,IAAV;AACH;;AACD1B,EAAAA,QAAQ,CAACiB,gBAAT,CAA0BO,EAA1B,EAA8BC,OAA9B,EAAuCN,eAAe,GAAG;AAACO,IAAAA,OAAO,EAAEA;AAAV,GAAH,GAAwB,KAA9E;AACH;;AACD,SAASC,sBAAT,CAAgCH,EAAhC,EAAoCC,OAApC,EAA6C;AACzCzB,EAAAA,QAAQ,CAAC4B,mBAAT,CAA6BJ,EAA7B,EAAiCC,OAAjC;AACH;;AACD,SAASI,KAAT,CAAeC,EAAf,EAAmBC,KAAnB,EAA0BN,OAA1B,EAAmCO,OAAnC,EAA4C;AACxC,MAAIA,OAAO,KAAK,KAAK,CAArB,EAAwB;AACpBA,IAAAA,OAAO,GAAG,KAAV;AACH;;AACD,QAAMC,OAAO,GAAGd,eAAe,GAAG;AAACO,IAAAA,OAAO,EAAE,IAAV;AAAgBM,IAAAA,OAAO,EAAEA;AAAzB,GAAH,GAAuCA,OAAtE;AACAF,EAAAA,EAAE,CAACb,gBAAH,CAAoBc,KAApB,EAA2BN,OAA3B,EAAoCQ,OAApC;AACA,SAAO;AACHC,IAAAA,GAAG,EAAE,YAAW;AACZJ,MAAAA,EAAE,CAACF,mBAAH,CAAuBG,KAAvB,EAA8BN,OAA9B,EAAuCQ,OAAvC;AACH;AAHE,GAAP;AAKH;;AACD,SAASE,0BAAT,CAAoCC,OAApC,EAA6CC,OAA7C,EAAsD;AAClD,MAAID,OAAO,CAACE,QAAR,KAAqB,CAAzB,EAA4B;AACxB,UAAMC,EAAE,GAAGC,gBAAgB,CAACJ,OAAD,CAA3B;;AACA,SAAK,IAAIK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,EAAE,CAACG,MAAvB,EAA+BD,CAAC,EAAhC,EAAoC;AAChC,YAAME,MAAM,GAAGJ,EAAE,CAACE,CAAD,CAAjB;AACAJ,MAAAA,OAAO,CAACO,KAAR,CAAcC,WAAd,CAA0BF,MAA1B,EAAkCJ,EAAE,CAACO,gBAAH,CAAoBH,MAApB,CAAlC,EAA+DJ,EAAE,CAACQ,mBAAH,CAAuBJ,MAAvB,CAA/D;AACH;;AACDN,IAAAA,OAAO,CAACO,KAAR,CAAcI,aAAd,GAA8B,MAA9B;AACAX,IAAAA,OAAO,CAACY,eAAR,CAAwB,IAAxB;AACAZ,IAAAA,OAAO,CAACY,eAAR,CAAwB,OAAxB;AACAZ,IAAAA,OAAO,CAACY,eAAR,CAAwB,WAAxB;;AACA,QAAIZ,OAAO,CAACa,QAAR,KAAqB,QAAzB,EAAmC;AAC/B,YAAMC,SAAS,GAAGf,OAAlB;AACA,YAAMgB,SAAS,GAAGf,OAAlB;AACA,YAAMgB,gBAAgB,GAAGF,SAAS,CAACG,UAAV,CAAqB,IAArB,EAA2BC,YAA3B,CAAwC,CAAxC,EAA2C,CAA3C,EAA8CJ,SAAS,CAACK,KAAxD,EAA+DL,SAAS,CAACM,MAAzE,CAAzB;AACAL,MAAAA,SAAS,CAACE,UAAV,CAAqB,IAArB,EAA2BI,YAA3B,CAAwCL,gBAAxC,EAA0D,CAA1D,EAA6D,CAA7D;AACH;AACJ;;AACD,MAAIjB,OAAO,CAACuB,aAAR,EAAJ,EAA6B;AACzB,SAAK,IAAIlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,OAAO,CAACwB,UAAR,CAAmBlB,MAAvC,EAA+CD,CAAC,EAAhD,EAAoD;AAChDN,MAAAA,0BAA0B,CAACC,OAAO,CAACwB,UAAR,CAAmBnB,CAAnB,CAAD,EAAwBJ,OAAO,CAACuB,UAAR,CAAmBnB,CAAnB,CAAxB,CAA1B;AACH;AACJ;AACJ;;AACD,SAASoB,eAAT,CAAyBC,UAAzB,EAAqC;AACjC,QAAMC,SAAS,GAAGD,UAAU,CAACE,SAAX,CAAqB,IAArB,CAAlB;AACA7B,EAAAA,0BAA0B,CAAC2B,UAAD,EAAaC,SAAb,CAA1B;AACA,SAAOA,SAAP;AACH;;AACD,SAASE,OAAT,CAAiBC,KAAjB,EAAwB;AACpB,MAAIA,KAAK,CAACxB,MAAN,KAAiB,CAArB,EAAwB;AACpB,WAAO,CAAP;AACH;;AACD,SACIwB,KAAK,CAACC,MAAN,CAAa,UAASC,CAAT,EAAYC,CAAZ,EAAe;AACxB,WAAOA,CAAC,GAAGD,CAAX;AACH,GAFD,EAEG,CAFH,IAEQF,KAAK,CAACxB,MAHlB;AAKH;;AACD,SAAS4B,sCAAT,CAAgDC,UAAhD,EAA4DC,eAA5D,EAA6E;AACzE,OAAK,IAAI/B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8B,UAAU,CAACE,cAAX,CAA0B/B,MAA9C,EAAsDD,CAAC,EAAvD,EAA2D;AACvD,UAAMiC,KAAK,GAAGH,UAAU,CAACE,cAAX,CAA0BhC,CAA1B,CAAd;;AACA,QAAIiC,KAAK,CAACC,UAAN,KAAqBH,eAAzB,EAA0C;AACtC,aAAO,IAAP;AACH;AACJ;;AACD,SAAO,KAAP;AACH;;AACD,SAASI,oCAAT,CAA8CC,cAA9C,EAA8D9C,KAA9D,EAAqE+C,QAArE,EAA+E;AAC3E,QAAMC,MAAM,GAAG,EAAf;AAAA,QACIC,MAAM,GAAG,EADb;;AAEA,OAAK,IAAIvC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGV,KAAK,CAACkD,OAAN,CAAcvC,MAAlC,EAA0CD,CAAC,EAA3C,EAA+C;AAC3C,UAAMiC,KAAK,GAAG3C,KAAK,CAACkD,OAAN,CAAcxC,CAAd,CAAd;AACAsC,IAAAA,MAAM,CAACG,IAAP,CAAYR,KAAK,CAACG,cAAc,GAAG,GAAlB,CAAjB;AACAG,IAAAA,MAAM,CAACE,IAAP,CAAYR,KAAK,CAACG,cAAc,GAAG,GAAlB,CAAjB;AACH;;AACDC,EAAAA,QAAQ,CAACK,CAAT,GAAalB,OAAO,CAACc,MAAD,CAApB;AACAD,EAAAA,QAAQ,CAACM,CAAT,GAAanB,OAAO,CAACe,MAAD,CAApB;AACH;;AACD,MAAMK,6BAA6B,GAAG,CAAC,EAAD,EAAK,UAAL,CAAtC;;AACA,SAASC,sBAAT,CAAgCxB,UAAhC,EAA4C;AACxC,SAAOuB,6BAA6B,CAACE,GAA9B,CAAkC,UAASC,MAAT,EAAiB;AACtD,UAAMC,SAAS,GAAG3B,UAAU,CAAClB,KAAX,CAAiB4C,MAAM,GAAG,WAA1B,CAAlB;;AACA,QAAI,CAACC,SAAD,IAAcA,SAAS,KAAK,MAAhC,EAAwC;AACpC,aAAO,EAAP;AACH;;AACD,WAAOA,SAAS,CAACC,OAAV,CAAkB,0CAAlB,EAA8D,EAA9D,CAAP;AACH,GANM,CAAP;AAOH;;AACD,SAASC,uBAAT,CAAiCC,OAAjC,EAA0CC,GAA1C,EAA+CC,kBAA/C,EAAmEC,MAAnE,EAA2EC,mBAA3E,EAAgG;AAC5F,MAAIA,mBAAmB,KAAK,KAAK,CAAjC,EAAoC;AAChCA,IAAAA,mBAAmB,GAAG,IAAtB;AACH;;AACD,MAAIb,CAAC,GAAGU,GAAG,CAACV,CAAZ;AAAA,MACIC,CAAC,GAAGS,GAAG,CAACT,CADZ;;AAEA,MAAIW,MAAJ,EAAY;AACRZ,IAAAA,CAAC,IAAIY,MAAM,CAACZ,CAAZ;AACAC,IAAAA,CAAC,IAAIW,MAAM,CAACX,CAAZ;AACH;;AACD,MAAIY,mBAAJ,EAAyB;AACrBb,IAAAA,CAAC,IAAIc,QAAQ,CAACL,OAAO,CAACM,WAAT,EAAsB,EAAtB,CAAR,GAAoC,CAAzC;AACAd,IAAAA,CAAC,IAAIa,QAAQ,CAACL,OAAO,CAACO,YAAT,EAAuB,EAAvB,CAAR,GAAqC,CAA1C;AACH;;AACD,QAAMC,SAAS,GAAG,iBAAiBjB,CAAjB,GAAqB,KAArB,GAA6BC,CAA7B,GAAiC,QAAnD;;AACA,OAAK,IAAI3C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4C,6BAA6B,CAAC3C,MAAlD,EAA0DD,CAAC,EAA3D,EAA+D;AAC3D,UAAM4D,aAAa,GAAGhB,6BAA6B,CAAC5C,CAAD,CAA7B,GAAmC,WAAzD;AACAmD,IAAAA,OAAO,CAAChD,KAAR,CAAcyD,aAAd,IAA+BD,SAAS,GAAG,GAAZ,GAAkBN,kBAAkB,CAACrD,CAAD,CAAnE;AACH;AACJ;;AACD,SAAS6D,sBAAT,CAAgCC,QAAhC,EAA0CxC,SAA1C,EAAqDyC,mBAArD,EAA0EC,eAA1E,EAA2F;AACvF,QAAMlE,EAAE,GAAGC,gBAAgB,CAAC+D,QAAD,CAA3B;;AACA,MAAIhE,EAAE,CAACmE,UAAH,KAAkB,QAAlB,IAA8BnE,EAAE,CAACoE,OAAH,KAAe,MAAjD,EAAyD;AACrDC,IAAAA,OAAO,CAACC,GAAR,CAAY,qEAAZ;AACAJ,IAAAA,eAAe;AACf;AACH;;AACD1C,EAAAA,SAAS,CAAC+C,SAAV,CAAoBC,GAApB,CAAwBzH,yBAAxB;AACA,QAAM0H,WAAW,GAAGxE,gBAAgB,CAACuB,SAAD,CAApC;AACA,QAAMkD,WAAW,GAAGC,UAAU,CAACF,WAAW,CAACG,kBAAb,CAA9B;;AACA,MAAIC,KAAK,CAACH,WAAD,CAAL,IAAsBA,WAAW,KAAK,CAA1C,EAA6C;AACzCL,IAAAA,OAAO,CAACC,GAAR,CAAY,kDAAZ;AACAJ,IAAAA,eAAe;AACf;AACH;;AACDG,EAAAA,OAAO,CAACC,GAAR,CAAY,wCAAZ;AACA,QAAMQ,IAAI,GAAGd,QAAQ,CAACe,qBAAT,EAAb;AACA,QAAMzB,GAAG,GAAG;AACRV,IAAAA,CAAC,EAAEkC,IAAI,CAACE,IADA;AAERnC,IAAAA,CAAC,EAAEiC,IAAI,CAACG;AAFA,GAAZ;AAIA3B,EAAAA,GAAG,CAACV,CAAJ,IAASnF,QAAQ,CAACyH,IAAT,CAAcC,UAAd,IAA4B1H,QAAQ,CAACC,eAAT,CAAyByH,UAA9D;AACA7B,EAAAA,GAAG,CAACT,CAAJ,IAASpF,QAAQ,CAACyH,IAAT,CAAcE,SAAd,IAA2B3H,QAAQ,CAACC,eAAT,CAAyB0H,SAA7D;AACA9B,EAAAA,GAAG,CAACV,CAAJ,IAASc,QAAQ,CAAC1D,EAAE,CAACqF,UAAJ,EAAgB,EAAhB,CAAjB;AACA/B,EAAAA,GAAG,CAACT,CAAJ,IAASa,QAAQ,CAAC1D,EAAE,CAACsF,SAAJ,EAAe,EAAf,CAAjB;AACA,QAAMC,QAAQ,GAAGZ,UAAU,CAACF,WAAW,CAACe,eAAb,CAA3B;AACA,QAAMC,YAAY,GAAGC,IAAI,CAACC,KAAL,CAAW,CAACjB,WAAW,GAAGa,QAAf,IAA2B,IAAtC,CAArB;AACAnC,EAAAA,uBAAuB,CAAC5B,SAAD,EAAY8B,GAAZ,EAAiBW,mBAAjB,EAAsCpG,SAAtC,EAAiD,KAAjD,CAAvB;AACA+H,EAAAA,UAAU,CAAC1B,eAAD,EAAkBuB,YAAlB,CAAV;AACH;;AAED,MAAMI,YAAY,GAAI,YAAW;AAC7B,WAASA,YAAT,CAAsBC,UAAtB,EAAkCC,oBAAlC,EAAwD;AACpD,SAAKD,UAAL,GAAkBA,UAAlB;AACA,SAAKC,oBAAL,GAA4BA,oBAA5B;AACA,SAAKC,WAAL,GAAmB3I,YAAY,CAAC,CAAD,CAA/B;AACH;;AACDkB,EAAAA,MAAM,CAACC,cAAP,CAAsBqH,YAAY,CAACI,SAAnC,EAA8C,YAA9C,EAA4D;AACxDxH,IAAAA,GAAG,EAAE,YAAW;AACZ,aAAO,KAAKuH,WAAZ;AACH,KAHuD;AAIxDE,IAAAA,GAAG,EAAE,UAASC,KAAT,EAAgB;AACjB,UAAI,KAAKL,UAAL,CAAgBM,IAAhB,KAAyB,CAAzB,IAA8BhJ,eAAe,CAACiJ,OAAhB,CAAwBF,KAAxB,IAAiC,CAAC,CAApE,EAAuE;AACnE,aAAKH,WAAL,GAAmBG,KAAnB;AACH;AACJ,KARuD;AASxDG,IAAAA,UAAU,EAAE,IAT4C;AAUxDC,IAAAA,YAAY,EAAE;AAV0C,GAA5D;AAYAhI,EAAAA,MAAM,CAACC,cAAP,CAAsBqH,YAAY,CAACI,SAAnC,EAA8C,OAA9C,EAAuD;AACnDxH,IAAAA,GAAG,EAAE,YAAW;AACZ,UAAI,KAAKqH,UAAL,CAAgBM,IAAhB,KAAyB,CAA7B,EAAgC;AAC5B,eAAO7H,MAAM,CAACiI,MAAP,CAAc,KAAKV,UAAL,CAAgBW,KAA9B,CAAP;AACH;AACJ,KALkD;AAMnDH,IAAAA,UAAU,EAAE,IANuC;AAOnDC,IAAAA,YAAY,EAAE;AAPqC,GAAvD;AASAhI,EAAAA,MAAM,CAACC,cAAP,CAAsBqH,YAAY,CAACI,SAAnC,EAA8C,eAA9C,EAA+D;AAC3DxH,IAAAA,GAAG,EAAE,YAAW;AACZ,aAAO,KAAKqH,UAAL,CAAgBY,aAAvB;AACH,KAH0D;AAI3DR,IAAAA,GAAG,EAAE,UAASC,KAAT,EAAgB;AACjB,UAAI,KAAKL,UAAL,CAAgBM,IAAhB,KAAyB,CAAzB,IAA8BhJ,eAAe,CAACiJ,OAAhB,CAAwBF,KAAxB,IAAiC,CAAC,CAApE,EAAuE;AACnE,aAAKL,UAAL,CAAgBY,aAAhB,GAAgCP,KAAhC;AACH;AACJ,KAR0D;AAS3DG,IAAAA,UAAU,EAAE,IAT+C;AAU3DC,IAAAA,YAAY,EAAE;AAV6C,GAA/D;;AAYAV,EAAAA,YAAY,CAACI,SAAb,CAAuBU,OAAvB,GAAiC,UAASC,IAAT,EAAeC,IAAf,EAAqB;AAClD,QAAI,KAAKf,UAAL,CAAgBM,IAAhB,KAAyB,CAA7B,EAAgC;AAC5B,UAAIQ,IAAI,CAACP,OAAL,CAAa,GAAb,IAAoB,CAAC,CAAzB,EAA4B;AACxB,cAAM,IAAIS,KAAJ,CAAU,kCAAV,CAAN;AACH;;AACD,WAAKhB,UAAL,CAAgBe,IAAhB,CAAqBD,IAArB,IAA6BC,IAA7B;;AACA,UAAI,KAAKf,UAAL,CAAgBW,KAAhB,CAAsBJ,OAAtB,CAA8BO,IAA9B,MAAwC,CAAC,CAA7C,EAAgD;AAC5C,aAAKd,UAAL,CAAgBW,KAAhB,CAAsB9D,IAAtB,CAA2BiE,IAA3B;AACH;AACJ;AACJ,GAVD;;AAWAf,EAAAA,YAAY,CAACI,SAAb,CAAuBc,OAAvB,GAAiC,UAASH,IAAT,EAAe;AAC5C,QAAI,KAAKd,UAAL,CAAgBM,IAAhB,KAAyB,CAAzB,IAA8B,KAAKN,UAAL,CAAgBM,IAAhB,KAAyB,CAA3D,EAA8D;AAC1D,aAAO,KAAKN,UAAL,CAAgBe,IAAhB,CAAqBD,IAArB,KAA8B,EAArC;AACH;AACJ,GAJD;;AAKAf,EAAAA,YAAY,CAACI,SAAb,CAAuBe,SAAvB,GAAmC,UAASC,MAAT,EAAiB;AAChD,QAAI,KAAKnB,UAAL,CAAgBM,IAAhB,KAAyB,CAA7B,EAAgC;AAC5B,UAAIa,MAAM,IAAI,KAAKnB,UAAL,CAAgBe,IAAhB,CAAqBI,MAArB,CAAd,EAA4C;AACxC,eAAO,KAAKnB,UAAL,CAAgBe,IAAhB,CAAqBI,MAArB,CAAP;;AACA,cAAMC,KAAK,GAAG,KAAKpB,UAAL,CAAgBW,KAAhB,CAAsBJ,OAAtB,CAA8BY,MAA9B,CAAd;;AACA,YAAIC,KAAK,GAAG,CAAC,CAAb,EAAgB;AACZ,eAAKpB,UAAL,CAAgBW,KAAhB,CAAsBU,MAAtB,CAA6BD,KAA7B,EAAoC,CAApC;AACH;;AACD;AACH;;AACD,WAAKpB,UAAL,CAAgBe,IAAhB,GAAuB,EAAvB;AACA,WAAKf,UAAL,CAAgBW,KAAhB,GAAwB,EAAxB;AACH;AACJ,GAbD;;AAcAZ,EAAAA,YAAY,CAACI,SAAb,CAAuBmB,YAAvB,GAAsC,UAASC,KAAT,EAAgBzE,CAAhB,EAAmBC,CAAnB,EAAsB;AACxD,QAAI,KAAKiD,UAAL,CAAgBM,IAAhB,KAAyB,CAA7B,EAAgC;AAC5B,WAAKL,oBAAL,CAA0BsB,KAA1B,EAAiCzE,CAAjC,EAAoCC,CAApC;AACH;AACJ,GAJD;;AAKA,SAAOgD,YAAP;AACH,CA3EoB,EAArB;;AA6EA,SAASyB,sBAAT,CAAgC9H,KAAhC,EAAuC;AACnC,MAAID,EAAE,GAAGC,KAAK,CAAC+H,MAAf;;AACA,KAAG;AACC,QAAIhI,EAAE,CAAC5B,SAAH,KAAiB,KAArB,EAA4B;AACxB;AACH;;AACD,QAAI4B,EAAE,CAAC5B,SAAH,KAAiB,IAArB,EAA2B;AACvB,aAAO4B,EAAP;AACH;;AACD,QAAIA,EAAE,CAACiI,YAAH,IAAmBjI,EAAE,CAACiI,YAAH,CAAgB,WAAhB,MAAiC,MAAxD,EAAgE;AAC5D,aAAOjI,EAAP;AACH;AACJ,GAVD,QAUS,CAACA,EAAE,GAAGA,EAAE,CAACkI,UAAT,KAAwBlI,EAAE,KAAK9B,QAAQ,CAACyH,IAVjD;AAWH;;AACD,SAASwC,mBAAT,CAA6BhB,aAA7B,EAA4CnF,UAA5C,EAAwD;AACpD,MAAI,CAACmF,aAAL,EAAoB;AAChB,QAAInF,UAAU,CAACxB,QAAX,KAAwB,CAAxB,IAA6BwB,UAAU,CAACxC,OAAX,KAAuB,GAAxD,EAA6D;AACzD,aAAO1B,YAAY,CAAC,CAAD,CAAnB;AACH;;AACD,WAAOA,YAAY,CAAC,CAAD,CAAnB;AACH;;AACD,MAAIqJ,aAAa,KAAKtJ,eAAe,CAAC,CAAD,CAArC,EAA0C;AACtC,WAAOC,YAAY,CAAC,CAAD,CAAnB;AACH;;AACD,MAAIqJ,aAAa,CAACL,OAAd,CAAsBjJ,eAAe,CAAC,CAAD,CAArC,MAA8C,CAA9C,IAAmDsJ,aAAa,KAAKtJ,eAAe,CAAC,CAAD,CAAxF,EAA6F;AACzF,WAAOC,YAAY,CAAC,CAAD,CAAnB;AACH;;AACD,MAAIqJ,aAAa,CAACL,OAAd,CAAsBjJ,eAAe,CAAC,CAAD,CAArC,MAA8C,CAAlD,EAAqD;AACjD,WAAOC,YAAY,CAAC,CAAD,CAAnB;AACH;;AACD,MAAIqJ,aAAa,KAAKtJ,eAAe,CAAC,CAAD,CAArC,EAA0C;AACtC,WAAOC,YAAY,CAAC,CAAD,CAAnB;AACH;;AACD,SAAOA,YAAY,CAAC,CAAD,CAAnB;AACH;;AACD,SAASsK,wBAAT,CAAkCC,aAAlC,EAAiDjJ,CAAjD,EAAoDiI,IAApD,EAA0DiB,UAA1D,EAAsE9J,MAAtE,EAA8E+J,YAA9E,EAA4FC,aAA5F,EAA2G;AACvG,MAAIA,aAAa,KAAK,KAAK,CAA3B,EAA8B;AAC1BA,IAAAA,aAAa,GAAG,IAAhB;AACH;;AACD,QAAM5F,KAAK,GAAGxD,CAAC,CAACuD,cAAF,CAAiB,CAAjB,CAAd;AACA,QAAM8F,QAAQ,GAAG,IAAIC,KAAJ,CAAUrB,IAAV,EAAgB;AAC7BsB,IAAAA,OAAO,EAAE,IADoB;AAE7BL,IAAAA,UAAU,EAAEA;AAFiB,GAAhB,CAAjB;AAIAG,EAAAA,QAAQ,CAACF,YAAT,GAAwBA,YAAxB;AACAE,EAAAA,QAAQ,CAACD,aAAT,GAAyBA,aAAzB;AACAC,EAAAA,QAAQ,CAACG,OAAT,GAAmBhG,KAAK,CAACgG,OAAzB;AACAH,EAAAA,QAAQ,CAACI,OAAT,GAAmBjG,KAAK,CAACiG,OAAzB;AACAJ,EAAAA,QAAQ,CAACK,OAAT,GAAmBlG,KAAK,CAACkG,OAAzB;AACAL,EAAAA,QAAQ,CAACM,OAAT,GAAmBnG,KAAK,CAACmG,OAAzB;AACAN,EAAAA,QAAQ,CAACO,KAAT,GAAiBpG,KAAK,CAACoG,KAAvB;AACAP,EAAAA,QAAQ,CAACQ,KAAT,GAAiBrG,KAAK,CAACqG,KAAvB;AACA,QAAMC,UAAU,GAAGb,aAAa,CAAC7C,qBAAd,EAAnB;AACAiD,EAAAA,QAAQ,CAACU,OAAT,GAAmBV,QAAQ,CAACK,OAAT,GAAmBI,UAAU,CAACzD,IAAjD;AACAgD,EAAAA,QAAQ,CAACW,OAAT,GAAmBX,QAAQ,CAACM,OAAT,GAAmBG,UAAU,CAACxD,GAAjD;AACA,SAAO+C,QAAP;AACH;;AACD,SAASY,iBAAT,CAA2BC,SAA3B,EAAsCjB,aAAtC,EAAqD5F,UAArD,EAAiE8G,SAAjE,EAA4EhB,YAA5E,EAA0FD,UAA1F,EAAsGE,aAAtG,EAAqH;AACjH,MAAIF,UAAU,KAAK,KAAK,CAAxB,EAA2B;AACvBA,IAAAA,UAAU,GAAG,IAAb;AACH;;AACD,MAAIE,aAAa,KAAK,KAAK,CAA3B,EAA8B;AAC1BA,IAAAA,aAAa,GAAG,IAAhB;AACH;;AACD1D,EAAAA,OAAO,CAACC,GAAR,CAAY,2BAA2BuE,SAAvC;AACA,QAAME,QAAQ,GAAGpB,wBAAwB,CAACC,aAAD,EAAgB5F,UAAhB,EAA4B6G,SAA5B,EAAuChB,UAAvC,EAAmDpK,QAAQ,CAACuL,WAA5D,EAAyElB,YAAzE,EAAuFC,aAAvF,CAAzC;AACA,QAAMkB,SAAS,GAAG,CAACrB,aAAa,CAACsB,aAAd,CAA4BH,QAA5B,CAAnB;AACAD,EAAAA,SAAS,CAAC1C,IAAV,GAAiB,CAAjB;AACA,SAAO6C,SAAP;AACH;;AACD,SAASE,sBAAT,CAAgCzC,aAAhC,EAA+C0C,UAA/C,EAA2D;AACvD,MAAI,CAAC1C,aAAD,IAAkBA,aAAa,KAAKtJ,eAAe,CAAC,CAAD,CAAvD,EAA4D;AACxD,WAAOgM,UAAP;AACH;;AACD,MAAIA,UAAU,KAAK/L,YAAY,CAAC,CAAD,CAA/B,EAAoC;AAChC,QAAIqJ,aAAa,CAACL,OAAd,CAAsBhJ,YAAY,CAAC,CAAD,CAAlC,MAA2C,CAA/C,EAAkD;AAC9C,aAAOA,YAAY,CAAC,CAAD,CAAnB;AACH;AACJ,GAJD,MAIO,IAAI+L,UAAU,KAAK/L,YAAY,CAAC,CAAD,CAA/B,EAAoC;AACvC,QAAIqJ,aAAa,CAACL,OAAd,CAAsBhJ,YAAY,CAAC,CAAD,CAAlC,MAA2C,CAA3C,IAAgDqJ,aAAa,CAACL,OAAd,CAAsB,MAAtB,IAAgC,CAAC,CAArF,EAAwF;AACpF,aAAOhJ,YAAY,CAAC,CAAD,CAAnB;AACH;AACJ,GAJM,MAIA,IAAI+L,UAAU,KAAK/L,YAAY,CAAC,CAAD,CAA/B,EAAoC;AACvC,QAAIqJ,aAAa,CAACL,OAAd,CAAsBhJ,YAAY,CAAC,CAAD,CAAlC,MAA2C,CAA3C,IAAgDqJ,aAAa,CAACL,OAAd,CAAsB,MAAtB,IAAgC,CAAC,CAArF,EAAwF;AACpF,aAAOhJ,YAAY,CAAC,CAAD,CAAnB;AACH;AACJ;;AACD,SAAOA,YAAY,CAAC,CAAD,CAAnB;AACH;;AAED,MAAMgM,uBAAuB,GAAI,YAAW;AACxC,WAASA,uBAAT,CAAiCC,aAAjC,EAAgDC,OAAhD,EAAyDC,WAAzD,EAAsEC,qBAAtE,EAA6F;AACzF,SAAKH,aAAL,GAAqBA,aAArB;AACA,SAAKC,OAAL,GAAeA,OAAf;AACA,SAAKC,WAAL,GAAmBA,WAAnB;AACA,SAAKC,qBAAL,GAA6BA,qBAA7B;AACA,SAAKC,mBAAL,GAA2B,CAA3B;AACA,SAAKC,uBAAL,GAA+B,IAA/B;AACA,SAAKC,kBAAL,GAA0B,IAA1B;AACAvF,IAAAA,OAAO,CAACC,GAAR,CAAY,iDAAZ;AACA,SAAKuF,eAAL,GAAuBP,aAAvB;AACA,SAAKQ,aAAL,GAAqBR,aAAa,CAACpH,cAAd,CAA6B,CAA7B,CAArB;AACA,SAAK6H,iBAAL,GAAyB,KAAKC,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAAzB;AACA,SAAKC,wBAAL,GAAgC,KAAKC,mBAAL,CAAyBF,IAAzB,CAA8B,IAA9B,CAAhC;AACAjL,IAAAA,mBAAmB,CAAC,WAAD,EAAc,KAAK+K,iBAAnB,EAAsC,KAAtC,CAAnB;AACA/K,IAAAA,mBAAmB,CAAC,UAAD,EAAa,KAAKkL,wBAAlB,EAA4C,KAA5C,CAAnB;AACAlL,IAAAA,mBAAmB,CAAC,aAAD,EAAgB,KAAKkL,wBAArB,EAA+C,KAA/C,CAAnB;AACH;;AACDb,EAAAA,uBAAuB,CAACpD,SAAxB,CAAkCmE,MAAlC,GAA2C,YAAW;AAClD,UAAMC,KAAK,GAAG,IAAd;;AACAhG,IAAAA,OAAO,CAACC,GAAR,CAAY,4CAAZ;AACA,SAAKoF,mBAAL,GAA2B,CAA3B;AACA,SAAKY,qBAAL,GAA6BjN,YAAY,CAAC,CAAD,CAAzC;AACA,SAAKkN,cAAL,GAAsB;AAClB1D,MAAAA,IAAI,EAAE,EADY;AAElBH,MAAAA,aAAa,EAAE7I,SAFG;AAGlBuI,MAAAA,IAAI,EAAE,CAHY;AAIlBK,MAAAA,KAAK,EAAE;AAJW,KAAtB;AAMA,SAAK+D,0BAAL,GAAkC;AAC9B5H,MAAAA,CAAC,EAAE,IAD2B;AAE9BC,MAAAA,CAAC,EAAE;AAF2B,KAAlC;AAIA,SAAK4H,yBAAL,GAAiC;AAC7B7H,MAAAA,CAAC,EAAE,IAD0B;AAE7BC,MAAAA,CAAC,EAAE;AAF0B,KAAjC;AAIA,QAAI6H,YAAY,GAAG,KAAKlB,WAAxB;AACA,SAAKmB,aAAL,GAAqB,IAAI9E,YAAJ,CAAiB,KAAK0E,cAAtB,EAAsC,UAASlH,OAAT,EAAkBT,CAAlB,EAAqBC,CAArB,EAAwB;AAC/E6H,MAAAA,YAAY,GAAGrH,OAAf;;AACA,UAAI,OAAOT,CAAP,KAAa,QAAb,IAAyB,OAAOC,CAAP,KAAa,QAA1C,EAAoD;AAChDwH,QAAAA,KAAK,CAACO,gBAAN,GAAyB;AACrBhI,UAAAA,CAAC,EAAEA,CAAC,IAAI,CADa;AAErBC,UAAAA,CAAC,EAAEA,CAAC,IAAI;AAFa,SAAzB;AAIH;AACJ,KARoB,CAArB;AASA,SAAK0H,cAAL,CAAoBnE,IAApB,GAA2B,CAA3B;AACA,SAAKuE,aAAL,CAAmBvB,UAAnB,GAAgC/L,YAAY,CAAC,CAAD,CAA5C;;AACA,QAAIuL,iBAAiB,CAAC,WAAD,EAAc,KAAKY,WAAnB,EAAgC,KAAKK,eAArC,EAAsD,KAAKU,cAA3D,EAA2E,KAAKI,aAAhF,CAArB,EAAqH;AACjHtG,MAAAA,OAAO,CAACC,GAAR,CAAY,+BAAZ;AACA,WAAKoF,mBAAL,GAA2B,CAA3B;;AACA,WAAKmB,QAAL;;AACA,aAAO,KAAP;AACH;;AACDxI,IAAAA,oCAAoC,CAAC,MAAD,EAAS,KAAKwH,eAAd,EAA+B,KAAKY,yBAApC,CAApC;;AACA,UAAMjJ,SAAS,GAAG,KAAK+H,OAAL,CAAauB,cAAb,CAA4BJ,YAA5B,CAAlB;;AACA,SAAKK,oBAAL,GAA4BhI,sBAAsB,CAACvB,SAAD,CAAlD;AACAA,IAAAA,SAAS,CAACnB,KAAV,CAAgB2K,QAAhB,GAA2B,UAA3B;AACAxJ,IAAAA,SAAS,CAACnB,KAAV,CAAgB2E,IAAhB,GAAuB,KAAvB;AACAxD,IAAAA,SAAS,CAACnB,KAAV,CAAgB4E,GAAhB,GAAsB,KAAtB;AACAzD,IAAAA,SAAS,CAACnB,KAAV,CAAgB4K,MAAhB,GAAyB,QAAzB;AACAzJ,IAAAA,SAAS,CAAC+C,SAAV,CAAoBC,GAApB,CAAwB1H,gBAAxB;AACA0E,IAAAA,SAAS,CAAC+C,SAAV,CAAoBC,GAApB,CAAwBxH,yBAAxB;AACA,SAAKkO,UAAL,GAAkB1J,SAAlB;;AACA,QAAI,CAAC,KAAKoJ,gBAAV,EAA4B;AACxB,UAAI,KAAKrB,OAAL,CAAa4B,eAAjB,EAAkC;AAC9B,aAAKP,gBAAL,GAAwB;AACpBhI,UAAAA,CAAC,EAAE,KAAK2G,OAAL,CAAa4B,eAAb,CAA6BvI,CADZ;AAEpBC,UAAAA,CAAC,EAAE,KAAK0G,OAAL,CAAa4B,eAAb,CAA6BtI;AAFZ,SAAxB;AAIH,OALD,MAKO,IAAI,KAAK0G,OAAL,CAAa6B,sBAAjB,EAAyC;AAC5C,cAAMpL,EAAE,GAAGC,gBAAgB,CAACyK,YAAD,CAA3B;AACA,aAAKE,gBAAL,GAAwB;AACpBhI,UAAAA,CAAC,EAAE,IAAIc,QAAQ,CAAC1D,EAAE,CAACqF,UAAJ,EAAgB,EAAhB,CADK;AAEpBxC,UAAAA,CAAC,EAAE,IAAIa,QAAQ,CAAC1D,EAAE,CAACsF,SAAJ,EAAe,EAAf;AAFK,SAAxB;AAIH,OANM,MAMA;AACH,cAAMmD,UAAU,GAAGiC,YAAY,CAAC3F,qBAAb,EAAnB;AACA,cAAM/E,EAAE,GAAGC,gBAAgB,CAACyK,YAAD,CAA3B;AACA,aAAKE,gBAAL,GAAwB;AACpBhI,UAAAA,CAAC,EAAE6F,UAAU,CAACzD,IAAX,GAAkB,KAAK8E,aAAL,CAAmBzB,OAArC,GAA+C3E,QAAQ,CAAC1D,EAAE,CAACqF,UAAJ,EAAgB,EAAhB,CAAvD,GAA6EoD,UAAU,CAACxH,KAAX,GAAmB,CAD/E;AAEpB4B,UAAAA,CAAC,EAAE4F,UAAU,CAACxD,GAAX,GAAiB,KAAK6E,aAAL,CAAmBxB,OAApC,GAA8C5E,QAAQ,CAAC1D,EAAE,CAACsF,SAAJ,EAAe,EAAf,CAAtD,GAA2EmD,UAAU,CAACvH,MAAX,GAAoB;AAF9E,SAAxB;AAIH;AACJ;;AACDkC,IAAAA,uBAAuB,CAAC,KAAK8H,UAAN,EAAkB,KAAKT,yBAAvB,EAAkD,KAAKM,oBAAvD,EAA6E,KAAKH,gBAAlF,EAAoG,KAAKrB,OAAL,CAAa6B,sBAAjH,CAAvB;AACA3N,IAAAA,QAAQ,CAACyH,IAAT,CAAcmG,WAAd,CAA0B,KAAKH,UAA/B;AACA,SAAKI,oBAAL,GAA4BvN,MAAM,CAACwN,WAAP,CAAmB,YAAW;AACtD,UAAIlB,KAAK,CAACmB,cAAV,EAA0B;AACtBnH,QAAAA,OAAO,CAACC,GAAR,CAAY,+EAAZ;AACA;AACH;;AACD+F,MAAAA,KAAK,CAACmB,cAAN,GAAuB,IAAvB;;AACAnB,MAAAA,KAAK,CAACoB,iCAAN;;AACApB,MAAAA,KAAK,CAACmB,cAAN,GAAuB,KAAvB;AACH,KAR2B,EAQzB,KAAKjC,OAAL,CAAamC,iBARY,CAA5B;AASA,WAAO,IAAP;AACH,GAhFD;;AAiFArC,EAAAA,uBAAuB,CAACpD,SAAxB,CAAkC4E,QAAlC,GAA6C,YAAW;AACpDxG,IAAAA,OAAO,CAACC,GAAR,CAAY,mBAAZ;;AACA,QAAI,KAAKgH,oBAAT,EAA+B;AAC3BK,MAAAA,aAAa,CAAC,KAAKL,oBAAN,CAAb;AACA,WAAKA,oBAAL,GAA4B,IAA5B;AACH;;AACDlM,IAAAA,sBAAsB,CAAC,WAAD,EAAc,KAAK2K,iBAAnB,CAAtB;AACA3K,IAAAA,sBAAsB,CAAC,UAAD,EAAa,KAAK8K,wBAAlB,CAAtB;AACA9K,IAAAA,sBAAsB,CAAC,aAAD,EAAgB,KAAK8K,wBAArB,CAAtB;;AACA,QAAI,KAAKgB,UAAT,EAAqB;AACjB,WAAKA,UAAL,CAAgBzD,UAAhB,CAA2BmE,WAA3B,CAAuC,KAAKV,UAA5C;;AACA,WAAKA,UAAL,GAAkB,IAAlB;AACH;;AACD,SAAKzB,qBAAL,CAA2B,KAAKF,OAAhC,EAAyC,KAAKM,eAA9C,EAA+D,KAAKH,mBAApE;AACH,GAdD;;AAeAL,EAAAA,uBAAuB,CAACpD,SAAxB,CAAkC+D,YAAlC,GAAiD,UAASxK,KAAT,EAAgB;AAC7D,UAAM6K,KAAK,GAAG,IAAd;;AACA,QAAItI,sCAAsC,CAACvC,KAAD,EAAQ,KAAKsK,aAAL,CAAmB1H,UAA3B,CAAtC,KAAiF,KAArF,EAA4F;AACxF;AACH;;AACD,SAAKyH,eAAL,GAAuBrK,KAAvB;;AACA,QAAI,KAAKkK,mBAAL,KAA6B,CAAjC,EAAoC;AAChC,UAAImC,SAAS,GAAG,KAAK,CAArB;;AACA,UAAI,KAAKtC,OAAL,CAAauC,0BAAjB,EAA6C;AACzC,YAAI;AACAD,UAAAA,SAAS,GAAG,KAAKtC,OAAL,CAAauC,0BAAb,CAAwCtM,KAAxC,CAAZ;AACH,SAFD,CAEE,OAAOb,CAAP,EAAU;AACR0F,UAAAA,OAAO,CAAC0H,KAAR,CAAc,yDAAyDpN,CAAvE;AACAkN,UAAAA,SAAS,GAAG,KAAZ;AACH;AACJ,OAPD,MAOO;AACHA,QAAAA,SAAS,GAAGrM,KAAK,CAACkD,OAAN,CAAcvC,MAAd,KAAyB,CAArC;AACH;;AACD,UAAI,CAAC0L,SAAL,EAAgB;AACZ,aAAKhB,QAAL;;AACA;AACH;;AACD,UAAI,KAAKT,MAAL,OAAkB,IAAtB,EAA4B;AACxB,aAAKd,aAAL,CAAmB0C,cAAnB;;AACAxM,QAAAA,KAAK,CAACwM,cAAN;AACH;;AACD;AACH;;AACD3H,IAAAA,OAAO,CAACC,GAAR,CAAY,8BAAZ;AACA9E,IAAAA,KAAK,CAACwM,cAAN;AACA3J,IAAAA,oCAAoC,CAAC,QAAD,EAAW7C,KAAX,EAAkB,KAAKgL,0BAAvB,CAApC;AACAnI,IAAAA,oCAAoC,CAAC,MAAD,EAAS7C,KAAT,EAAgB,KAAKiL,yBAArB,CAApC;;AACA,QAAI,KAAKlB,OAAL,CAAa0C,0BAAjB,EAA6C;AACzC,UAAI;AACA,YAAIC,2BAA2B,GAAG,KAAlC;;AACA,aAAK3C,OAAL,CAAa0C,0BAAb,CACIzM,KADJ,EAEI;AACIoD,UAAAA,CAAC,EAAE,KAAK4H,0BAAL,CAAgC5H,CADvC;AAEIC,UAAAA,CAAC,EAAE,KAAK2H,0BAAL,CAAgC3H;AAFvC,SAFJ,EAMI,KAAK8G,uBANT,EAOI,UAASjB,OAAT,EAAkBC,OAAlB,EAA2B;AACvB,cAAI,CAAC0B,KAAK,CAACa,UAAX,EAAuB;AACnB;AACH;;AACDgB,UAAAA,2BAA2B,GAAG,IAA9B;AACA7B,UAAAA,KAAK,CAACG,0BAAN,CAAiC5H,CAAjC,IAAsC8F,OAAtC;AACA2B,UAAAA,KAAK,CAACG,0BAAN,CAAiC3H,CAAjC,IAAsC8F,OAAtC;AACA0B,UAAAA,KAAK,CAACI,yBAAN,CAAgC7H,CAAhC,IAAqC8F,OAArC;AACA2B,UAAAA,KAAK,CAACI,yBAAN,CAAgC5H,CAAhC,IAAqC8F,OAArC;AACAvF,UAAAA,uBAAuB,CAACiH,KAAK,CAACa,UAAP,EAAmBb,KAAK,CAACI,yBAAzB,EAAoDJ,KAAK,CAACU,oBAA1D,EAAgFV,KAAK,CAACO,gBAAtF,EAAwGP,KAAK,CAACd,OAAN,CAAc6B,sBAAtH,CAAvB;AACH,SAjBL;;AAmBA,YAAIc,2BAAJ,EAAiC;AAC7B;AACH;AACJ,OAxBD,CAwBE,OAAOvN,CAAP,EAAU;AACR0F,QAAAA,OAAO,CAACC,GAAR,CAAY,yDAAyD3F,CAArE;AACH;AACJ;;AACDyE,IAAAA,uBAAuB,CAAC,KAAK8H,UAAN,EAAkB,KAAKT,yBAAvB,EAAkD,KAAKM,oBAAvD,EAA6E,KAAKH,gBAAlF,EAAoG,KAAKrB,OAAL,CAAa6B,sBAAjH,CAAvB;AACH,GA9DD;;AA+DA/B,EAAAA,uBAAuB,CAACpD,SAAxB,CAAkCkE,mBAAlC,GAAwD,UAAS3K,KAAT,EAAgB;AACpE,QAAIuC,sCAAsC,CAACvC,KAAD,EAAQ,KAAKsK,aAAL,CAAmB1H,UAA3B,CAAtC,KAAiF,KAArF,EAA4F;AACxF;AACH;;AACD,QAAI,KAAKmH,OAAL,CAAa0C,0BAAjB,EAA6C;AACzC,UAAI;AACA,aAAK1C,OAAL,CAAa0C,0BAAb,CAAwCpO,SAAxC,EAAmDA,SAAnD,EAA8DA,SAA9D,EAAyE,YAAW,CAAE,CAAtF;AACH,OAFD,CAEE,OAAOc,CAAP,EAAU;AACR0F,QAAAA,OAAO,CAACC,GAAR,CAAY,yDAAyD3F,CAArE;AACH;AACJ;;AACD,QAAI,KAAK+K,mBAAL,KAA6B,CAAjC,EAAoC;AAChC,WAAKmB,QAAL;;AACA;AACH;;AACDrL,IAAAA,KAAK,CAACwM,cAAN;AACA,SAAKtC,mBAAL,GAA2BlK,KAAK,CAACoH,IAAN,KAAe,aAAf,GAA+B,CAA/B,GAAmC,CAA9D;AACH,GAjBD;;AAkBAyC,EAAAA,uBAAuB,CAACpD,SAAxB,CAAkCwF,iCAAlC,GAAsE,YAAW;AAC7E,UAAMpB,KAAK,GAAG,IAAd;;AACA,UAAM8B,qBAAqB,GAAG,KAAK7B,qBAAnC;AACA,SAAKC,cAAL,CAAoBnE,IAApB,GAA2B,CAA3B;AACA,SAAKuE,aAAL,CAAmBvB,UAAnB,GAAgC/L,YAAY,CAAC,CAAD,CAA5C;AACA,UAAM+O,aAAa,GAAGxD,iBAAiB,CAAC,MAAD,EAAS,KAAKY,WAAd,EAA2B,KAAKK,eAAhC,EAAiD,KAAKU,cAAtD,EAAsE,KAAKI,aAA3E,CAAvC;;AACA,QAAIyB,aAAJ,EAAmB;AACf/H,MAAAA,OAAO,CAACC,GAAR,CAAY,iCAAZ;AACA,WAAKgG,qBAAL,GAA6BjN,YAAY,CAAC,CAAD,CAAzC;AACH;;AACD,QAAI+O,aAAa,IAAI,KAAK1C,mBAAL,KAA6B,CAA9C,IAAmD,KAAKA,mBAAL,KAA6B,CAApF,EAAuF;AACnF,YAAM2C,UAAU,GAAG,KAAKC,mBAAL,CAAyB,KAAK5C,mBAA9B,CAAnB;;AACA,UAAI2C,UAAJ,EAAgB;AACZtI,QAAAA,sBAAsB,CAAC,KAAKyF,WAAN,EAAmB,KAAK0B,UAAxB,EAAoC,KAAKH,oBAAzC,EAA+D,YAAW;AAC5FV,UAAAA,KAAK,CAACkC,oBAAN;AACH,SAFqB,CAAtB;AAGA;AACH;;AACD,WAAKA,oBAAL;;AACA;AACH;;AACD,UAAMC,gBAAgB,GAAG,KAAKjD,OAAL,CAAakD,gBAAb,CAA8B,KAAKjC,0BAAL,CAAgC5H,CAA9D,EAAiE,KAAK4H,0BAAL,CAAgC3H,CAAjG,CAAzB;;AACAwB,IAAAA,OAAO,CAACC,GAAR,CAAY,gDAAgDkI,gBAA5D;AACA,UAAME,qBAAqB,GAAG,KAAK9C,kBAAnC;;AACA,QAAI4C,gBAAgB,KAAK,KAAK7C,uBAA1B,IAAqD6C,gBAAgB,KAAK,KAAK5C,kBAAnF,EAAuG;AACnG,WAAKD,uBAAL,GAA+B6C,gBAA/B;;AACA,UAAI,KAAK5C,kBAAL,KAA4B,IAAhC,EAAsC;AAClC,aAAKW,cAAL,CAAoBnE,IAApB,GAA2B,CAA3B;AACA,aAAKuE,aAAL,CAAmBvB,UAAnB,GAAgC/L,YAAY,CAAC,CAAD,CAA5C;AACAuL,QAAAA,iBAAiB,CAAC,UAAD,EAAa,KAAKgB,kBAAlB,EAAsC,KAAKC,eAA3C,EAA4D,KAAKU,cAAjE,EAAiF,KAAKI,aAAtF,EAAqG,KAArG,CAAjB;AACH;;AACD,UAAI,KAAKhB,uBAAL,KAAiC,IAArC,EAA2C;AACvC,aAAKC,kBAAL,GAA0B,KAAKD,uBAA/B;AACAtF,QAAAA,OAAO,CAACC,GAAR,CAAY,+CAAZ;AACH,OAHD,MAGO;AACH,aAAKiG,cAAL,CAAoBnE,IAApB,GAA2B,CAA3B;AACA,aAAKuE,aAAL,CAAmBvB,UAAnB,GAAgC1B,mBAAmB,CAAC,KAAK6C,cAAL,CAAoB7D,aAArB,EAAoC,KAAK8C,WAAzC,CAAnD;;AACA,YAAIZ,iBAAiB,CAAC,WAAD,EAAc,KAAKe,uBAAnB,EAA4C,KAAKE,eAAjD,EAAkE,KAAKU,cAAvE,EAAuF,KAAKI,aAA5F,CAArB,EAAiI;AAC7HtG,UAAAA,OAAO,CAACC,GAAR,CAAY,uCAAZ;AACA,eAAKsF,kBAAL,GAA0B,KAAKD,uBAA/B;AACA,eAAKW,qBAAL,GAA6BnB,sBAAsB,CAAC,KAAKwB,aAAL,CAAmBjE,aAApB,EAAmC,KAAKiE,aAAL,CAAmBvB,UAAtD,CAAnD;AACH,SAJD,MAIO;AACH,cAAI,KAAKO,uBAAL,KAAiClM,QAAQ,CAACyH,IAA9C,EAAoD;AAChD,iBAAK0E,kBAAL,GAA0BnM,QAAQ,CAACyH,IAAnC;AACH;AACJ;AACJ;AACJ;;AACD,QAAIwH,qBAAqB,KAAK,KAAK9C,kBAA/B,IAAqD/K,YAAY,CAAC6N,qBAAD,CAArE,EAA8F;AAC1FrI,MAAAA,OAAO,CAACC,GAAR,CAAY,wCAAZ;AACA,WAAKiG,cAAL,CAAoBnE,IAApB,GAA2B,CAA3B;AACA,WAAKuE,aAAL,CAAmBvB,UAAnB,GAAgC/L,YAAY,CAAC,CAAD,CAA5C;AACAuL,MAAAA,iBAAiB,CAAC,WAAD,EAAc8D,qBAAd,EAAqC,KAAK7C,eAA1C,EAA2D,KAAKU,cAAhE,EAAgF,KAAKI,aAArF,EAAoG,KAApG,EAA2G,KAAKf,kBAAhH,CAAjB;AACH;;AACD,QAAI/K,YAAY,CAAC,KAAK+K,kBAAN,CAAhB,EAA2C;AACvC,WAAKW,cAAL,CAAoBnE,IAApB,GAA2B,CAA3B;AACA,WAAKuE,aAAL,CAAmBvB,UAAnB,GAAgC1B,mBAAmB,CAAC,KAAK6C,cAAL,CAAoB7D,aAArB,EAAoC,KAAK8C,WAAzC,CAAnD;;AACA,UAAIZ,iBAAiB,CAAC,UAAD,EAAa,KAAKgB,kBAAlB,EAAsC,KAAKC,eAA3C,EAA4D,KAAKU,cAAjE,EAAiF,KAAKI,aAAtF,CAAjB,KAA0H,KAA9H,EAAqI;AACjItG,QAAAA,OAAO,CAACC,GAAR,CAAY,2DAAZ;AACA,aAAKgG,qBAAL,GAA6BjN,YAAY,CAAC,CAAD,CAAzC;AACH,OAHD,MAGO;AACHgH,QAAAA,OAAO,CAACC,GAAR,CAAY,+BAAZ;AACA,aAAKgG,qBAAL,GAA6BnB,sBAAsB,CAAC,KAAKwB,aAAL,CAAmBjE,aAApB,EAAmC,KAAKiE,aAAL,CAAmBvB,UAAtD,CAAnD;AACH;AACJ;;AACD/E,IAAAA,OAAO,CAACC,GAAR,CAAY,8DAA8D,KAAKgG,qBAA/E;;AACA,QAAI6B,qBAAqB,KAAK,KAAK7B,qBAAnC,EAA0D;AACtD,WAAKY,UAAL,CAAgB3G,SAAhB,CAA0BoI,MAA1B,CAAiC9P,YAAY,GAAGsP,qBAAhD;AACH;;AACD,UAAMS,yBAAyB,GAAG/P,YAAY,GAAG,KAAKyN,qBAAtD;;AACA,SAAKY,UAAL,CAAgB3G,SAAhB,CAA0BC,GAA1B,CAA8BoI,yBAA9B;AACH,GAvED;;AAwEAvD,EAAAA,uBAAuB,CAACpD,SAAxB,CAAkCqG,mBAAlC,GAAwD,UAASO,KAAT,EAAgB;AACpExI,IAAAA,OAAO,CAACC,GAAR,CAAY,gDAAgD,KAAKgG,qBAAjE;AACA,UAAM+B,UAAU,GAAG,KAAK/B,qBAAL,KAA+BjN,YAAY,CAAC,CAAD,CAA3C,IAAkD,KAAKuM,kBAAL,KAA4B,IAA9E,IAAsFiD,KAAK,KAAK,CAAnH;;AACA,QAAIR,UAAJ,EAAgB;AACZ,UAAIxN,YAAY,CAAC,KAAK+K,kBAAN,CAAhB,EAA2C;AACvC,aAAKW,cAAL,CAAoBnE,IAApB,GAA2B,CAA3B;AACA,aAAKuE,aAAL,CAAmBvB,UAAnB,GAAgC/L,YAAY,CAAC,CAAD,CAA5C;AACAuL,QAAAA,iBAAiB,CAAC,WAAD,EAAc,KAAKgB,kBAAnB,EAAuC,KAAKC,eAA5C,EAA6D,KAAKU,cAAlE,EAAkF,KAAKI,aAAvF,EAAsG,KAAtG,CAAjB;AACH;AACJ,KAND,MAMO;AACH,UAAI9L,YAAY,CAAC,KAAK+K,kBAAN,CAAhB,EAA2C;AACvC,aAAKW,cAAL,CAAoBnE,IAApB,GAA2B,CAA3B;AACA,aAAKuE,aAAL,CAAmBvB,UAAnB,GAAgC,KAAKkB,qBAArC;;AACA,YAAI1B,iBAAiB,CAAC,MAAD,EAAS,KAAKgB,kBAAd,EAAkC,KAAKC,eAAvC,EAAwD,KAAKU,cAA7D,EAA6E,KAAKI,aAAlF,CAAjB,KAAsH,IAA1H,EAAgI;AAC5H,eAAKL,qBAAL,GAA6B,KAAKK,aAAL,CAAmBvB,UAAhD;AACH,SAFD,MAEO;AACH,eAAKkB,qBAAL,GAA6BjN,YAAY,CAAC,CAAD,CAAzC;AACH;AACJ;AACJ;;AACD,WAAOgP,UAAP;AACH,GArBD;;AAsBAhD,EAAAA,uBAAuB,CAACpD,SAAxB,CAAkCsG,oBAAlC,GAAyD,YAAW;AAChElI,IAAAA,OAAO,CAACC,GAAR,CAAY,gDAAZ;AACA,SAAKiG,cAAL,CAAoBnE,IAApB,GAA2B,CAA3B;AACA,SAAKuE,aAAL,CAAmBvB,UAAnB,GAAgC,KAAKkB,qBAArC;AACA1B,IAAAA,iBAAiB,CAAC,SAAD,EAAY,KAAKY,WAAjB,EAA8B,KAAKK,eAAnC,EAAoD,KAAKU,cAAzD,EAAyE,KAAKI,aAA9E,EAA6F,KAA7F,CAAjB;AACA,SAAKjB,mBAAL,GAA2B,CAA3B;;AACA,SAAKmB,QAAL;AACH,GAPD;;AAQA,SAAOxB,uBAAP;AACH,CA1S+B,EAAhC;;AA4SA,MAAMyD,MAAM,GAAG;AACXpB,EAAAA,iBAAiB,EAAE,GADR;AAEXpE,EAAAA,sBAAsB,EAAEA,sBAFb;AAGXwD,EAAAA,cAAc,EAAExJ,eAHL;AAIXmL,EAAAA,gBAAgB,EAAE,UAAS7J,CAAT,EAAYC,CAAZ,EAAe;AAC7B,WAAOpF,QAAQ,CAACgP,gBAAT,CAA0B7J,CAA1B,EAA6BC,CAA7B,CAAP;AACH;AANU,CAAf;AAQA,IAAIkK,mBAAJ;;AACA,SAASC,YAAT,CAAsBrO,CAAtB,EAAyBsO,WAAzB,EAAsC;AAClC5I,EAAAA,OAAO,CAACC,GAAR,CAAY,6BAAZ;;AACA,MAAIyI,mBAAJ,EAAyB;AACrB1I,IAAAA,OAAO,CAACC,GAAR,CAAY,yCAAZ;AACA;AACH;;AACD,QAAM4I,UAAU,GAAGJ,MAAM,CAACxF,sBAAP,CAA8B3I,CAA9B,EAAiCsO,WAAjC,CAAnB;;AACA,MAAI,CAACC,UAAL,EAAiB;AACb7I,IAAAA,OAAO,CAACC,GAAR,CAAY,kDAAZ;AACA;AACH;;AACD,MAAI;AACAyI,IAAAA,mBAAmB,GAAG,IAAI1D,uBAAJ,CAA4B1K,CAA5B,EAA+BmO,MAA/B,EAAuCI,UAAvC,EAAmDC,kBAAnD,CAAtB;AACH,GAFD,CAEE,OAAOC,GAAP,EAAY;AACVD,IAAAA,kBAAkB,CAACL,MAAD,EAASnO,CAAT,EAAY,CAAZ,CAAlB;AACA,UAAMyO,GAAN;AACH;AACJ;;AACD,SAASC,iBAAT,CAA2BC,GAA3B,EAAgC;AAC5BjJ,EAAAA,OAAO,CAACC,GAAR,CAAY,qCAAZ;AACA,QAAM/E,EAAE,GAAG+N,GAAG,CAAC/F,MAAf;AACA,QAAM0F,WAAW,GAAGK,GAAG,CAACC,YAAJ,EAApB;;AACA,QAAMC,QAAQ,GAAG,YAAW;AACxBnJ,IAAAA,OAAO,CAACC,GAAR,CAAY,mCAAZ;AACAmJ,IAAAA,GAAG,CAAC9N,GAAJ;AACA+N,IAAAA,MAAM,CAAC/N,GAAP;AACAgO,IAAAA,IAAI,CAAChO,GAAL;AACAiO,IAAAA,MAAM,CAACjO,GAAP;AACAqN,IAAAA,YAAY,CAACM,GAAD,EAAML,WAAN,CAAZ;AACH,GAPD;;AAQA,QAAMY,cAAc,GAAG,UAASrO,KAAT,EAAgB;AACnC6E,IAAAA,OAAO,CAACC,GAAR,CAAY,gDAAgD9E,KAAK,CAACoH,IAAlE;AACA6G,IAAAA,GAAG,CAAC9N,GAAJ;AACA+N,IAAAA,MAAM,CAAC/N,GAAP;AACAgO,IAAAA,IAAI,CAAChO,GAAL;AACAiO,IAAAA,MAAM,CAACjO,GAAP;;AACA,QAAIJ,EAAJ,EAAQ;AACJA,MAAAA,EAAE,CAAC2J,aAAH,CAAiB,IAAI4E,WAAJ,CAAgB3Q,2BAAhB,EAA6C;AAAC+K,QAAAA,OAAO,EAAE,IAAV;AAAgBL,QAAAA,UAAU,EAAE;AAA5B,OAA7C,CAAjB;AACH;;AACDkG,IAAAA,YAAY,CAACC,KAAD,CAAZ;AACH,GAVD;;AAWA,MAAIzO,EAAJ,EAAQ;AACJA,IAAAA,EAAE,CAAC2J,aAAH,CAAiB,IAAI4E,WAAJ,CAAgB5Q,4BAAhB,EAA8C;AAACgL,MAAAA,OAAO,EAAE,IAAV;AAAgBL,MAAAA,UAAU,EAAE;AAA5B,KAA9C,CAAjB;AACH;;AACD,QAAMmG,KAAK,GAAGjQ,MAAM,CAAC6H,UAAP,CAAkB4H,QAAlB,EAA4BV,MAAM,CAACmB,UAAnC,CAAd;AACA,QAAMR,GAAG,GAAGnO,KAAK,CAACC,EAAD,EAAK,UAAL,EAAiBsO,cAAjB,CAAjB;AACA,QAAMH,MAAM,GAAGpO,KAAK,CAACC,EAAD,EAAK,aAAL,EAAoBsO,cAApB,CAApB;AACA,QAAMF,IAAI,GAAGrO,KAAK,CAACC,EAAD,EAAK,WAAL,EAAkBsO,cAAlB,CAAlB;AACA,QAAMD,MAAM,GAAGtO,KAAK,CAACvB,MAAD,EAAS,QAAT,EAAmB8P,cAAnB,EAAmC,IAAnC,CAApB;AACH;;AAED,SAASV,kBAAT,CAA4B5D,OAA5B,EAAqC/J,KAArC,EAA4CqN,KAA5C,EAAmD;AAC/C,MAAIA,KAAK,KAAK,CAAd,EAAiB;AACbxI,IAAAA,OAAO,CAACC,GAAR,CAAY,kDAAkD9E,KAAK,CAACoH,IAApE;;AACA,QAAI2C,OAAO,CAAC2E,qBAAZ,EAAmC;AAC/B,UAAI;AACA3E,QAAAA,OAAO,CAAC2E,qBAAR,CAA8B1O,KAA9B;;AACA,YAAIA,KAAK,CAAC2O,gBAAV,EAA4B;AACxB9J,UAAAA,OAAO,CAACC,GAAR,CAAY,uHAAZ;AACH;AACJ,OALD,CAKE,OAAO3F,CAAP,EAAU;AACR0F,QAAAA,OAAO,CAACC,GAAR,CAAY,+CAA+C3F,CAA3D;AACH;AACJ;AACJ;;AACDoO,EAAAA,mBAAmB,GAAG,IAAtB;AACH;;AAED,SAASqB,QAAT,CAAkBC,QAAlB,EAA4B;AACxB,MAAIA,QAAJ,EAAc;AACV9P,IAAAA,MAAM,CAAC+P,IAAP,CAAYD,QAAZ,EAAsBE,OAAtB,CAA8B,UAASC,GAAT,EAAc;AACxC1B,MAAAA,MAAM,CAAC0B,GAAD,CAAN,GAAcH,QAAQ,CAACG,GAAD,CAAtB;AACH,KAFD;AAGH;;AACD,MAAI,CAAC1B,MAAM,CAAC2B,UAAZ,EAAwB;AACpB,UAAMC,gBAAgB,GAAGpR,cAAc,EAAvC;;AACA,QAAIoR,gBAAgB,CAAC9Q,4BAAjB,IAAiD8Q,gBAAgB,CAAC/Q,SAAlE,IAA+E+Q,gBAAgB,CAAClR,UAApG,EAAgH;AAC5G,aAAO,KAAP;AACH;AACJ;;AACD6G,EAAAA,OAAO,CAACC,GAAR,CAAY,mDAAZ;;AACA,MAAIwI,MAAM,CAACmB,UAAX,EAAuB;AACnB5J,IAAAA,OAAO,CAACC,GAAR,CAAY,iCAAiCwI,MAAM,CAACmB,UAApD;AACAjP,IAAAA,mBAAmB,CAAC,YAAD,EAAeqO,iBAAf,EAAkC,KAAlC,CAAnB;AACH,GAHD,MAGO;AACHrO,IAAAA,mBAAmB,CAAC,YAAD,EAAegO,YAAf,EAA6B,KAA7B,CAAnB;AACH;;AACD,SAAO,IAAP;AACH;;AAED,SAAS2B,+BAAT,CAAyCnP,KAAzC,EAAgDyN,WAAhD,EAA6D;AACzD,QAAM2B,EAAE,GAAG3B,WAAW,IAAIzN,KAAK,CAAC+N,YAAN,EAA1B;;AACA,OAAK,IAAIsB,CAAT,IAAcD,EAAd,EAAkB;AACd,QAAIrP,EAAE,GAAGsP,CAAT;;AACA,OAAG;AACC,UAAItP,EAAE,CAAC5B,SAAH,KAAiB,KAArB,EAA4B;AACxB;AACH;;AACD,UAAI4B,EAAE,CAACiI,YAAH,IAAmBjI,EAAE,CAACiI,YAAH,CAAgB,WAAhB,MAAiC,MAAxD,EAAgE;AAC5D,eAAOjI,EAAP;AACH;AACJ,KAPD,QAOS,CAACA,EAAE,GAAGA,EAAE,CAACkI,UAAT,KAAwBlI,EAAE,KAAK9B,QAAQ,CAACyH,IAPjD;AAQH;AACJ;;AAED,SAASuH,gBAAT,CAA0B7J,CAA1B,EAA6BC,CAA7B,EAAgC;AAC5B,OAAK,IAAIgM,CAAT,IAAc,KAAKC,KAAnB,EAA0B;AACtB,QAAID,CAAC,CAACpC,gBAAN,EAAwB;AACpB,UAAIlN,EAAE,GAAGsP,CAAC,CAACpC,gBAAF,CAAmB7J,CAAnB,EAAsBC,CAAtB,CAAT;;AACA,UAAItD,EAAJ,EAAQ;AACJ,eAAOA,EAAE,CAACwP,UAAV,EAAsB;AAClBxP,UAAAA,EAAE,GAAGA,EAAE,CAACwP,UAAH,CAActC,gBAAd,CAA+B7J,CAA/B,EAAkCC,CAAlC,CAAL;AACH;;AACD,eAAOtD,EAAP;AACH;AACJ;AACJ;AACJ;;AAED,SAASuM,0BAAT,CAAoCtM,KAApC,EAA2C;AACvC,OAAKsP,KAAL,GAAatP,KAAK,CAAC+N,YAAN,EAAb;AACA,SAAO,IAAP;AACH;;AAEDa,QAAQ,CAAC;AACL9G,EAAAA,sBAAsB,EAAEqH,+BADnB;AAELlC,EAAAA,gBAAgB,EAAEA,gBAFb;AAGLX,EAAAA,0BAA0B,EAAEA,0BAHvB;AAILmC,EAAAA,UAAU,EAAE;AAJP,CAAD,CAAR","sourcesContent":["/*\n\nForked from https://github.com/timruffles/mobile-drag-drop/ v2.3.0-rc.2\n\nCopyright (c) 2013 Tim Ruffles\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\nconst CLASS_PREFIX = \"dnd-poly-\";\nconst CLASS_DRAG_IMAGE = CLASS_PREFIX + \"drag-image\";\nconst CLASS_DRAG_IMAGE_SNAPBACK = CLASS_PREFIX + \"snapback\";\nconst CLASS_DRAG_OPERATION_ICON = CLASS_PREFIX + \"icon\";\nconst EVENT_PREFIX = \"dnd-poly-\";\nconst EVENT_DRAG_DRAGSTART_PENDING = EVENT_PREFIX + \"dragstart-pending\";\nconst EVENT_DRAG_DRAGSTART_CANCEL = EVENT_PREFIX + \"dragstart-cancel\";\nconst ALLOWED_EFFECTS = [\"none\", \"copy\", \"copyLink\", \"copyMove\", \"link\", \"linkMove\", \"move\", \"all\"];\nconst DROP_EFFECTS = [\"none\", \"copy\", \"move\", \"link\"];\n\nfunction detectFeatures() {\n const features = {\n dragEvents: \"ondragstart\" in document.documentElement,\n draggable: \"draggable\" in document.documentElement,\n userAgentSupportingNativeDnD: undefined\n };\n const isBlinkEngine = !!window.chrome || /chrome/i.test(navigator.userAgent);\n features.userAgentSupportingNativeDnD = !(/iPad|iPhone|iPod|Android/.test(navigator.userAgent) || (isBlinkEngine && \"ontouchstart\" in document.documentElement));\n return features;\n}\nfunction supportsPassiveEventListener() {\n let supportsPassiveEventListeners = false;\n try {\n const opts = Object.defineProperty({}, \"passive\", {\n get: function() {\n supportsPassiveEventListeners = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n } catch (e) {}\n return supportsPassiveEventListeners;\n}\n\nconst supportsPassive = supportsPassiveEventListener();\nfunction isDOMElement(object) {\n return object && object.tagName;\n}\nfunction addDocumentListener(ev, handler, passive) {\n if (passive === void 0) {\n passive = true;\n }\n document.addEventListener(ev, handler, supportsPassive ? {passive: passive} : false);\n}\nfunction removeDocumentListener(ev, handler) {\n document.removeEventListener(ev, handler);\n}\nfunction onEvt(el, event, handler, capture) {\n if (capture === void 0) {\n capture = false;\n }\n const options = supportsPassive ? {passive: true, capture: capture} : capture;\n el.addEventListener(event, handler, options);\n return {\n off: function() {\n el.removeEventListener(event, handler, options);\n }\n };\n}\nfunction prepareNodeCopyAsDragImage(srcNode, dstNode) {\n if (srcNode.nodeType === 1) {\n const cs = getComputedStyle(srcNode);\n for (let i = 0; i < cs.length; i++) {\n const csName = cs[i];\n dstNode.style.setProperty(csName, cs.getPropertyValue(csName), cs.getPropertyPriority(csName));\n }\n dstNode.style.pointerEvents = \"none\";\n dstNode.removeAttribute(\"id\");\n dstNode.removeAttribute(\"class\");\n dstNode.removeAttribute(\"draggable\");\n if (dstNode.nodeName === \"CANVAS\") {\n const canvasSrc = srcNode;\n const canvasDst = dstNode;\n const canvasSrcImgData = canvasSrc.getContext(\"2d\").getImageData(0, 0, canvasSrc.width, canvasSrc.height);\n canvasDst.getContext(\"2d\").putImageData(canvasSrcImgData, 0, 0);\n }\n }\n if (srcNode.hasChildNodes()) {\n for (let i = 0; i < srcNode.childNodes.length; i++) {\n prepareNodeCopyAsDragImage(srcNode.childNodes[i], dstNode.childNodes[i]);\n }\n }\n}\nfunction createDragImage(sourceNode) {\n const dragImage = sourceNode.cloneNode(true);\n prepareNodeCopyAsDragImage(sourceNode, dragImage);\n return dragImage;\n}\nfunction average(array) {\n if (array.length === 0) {\n return 0;\n }\n return (\n array.reduce(function(s, v) {\n return v + s;\n }, 0) / array.length\n );\n}\nfunction isTouchIdentifierContainedInTouchEvent(touchEvent, touchIdentifier) {\n for (let i = 0; i < touchEvent.changedTouches.length; i++) {\n const touch = touchEvent.changedTouches[i];\n if (touch.identifier === touchIdentifier) {\n return true;\n }\n }\n return false;\n}\nfunction updateCentroidCoordinatesOfTouchesIn(coordinateProp, event, outPoint) {\n const pageXs = [],\n pageYs = [];\n for (let i = 0; i < event.touches.length; i++) {\n const touch = event.touches[i];\n pageXs.push(touch[coordinateProp + \"X\"]);\n pageYs.push(touch[coordinateProp + \"Y\"]);\n }\n outPoint.x = average(pageXs);\n outPoint.y = average(pageYs);\n}\nconst TRANSFORM_CSS_VENDOR_PREFIXES = [\"\", \"-webkit-\"];\nfunction extractTransformStyles(sourceNode) {\n return TRANSFORM_CSS_VENDOR_PREFIXES.map(function(prefix) {\n const transform = sourceNode.style[prefix + \"transform\"];\n if (!transform || transform === \"none\") {\n return \"\";\n }\n return transform.replace(/translate\\(\\D*\\d+[^,]*,\\D*\\d+[^,]*\\)\\s*/g, \"\");\n });\n}\nfunction translateElementToPoint(element, pnt, originalTransforms, offset, centerOnCoordinates) {\n if (centerOnCoordinates === void 0) {\n centerOnCoordinates = true;\n }\n let x = pnt.x,\n y = pnt.y;\n if (offset) {\n x += offset.x;\n y += offset.y;\n }\n if (centerOnCoordinates) {\n x -= parseInt(element.offsetWidth, 10) / 2;\n y -= parseInt(element.offsetHeight, 10) / 2;\n }\n const translate = \"translate3d(\" + x + \"px,\" + y + \"px, 0)\";\n for (let i = 0; i < TRANSFORM_CSS_VENDOR_PREFIXES.length; i++) {\n const transformProp = TRANSFORM_CSS_VENDOR_PREFIXES[i] + \"transform\";\n element.style[transformProp] = translate + \" \" + originalTransforms[i];\n }\n}\nfunction applyDragImageSnapback(sourceEl, dragImage, dragImageTransforms, transitionEndCb) {\n const cs = getComputedStyle(sourceEl);\n if (cs.visibility === \"hidden\" || cs.display === \"none\") {\n console.log(\"dnd-poly: source node is not visible. skipping snapback transition.\");\n transitionEndCb();\n return;\n }\n dragImage.classList.add(CLASS_DRAG_IMAGE_SNAPBACK);\n const csDragImage = getComputedStyle(dragImage);\n const durationInS = parseFloat(csDragImage.transitionDuration);\n if (isNaN(durationInS) || durationInS === 0) {\n console.log(\"dnd-poly: no transition used - skipping snapback\");\n transitionEndCb();\n return;\n }\n console.log(\"dnd-poly: starting dragimage snap back\");\n const rect = sourceEl.getBoundingClientRect();\n const pnt = {\n x: rect.left,\n y: rect.top\n };\n pnt.x += document.body.scrollLeft || document.documentElement.scrollLeft;\n pnt.y += document.body.scrollTop || document.documentElement.scrollTop;\n pnt.x -= parseInt(cs.marginLeft, 10);\n pnt.y -= parseInt(cs.marginTop, 10);\n const delayInS = parseFloat(csDragImage.transitionDelay);\n const durationInMs = Math.round((durationInS + delayInS) * 1000);\n translateElementToPoint(dragImage, pnt, dragImageTransforms, undefined, false);\n setTimeout(transitionEndCb, durationInMs);\n}\n\nconst DataTransfer = (function() {\n function DataTransfer(_dataStore, _setDragImageHandler) {\n this._dataStore = _dataStore;\n this._setDragImageHandler = _setDragImageHandler;\n this._dropEffect = DROP_EFFECTS[0];\n }\n Object.defineProperty(DataTransfer.prototype, \"dropEffect\", {\n get: function() {\n return this._dropEffect;\n },\n set: function(value) {\n if (this._dataStore.mode !== 0 && ALLOWED_EFFECTS.indexOf(value) > -1) {\n this._dropEffect = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataTransfer.prototype, \"types\", {\n get: function() {\n if (this._dataStore.mode !== 0) {\n return Object.freeze(this._dataStore.types);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataTransfer.prototype, \"effectAllowed\", {\n get: function() {\n return this._dataStore.effectAllowed;\n },\n set: function(value) {\n if (this._dataStore.mode === 2 && ALLOWED_EFFECTS.indexOf(value) > -1) {\n this._dataStore.effectAllowed = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n DataTransfer.prototype.setData = function(type, data) {\n if (this._dataStore.mode === 2) {\n if (type.indexOf(\" \") > -1) {\n throw new Error(\"illegal arg: type contains space\");\n }\n this._dataStore.data[type] = data;\n if (this._dataStore.types.indexOf(type) === -1) {\n this._dataStore.types.push(type);\n }\n }\n };\n DataTransfer.prototype.getData = function(type) {\n if (this._dataStore.mode === 1 || this._dataStore.mode === 2) {\n return this._dataStore.data[type] || \"\";\n }\n };\n DataTransfer.prototype.clearData = function(format) {\n if (this._dataStore.mode === 2) {\n if (format && this._dataStore.data[format]) {\n delete this._dataStore.data[format];\n const index = this._dataStore.types.indexOf(format);\n if (index > -1) {\n this._dataStore.types.splice(index, 1);\n }\n return;\n }\n this._dataStore.data = {};\n this._dataStore.types = [];\n }\n };\n DataTransfer.prototype.setDragImage = function(image, x, y) {\n if (this._dataStore.mode === 2) {\n this._setDragImageHandler(image, x, y);\n }\n };\n return DataTransfer;\n})();\n\nfunction tryFindDraggableTarget(event) {\n let el = event.target;\n do {\n if (el.draggable === false) {\n continue;\n }\n if (el.draggable === true) {\n return el;\n }\n if (el.getAttribute && el.getAttribute(\"draggable\") === \"true\") {\n return el;\n }\n } while ((el = el.parentNode) && el !== document.body);\n}\nfunction determineDropEffect(effectAllowed, sourceNode) {\n if (!effectAllowed) {\n if (sourceNode.nodeType === 3 && sourceNode.tagName === \"A\") {\n return DROP_EFFECTS[3];\n }\n return DROP_EFFECTS[1];\n }\n if (effectAllowed === ALLOWED_EFFECTS[0]) {\n return DROP_EFFECTS[0];\n }\n if (effectAllowed.indexOf(ALLOWED_EFFECTS[1]) === 0 || effectAllowed === ALLOWED_EFFECTS[7]) {\n return DROP_EFFECTS[1];\n }\n if (effectAllowed.indexOf(ALLOWED_EFFECTS[4]) === 0) {\n return DROP_EFFECTS[3];\n }\n if (effectAllowed === ALLOWED_EFFECTS[6]) {\n return DROP_EFFECTS[2];\n }\n return DROP_EFFECTS[1];\n}\nfunction createDragEventFromTouch(targetElement, e, type, cancelable, window, dataTransfer, relatedTarget) {\n if (relatedTarget === void 0) {\n relatedTarget = null;\n }\n const touch = e.changedTouches[0];\n const dndEvent = new Event(type, {\n bubbles: true,\n cancelable: cancelable\n });\n dndEvent.dataTransfer = dataTransfer;\n dndEvent.relatedTarget = relatedTarget;\n dndEvent.screenX = touch.screenX;\n dndEvent.screenY = touch.screenY;\n dndEvent.clientX = touch.clientX;\n dndEvent.clientY = touch.clientY;\n dndEvent.pageX = touch.pageX;\n dndEvent.pageY = touch.pageY;\n const targetRect = targetElement.getBoundingClientRect();\n dndEvent.offsetX = dndEvent.clientX - targetRect.left;\n dndEvent.offsetY = dndEvent.clientY - targetRect.top;\n return dndEvent;\n}\nfunction dispatchDragEvent(dragEvent, targetElement, touchEvent, dataStore, dataTransfer, cancelable, relatedTarget) {\n if (cancelable === void 0) {\n cancelable = true;\n }\n if (relatedTarget === void 0) {\n relatedTarget = null;\n }\n console.log(\"dnd-poly: dispatching \" + dragEvent);\n const leaveEvt = createDragEventFromTouch(targetElement, touchEvent, dragEvent, cancelable, document.defaultView, dataTransfer, relatedTarget);\n const cancelled = !targetElement.dispatchEvent(leaveEvt);\n dataStore.mode = 0;\n return cancelled;\n}\nfunction determineDragOperation(effectAllowed, dropEffect) {\n if (!effectAllowed || effectAllowed === ALLOWED_EFFECTS[7]) {\n return dropEffect;\n }\n if (dropEffect === DROP_EFFECTS[1]) {\n if (effectAllowed.indexOf(DROP_EFFECTS[1]) === 0) {\n return DROP_EFFECTS[1];\n }\n } else if (dropEffect === DROP_EFFECTS[3]) {\n if (effectAllowed.indexOf(DROP_EFFECTS[3]) === 0 || effectAllowed.indexOf(\"Link\") > -1) {\n return DROP_EFFECTS[3];\n }\n } else if (dropEffect === DROP_EFFECTS[2]) {\n if (effectAllowed.indexOf(DROP_EFFECTS[2]) === 0 || effectAllowed.indexOf(\"Move\") > -1) {\n return DROP_EFFECTS[2];\n }\n }\n return DROP_EFFECTS[0];\n}\n\nconst DragOperationController = (function() {\n function DragOperationController(_initialEvent, _config, _sourceNode, _dragOperationEndedCb) {\n this._initialEvent = _initialEvent;\n this._config = _config;\n this._sourceNode = _sourceNode;\n this._dragOperationEndedCb = _dragOperationEndedCb;\n this._dragOperationState = 0;\n this._immediateUserSelection = null;\n this._currentDropTarget = null;\n console.log(\"dnd-poly: setting up potential drag operation..\");\n this._lastTouchEvent = _initialEvent;\n this._initialTouch = _initialEvent.changedTouches[0];\n this._touchMoveHandler = this._onTouchMove.bind(this);\n this._touchEndOrCancelHandler = this._onTouchEndOrCancel.bind(this);\n addDocumentListener(\"touchmove\", this._touchMoveHandler, false);\n addDocumentListener(\"touchend\", this._touchEndOrCancelHandler, false);\n addDocumentListener(\"touchcancel\", this._touchEndOrCancelHandler, false);\n }\n DragOperationController.prototype._setup = function() {\n const _this = this;\n console.log(\"dnd-poly: starting drag and drop operation\");\n this._dragOperationState = 1;\n this._currentDragOperation = DROP_EFFECTS[0];\n this._dragDataStore = {\n data: {},\n effectAllowed: undefined,\n mode: 3,\n types: []\n };\n this._currentHotspotCoordinates = {\n x: null,\n y: null\n };\n this._dragImagePageCoordinates = {\n x: null,\n y: null\n };\n let dragImageSrc = this._sourceNode;\n this._dataTransfer = new DataTransfer(this._dragDataStore, function(element, x, y) {\n dragImageSrc = element;\n if (typeof x === \"number\" || typeof y === \"number\") {\n _this._dragImageOffset = {\n x: x || 0,\n y: y || 0\n };\n }\n });\n this._dragDataStore.mode = 2;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n if (dispatchDragEvent(\"dragstart\", this._sourceNode, this._lastTouchEvent, this._dragDataStore, this._dataTransfer)) {\n console.log(\"dnd-poly: dragstart cancelled\");\n this._dragOperationState = 3;\n this._cleanup();\n return false;\n }\n updateCentroidCoordinatesOfTouchesIn(\"page\", this._lastTouchEvent, this._dragImagePageCoordinates);\n const dragImage = this._config.dragImageSetup(dragImageSrc);\n this._dragImageTransforms = extractTransformStyles(dragImage);\n dragImage.style.position = \"absolute\";\n dragImage.style.left = \"0px\";\n dragImage.style.top = \"0px\";\n dragImage.style.zIndex = \"999999\";\n dragImage.classList.add(CLASS_DRAG_IMAGE);\n dragImage.classList.add(CLASS_DRAG_OPERATION_ICON);\n this._dragImage = dragImage;\n if (!this._dragImageOffset) {\n if (this._config.dragImageOffset) {\n this._dragImageOffset = {\n x: this._config.dragImageOffset.x,\n y: this._config.dragImageOffset.y\n };\n } else if (this._config.dragImageCenterOnTouch) {\n const cs = getComputedStyle(dragImageSrc);\n this._dragImageOffset = {\n x: 0 - parseInt(cs.marginLeft, 10),\n y: 0 - parseInt(cs.marginTop, 10)\n };\n } else {\n const targetRect = dragImageSrc.getBoundingClientRect();\n const cs = getComputedStyle(dragImageSrc);\n this._dragImageOffset = {\n x: targetRect.left - this._initialTouch.clientX - parseInt(cs.marginLeft, 10) + targetRect.width / 2,\n y: targetRect.top - this._initialTouch.clientY - parseInt(cs.marginTop, 10) + targetRect.height / 2\n };\n }\n }\n translateElementToPoint(this._dragImage, this._dragImagePageCoordinates, this._dragImageTransforms, this._dragImageOffset, this._config.dragImageCenterOnTouch);\n document.body.appendChild(this._dragImage);\n this._iterationIntervalId = window.setInterval(function() {\n if (_this._iterationLock) {\n console.log(\"dnd-poly: iteration skipped because previous iteration hast not yet finished.\");\n return;\n }\n _this._iterationLock = true;\n _this._dragAndDropProcessModelIteration();\n _this._iterationLock = false;\n }, this._config.iterationInterval);\n return true;\n };\n DragOperationController.prototype._cleanup = function() {\n console.log(\"dnd-poly: cleanup\");\n if (this._iterationIntervalId) {\n clearInterval(this._iterationIntervalId);\n this._iterationIntervalId = null;\n }\n removeDocumentListener(\"touchmove\", this._touchMoveHandler);\n removeDocumentListener(\"touchend\", this._touchEndOrCancelHandler);\n removeDocumentListener(\"touchcancel\", this._touchEndOrCancelHandler);\n if (this._dragImage) {\n this._dragImage.parentNode.removeChild(this._dragImage);\n this._dragImage = null;\n }\n this._dragOperationEndedCb(this._config, this._lastTouchEvent, this._dragOperationState);\n };\n DragOperationController.prototype._onTouchMove = function(event) {\n const _this = this;\n if (isTouchIdentifierContainedInTouchEvent(event, this._initialTouch.identifier) === false) {\n return;\n }\n this._lastTouchEvent = event;\n if (this._dragOperationState === 0) {\n let startDrag = void 0;\n if (this._config.dragStartConditionOverride) {\n try {\n startDrag = this._config.dragStartConditionOverride(event);\n } catch (e) {\n console.error(\"dnd-poly: error in dragStartConditionOverride hook: \" + e);\n startDrag = false;\n }\n } else {\n startDrag = event.touches.length === 1;\n }\n if (!startDrag) {\n this._cleanup();\n return;\n }\n if (this._setup() === true) {\n this._initialEvent.preventDefault();\n event.preventDefault();\n }\n return;\n }\n console.log(\"dnd-poly: moving draggable..\");\n event.preventDefault();\n updateCentroidCoordinatesOfTouchesIn(\"client\", event, this._currentHotspotCoordinates);\n updateCentroidCoordinatesOfTouchesIn(\"page\", event, this._dragImagePageCoordinates);\n if (this._config.dragImageTranslateOverride) {\n try {\n let handledDragImageTranslate_1 = false;\n this._config.dragImageTranslateOverride(\n event,\n {\n x: this._currentHotspotCoordinates.x,\n y: this._currentHotspotCoordinates.y\n },\n this._immediateUserSelection,\n function(offsetX, offsetY) {\n if (!_this._dragImage) {\n return;\n }\n handledDragImageTranslate_1 = true;\n _this._currentHotspotCoordinates.x += offsetX;\n _this._currentHotspotCoordinates.y += offsetY;\n _this._dragImagePageCoordinates.x += offsetX;\n _this._dragImagePageCoordinates.y += offsetY;\n translateElementToPoint(_this._dragImage, _this._dragImagePageCoordinates, _this._dragImageTransforms, _this._dragImageOffset, _this._config.dragImageCenterOnTouch);\n }\n );\n if (handledDragImageTranslate_1) {\n return;\n }\n } catch (e) {\n console.log(\"dnd-poly: error in dragImageTranslateOverride hook: \" + e);\n }\n }\n translateElementToPoint(this._dragImage, this._dragImagePageCoordinates, this._dragImageTransforms, this._dragImageOffset, this._config.dragImageCenterOnTouch);\n };\n DragOperationController.prototype._onTouchEndOrCancel = function(event) {\n if (isTouchIdentifierContainedInTouchEvent(event, this._initialTouch.identifier) === false) {\n return;\n }\n if (this._config.dragImageTranslateOverride) {\n try {\n this._config.dragImageTranslateOverride(undefined, undefined, undefined, function() {});\n } catch (e) {\n console.log(\"dnd-poly: error in dragImageTranslateOverride hook: \" + e);\n }\n }\n if (this._dragOperationState === 0) {\n this._cleanup();\n return;\n }\n event.preventDefault();\n this._dragOperationState = event.type === \"touchcancel\" ? 3 : 2;\n };\n DragOperationController.prototype._dragAndDropProcessModelIteration = function() {\n const _this = this;\n const previousDragOperation = this._currentDragOperation;\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n const dragCancelled = dispatchDragEvent(\"drag\", this._sourceNode, this._lastTouchEvent, this._dragDataStore, this._dataTransfer);\n if (dragCancelled) {\n console.log(\"dnd-poly: drag event cancelled.\");\n this._currentDragOperation = DROP_EFFECTS[0];\n }\n if (dragCancelled || this._dragOperationState === 2 || this._dragOperationState === 3) {\n const dragFailed = this._dragOperationEnded(this._dragOperationState);\n if (dragFailed) {\n applyDragImageSnapback(this._sourceNode, this._dragImage, this._dragImageTransforms, function() {\n _this._finishDragOperation();\n });\n return;\n }\n this._finishDragOperation();\n return;\n }\n const newUserSelection = this._config.elementFromPoint(this._currentHotspotCoordinates.x, this._currentHotspotCoordinates.y);\n console.log(\"dnd-poly: new immediate user selection is: \" + newUserSelection);\n const previousTargetElement = this._currentDropTarget;\n if (newUserSelection !== this._immediateUserSelection && newUserSelection !== this._currentDropTarget) {\n this._immediateUserSelection = newUserSelection;\n if (this._currentDropTarget !== null) {\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n dispatchDragEvent(\"dragexit\", this._currentDropTarget, this._lastTouchEvent, this._dragDataStore, this._dataTransfer, false);\n }\n if (this._immediateUserSelection === null) {\n this._currentDropTarget = this._immediateUserSelection;\n console.log(\"dnd-poly: current drop target changed to null\");\n } else {\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = determineDropEffect(this._dragDataStore.effectAllowed, this._sourceNode);\n if (dispatchDragEvent(\"dragenter\", this._immediateUserSelection, this._lastTouchEvent, this._dragDataStore, this._dataTransfer)) {\n console.log(\"dnd-poly: dragenter default prevented\");\n this._currentDropTarget = this._immediateUserSelection;\n this._currentDragOperation = determineDragOperation(this._dataTransfer.effectAllowed, this._dataTransfer.dropEffect);\n } else {\n if (this._immediateUserSelection !== document.body) {\n this._currentDropTarget = document.body;\n }\n }\n }\n }\n if (previousTargetElement !== this._currentDropTarget && isDOMElement(previousTargetElement)) {\n console.log(\"dnd-poly: current drop target changed.\");\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n dispatchDragEvent(\"dragleave\", previousTargetElement, this._lastTouchEvent, this._dragDataStore, this._dataTransfer, false, this._currentDropTarget);\n }\n if (isDOMElement(this._currentDropTarget)) {\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = determineDropEffect(this._dragDataStore.effectAllowed, this._sourceNode);\n if (dispatchDragEvent(\"dragover\", this._currentDropTarget, this._lastTouchEvent, this._dragDataStore, this._dataTransfer) === false) {\n console.log(\"dnd-poly: dragover not prevented on possible drop-target.\");\n this._currentDragOperation = DROP_EFFECTS[0];\n } else {\n console.log(\"dnd-poly: dragover prevented.\");\n this._currentDragOperation = determineDragOperation(this._dataTransfer.effectAllowed, this._dataTransfer.dropEffect);\n }\n }\n console.log(\"dnd-poly: d'n'd iteration ended. current drag operation: \" + this._currentDragOperation);\n if (previousDragOperation !== this._currentDragOperation) {\n this._dragImage.classList.remove(CLASS_PREFIX + previousDragOperation);\n }\n const currentDragOperationClass = CLASS_PREFIX + this._currentDragOperation;\n this._dragImage.classList.add(currentDragOperationClass);\n };\n DragOperationController.prototype._dragOperationEnded = function(state) {\n console.log(\"dnd-poly: drag operation end detected with \" + this._currentDragOperation);\n const dragFailed = this._currentDragOperation === DROP_EFFECTS[0] || this._currentDropTarget === null || state === 3;\n if (dragFailed) {\n if (isDOMElement(this._currentDropTarget)) {\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n dispatchDragEvent(\"dragleave\", this._currentDropTarget, this._lastTouchEvent, this._dragDataStore, this._dataTransfer, false);\n }\n } else {\n if (isDOMElement(this._currentDropTarget)) {\n this._dragDataStore.mode = 1;\n this._dataTransfer.dropEffect = this._currentDragOperation;\n if (dispatchDragEvent(\"drop\", this._currentDropTarget, this._lastTouchEvent, this._dragDataStore, this._dataTransfer) === true) {\n this._currentDragOperation = this._dataTransfer.dropEffect;\n } else {\n this._currentDragOperation = DROP_EFFECTS[0];\n }\n }\n }\n return dragFailed;\n };\n DragOperationController.prototype._finishDragOperation = function() {\n console.log(\"dnd-poly: dragimage snap back transition ended\");\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = this._currentDragOperation;\n dispatchDragEvent(\"dragend\", this._sourceNode, this._lastTouchEvent, this._dragDataStore, this._dataTransfer, false);\n this._dragOperationState = 2;\n this._cleanup();\n };\n return DragOperationController;\n})();\n\nconst config = {\n iterationInterval: 150,\n tryFindDraggableTarget: tryFindDraggableTarget,\n dragImageSetup: createDragImage,\n elementFromPoint: function(x, y) {\n return document.elementFromPoint(x, y);\n }\n};\nlet activeDragOperation;\nfunction onTouchstart(e, composePath) {\n console.log(\"dnd-poly: global touchstart\");\n if (activeDragOperation) {\n console.log(\"dnd-poly: drag operation already active\");\n return;\n }\n const dragTarget = config.tryFindDraggableTarget(e, composePath);\n if (!dragTarget) {\n console.log(\"dnd-poly: no draggable at touchstart coordinates\");\n return;\n }\n try {\n activeDragOperation = new DragOperationController(e, config, dragTarget, dragOperationEnded);\n } catch (err) {\n dragOperationEnded(config, e, 3);\n throw err;\n }\n}\nfunction onDelayTouchstart(evt) {\n console.log(\"dnd-poly: setup delayed dragstart..\");\n const el = evt.target;\n const composePath = evt.composedPath();\n const heldItem = function() {\n console.log(\"dnd-poly: starting delayed drag..\");\n end.off();\n cancel.off();\n move.off();\n scroll.off();\n onTouchstart(evt, composePath);\n };\n const onReleasedItem = function(event) {\n console.log(\"dnd-poly: aborting delayed drag because of \" + event.type);\n end.off();\n cancel.off();\n move.off();\n scroll.off();\n if (el) {\n el.dispatchEvent(new CustomEvent(EVENT_DRAG_DRAGSTART_CANCEL, {bubbles: true, cancelable: true}));\n }\n clearTimeout(timer);\n };\n if (el) {\n el.dispatchEvent(new CustomEvent(EVENT_DRAG_DRAGSTART_PENDING, {bubbles: true, cancelable: true}));\n }\n const timer = window.setTimeout(heldItem, config.holdToDrag);\n const end = onEvt(el, \"touchend\", onReleasedItem);\n const cancel = onEvt(el, \"touchcancel\", onReleasedItem);\n const move = onEvt(el, \"touchmove\", onReleasedItem);\n const scroll = onEvt(window, \"scroll\", onReleasedItem, true);\n}\n\nfunction dragOperationEnded(_config, event, state) {\n if (state === 0) {\n console.log(\"dnd-poly: Drag never started. Last event was \" + event.type);\n if (_config.defaultActionOverride) {\n try {\n _config.defaultActionOverride(event);\n if (event.defaultPrevented) {\n console.log(\"dnd-poly: defaultActionOverride has taken care of triggering the default action. preventing default on original event\");\n }\n } catch (e) {\n console.log(\"dnd-poly: error in defaultActionOverride: \" + e);\n }\n }\n }\n activeDragOperation = null;\n}\n\nfunction polyfill(override) {\n if (override) {\n Object.keys(override).forEach(function(key) {\n config[key] = override[key];\n });\n }\n if (!config.forceApply) {\n const detectedFeatures = detectFeatures();\n if (detectedFeatures.userAgentSupportingNativeDnD && detectedFeatures.draggable && detectedFeatures.dragEvents) {\n return false;\n }\n }\n console.log(\"dnd-poly: Applying mobile drag and drop polyfill.\");\n if (config.holdToDrag) {\n console.log(\"dnd-poly: holdToDrag set to \" + config.holdToDrag);\n addDocumentListener(\"touchstart\", onDelayTouchstart, false);\n } else {\n addDocumentListener(\"touchstart\", onTouchstart, false);\n }\n return true;\n}\n\nfunction tryFindDraggableTarget_override(event, composePath) {\n const cp = composePath || event.composedPath();\n for (let o of cp) {\n let el = o;\n do {\n if (el.draggable === false) {\n continue;\n }\n if (el.getAttribute && el.getAttribute(\"draggable\") === \"true\") {\n return el;\n }\n } while ((el = el.parentNode) && el !== document.body);\n }\n}\n\nfunction elementFromPoint(x, y) {\n for (let o of this._path) {\n if (o.elementFromPoint) {\n let el = o.elementFromPoint(x, y);\n if (el) {\n while (el.shadowRoot) {\n el = el.shadowRoot.elementFromPoint(x, y);\n }\n return el;\n }\n }\n }\n}\n\nfunction dragStartConditionOverride(event) {\n this._path = event.composedPath();\n return true;\n}\n\npolyfill({\n tryFindDraggableTarget: tryFindDraggableTarget_override,\n elementFromPoint: elementFromPoint,\n dragStartConditionOverride: dragStartConditionOverride,\n holdToDrag: 500\n});\n"],"file":"polyfill.js"}
\No newline at end of file