This file is indexed.

/usr/share/bibledit/quill/quill.min.js.map is in bibledit-data 5.0.453-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

1
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///quill.min.js","webpack:///webpack/bootstrap 12da403d1f2adb6b6342","webpack:///./quill.js","webpack:///./core.js","webpack:///../parchment/src/parchment.ts","webpack:///../parchment/src/blot/abstract/container.ts","webpack:///../parchment/src/collection/linked-list.ts","webpack:///../parchment/src/blot/abstract/shadow.ts","webpack:///../parchment/src/registry.ts","webpack:///../parchment/src/blot/abstract/format.ts","webpack:///../parchment/src/attributor/attributor.ts","webpack:///../parchment/src/attributor/store.ts","webpack:///../parchment/src/attributor/class.ts","webpack:///../parchment/src/attributor/style.ts","webpack:///../parchment/src/blot/abstract/leaf.ts","webpack:///../parchment/src/blot/scroll.ts","webpack:///../parchment/src/blot/inline.ts","webpack:///../parchment/src/blot/block.ts","webpack:///../parchment/src/blot/embed.ts","webpack:///../parchment/src/blot/text.ts","webpack:///./core/quill.js","webpack:///./core/polyfill.js","webpack:///../delta/lib/delta.js","webpack:///../delta/~/fast-diff/diff.js","webpack:///../delta/~/deep-equal/lib/keys.js","webpack:///../delta/~/deep-equal/lib/is_arguments.js","webpack:///../delta/~/extend/index.js","webpack:///../delta/lib/op.js","webpack:///./core/editor.js","webpack:///./formats/code.js","webpack:///./blots/block.js","webpack:///./blots/break.js","webpack:///./blots/embed.js","webpack:///./blots/inline.js","webpack:///./blots/text.js","webpack:///./blots/cursor.js","webpack:///./core/emitter.js","webpack:///./~/eventemitter3/index.js","webpack:///./core/logger.js","webpack:///./~/clone/clone.js","webpack:///./core/module.js","webpack:///./core/selection.js","webpack:///./core/theme.js","webpack:///./blots/container.js","webpack:///./blots/scroll.js","webpack:///./modules/clipboard.js","webpack:///./formats/align.js","webpack:///./formats/background.js","webpack:///./formats/color.js","webpack:///./formats/direction.js","webpack:///./formats/font.js","webpack:///./formats/size.js","webpack:///./modules/history.js","webpack:///./modules/keyboard.js","webpack:///./formats/indent.js","webpack:///./formats/blockquote.js","webpack:///./formats/header.js","webpack:///./formats/list.js","webpack:///./formats/bold.js","webpack:///./formats/italic.js","webpack:///./formats/link.js","webpack:///./formats/script.js","webpack:///./formats/strike.js","webpack:///./formats/underline.js","webpack:///./formats/image.js","webpack:///./formats/video.js","webpack:///./modules/formula.js","webpack:///./modules/syntax.js","webpack:///./modules/toolbar.js","webpack:///./ui/icons.js","webpack:///./assets/icons/align-left.svg","webpack:///./assets/icons/align-center.svg","webpack:///./assets/icons/align-right.svg","webpack:///./assets/icons/align-justify.svg","webpack:///./assets/icons/background.svg","webpack:///./assets/icons/blockquote.svg","webpack:///./assets/icons/bold.svg","webpack:///./assets/icons/clean.svg","webpack:///./assets/icons/code.svg","webpack:///./assets/icons/color.svg","webpack:///./assets/icons/direction-ltr.svg","webpack:///./assets/icons/direction-rtl.svg","webpack:///./assets/icons/float-center.svg","webpack:///./assets/icons/float-full.svg","webpack:///./assets/icons/float-left.svg","webpack:///./assets/icons/float-right.svg","webpack:///./assets/icons/formula.svg","webpack:///./assets/icons/header.svg","webpack:///./assets/icons/header-2.svg","webpack:///./assets/icons/italic.svg","webpack:///./assets/icons/image.svg","webpack:///./assets/icons/indent.svg","webpack:///./assets/icons/outdent.svg","webpack:///./assets/icons/link.svg","webpack:///./assets/icons/list-ordered.svg","webpack:///./assets/icons/list-bullet.svg","webpack:///./assets/icons/subscript.svg","webpack:///./assets/icons/superscript.svg","webpack:///./assets/icons/strike.svg","webpack:///./assets/icons/underline.svg","webpack:///./assets/icons/video.svg","webpack:///./ui/picker.js","webpack:///./assets/icons/dropdown.svg","webpack:///./ui/color-picker.js","webpack:///./ui/icon-picker.js","webpack:///./ui/tooltip.js","webpack:///./themes/bubble.js","webpack:///./themes/base.js","webpack:///./themes/snow.js","webpack:///../delta/~/deep-equal/index.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","i","Object","prototype","hasOwnProperty","_m","args","slice","fn","a","b","apply","concat","_interopRequireDefault","obj","__esModule","default","_core","_core2","_align","_direction","_indent","_blockquote","_blockquote2","_header","_header2","_list","_list2","_background","_color","_font","_size","_bold","_bold2","_italic","_italic2","_link","_link2","_script","_script2","_strike","_strike2","_underline","_underline2","_image","_image2","_video","_video2","_code","_code2","_formula","_formula2","_syntax","_syntax2","_toolbar","_toolbar2","_icons","_icons2","_picker","_picker2","_colorPicker","_colorPicker2","_iconPicker","_iconPicker2","_tooltip","_tooltip2","_bubble","_bubble2","_snow","_snow2","register","attributors/attribute/direction","DirectionAttribute","attributors/class/align","AlignClass","attributors/class/background","BackgroundClass","attributors/class/color","ColorClass","attributors/class/direction","DirectionClass","attributors/class/font","FontClass","attributors/class/size","SizeClass","attributors/style/align","AlignStyle","attributors/style/background","BackgroundStyle","attributors/style/color","ColorStyle","attributors/style/direction","DirectionStyle","attributors/style/font","FontStyle","attributors/style/size","SizeStyle","formats/align","formats/direction","formats/indent","IndentClass","formats/background","formats/color","formats/font","formats/size","formats/blockquote","formats/code-block","formats/header","formats/list","formats/bold","formats/code","Code","formats/italic","formats/link","formats/script","formats/strike","formats/underline","formats/image","formats/video","formats/list/item","ListItem","modules/formula","modules/syntax","modules/toolbar","themes/bubble","themes/snow","ui/icons","ui/picker","ui/icon-picker","ui/color-picker","ui/tooltip","_parchment","_parchment2","_quill","_quill2","_block","_block2","_break","_break2","_container","_container2","_cursor","_cursor2","_embed","_embed2","_inline","_inline2","_scroll","_scroll2","_text","_text2","_clipboard","_clipboard2","_history","_history2","_keyboard","_keyboard2","blots/block","blots/block/embed","BlockEmbed","blots/break","blots/container","blots/cursor","blots/embed","blots/inline","blots/scroll","blots/text","modules/clipboard","modules/history","modules/keyboard","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Parchment","Scope","create","find","query","Container","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Class","Style","Store","defineProperty","value","makeBlot","node","blot","e","INLINE","childNodes","forEach","child","domNode","appendChild","parentNode","replaceChild","attach","__extends","d","__","constructor","linked_list_1","shadow_1","ContainerBlot","_super","arguments","other","insertBefore","_this","children","reverse","head","err","ParchmentError","deleteAt","index","length","remove","forEachAt","offset","descendant","criteria","_a","blotName","descendants","Number","MAX_VALUE","lengthLeft","push","detach","formatAt","name","insertAt","def","childBlot","refBlot","statics","allowedChildren","some","insertInto","reduce","memo","moveChildren","targetParent","refNode","optimize","defaultChild","path","inclusive","position","removeChild","replace","target","split","force","next","after","clone","parent","unwrap","update","mutations","addedNodes","removedNodes","mutation","type","document","body","compareDocumentPosition","Node","DOCUMENT_POSITION_CONTAINED_BY","filter","sort","DOCUMENT_POSITION_FOLLOWING","nextSibling","LinkedList","tail","undefined","append","nodes","_i","contains","cur","iterator","prev","curNode","ret","length_1","callback","startNode","curIndex","curLength","Math","min","map","ShadowBlot","get","enumerable","configurable","tagName","Array","isArray","toUpperCase","parseInt","toString","createElement","indexOf","className","classList","add","DATA_KEY","cloneNode","isolate","BLOT","wrap","ATTRIBUTE","parent_1","scope","format","ref","parentBlot","refDomNode","replaceWith","replacement","wrapper","input","match","BlotClass","bubble","ANY","types","attributes","LEVEL","BLOCK","HTMLElement","names","getAttribute","classes","tags","console","log","nodeType","TYPE","Definitions","Definition","attrName","keyName","tagNames","tag","message","Error","FormatBlot","formats","toLowerCase","attribute","values","copy","build","move","options","attributeBit","whitelist","keys","item","canAdd","setAttribute","removeAttribute","AttributorStore","styles","attr","key","prefix","ClassAttributor","join","matches","result","camelize","parts","rest","part","StyleAttributor","arr","trim","style","LeafBlot","INLINE_BLOT","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","MAX_OPTIMIZE_ITERATIONS","ScrollBlot","observer","MutationObserver","observe","disconnect","takeRecords","mark","markParent","remaining","previousSibling","grandChild","BLOCK_BLOT","isEqual","obj1","obj2","prop","InlineBlot","BlockBlot","EmbedBlot","TextBlot","text","createTextNode","data","splitText","_defineProperty","writable","_classCallCheck","instance","Constructor","TypeError","expandConfig","container","userConfig","_extend2","clipboard","keyboard","history","theme","Quill","DEFAULTS","import","_theme2","themeConfig","config","moduleNames","moduleConfig","moduleClass","debug","error","toolbar","querySelector","modify","modifier","source","shift","strict","isEnabled","_emitter4","sources","USER","_quillDelta2","range","getSelection","oldDelta","editor","delta","change","shiftRange","setSelection","SILENT","_emitter","events","TEXT_CHANGE","emitter","emit","EDITOR_CHANGE","_emitter2","overload","_typeof","API","start","end","_map","pos","transformPosition","_map2","_slicedToArray","_map3","max","_map4","_selection","Range","Symbol","sliceIterator","_arr","_n","_d","_e","_s","done","_createClass","defineProperties","props","descriptor","protoProps","staticProps","_quillDelta","_editor","_editor2","_emitter3","_module","_module2","_selection2","_extend","_logger","_logger2","_theme","_this2","html","innerHTML","addContainer","scroll","selection","addModule","init","on","toggle","isBlank","SCROLL_UPDATE","lastRange","contents","convert","setContents","clear","placeholder","readOnly","disable","limit","level","imports","overwrite","warn","startsWith","setRange","_this3","_overload","_overload2","deleteText","enable","enabled","blur","focus","scrollIntoView","_this4","formatLine","formatText","_this5","_overload3","_overload4","_this6","_overload5","_overload6","getBounds","getLength","_overload7","_overload8","getContents","getFormat","getRange","_overload9","_overload10","getText","hasFocus","embed","_this7","insertEmbed","_this8","_overload11","_overload12","insertText","off","once","dangerouslyPasteHTML","_this9","_overload13","_overload14","removeFormat","_this10","deleted","applied","applyDelta","lastOp","ops","insert","delete","compose","_overload15","_overload16","_this11","bounds","version","parchment","core/module","core/theme","elem","_toggle","DOMTokenList","token","String","searchString","substr","endsWith","subjectString","isFinite","floor","lastIndex","predicate","list","thisArg","addEventListener","execCommand","diff","equal","extend","op","NULL_CHARACTER","fromCharCode","Delta","newOp","retain","unshift","splice","partition","passed","failed","initial","chop","pop","Infinity","iter","hasNext","nextOp","thisIter","otherIter","peekType","peekLength","thisOp","otherOp","strings","prep","diffResult","component","opLength","INSERT","DELETE","EQUAL","eachLine","newline","line","peek","transform","priority","nextType","diff_main","text1","text2","cursor_pos","DIFF_EQUAL","commonlength","diff_commonPrefix","commonprefix","substring","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","fix_cursor","DIFF_INSERT","DIFF_DELETE","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","ceil","v_offset","v_length","v1","v2","x","front","k1start","k1end","k2start","k2end","k1","x1","k1_offset","y1","charAt","k2_offset","x2","diff_bisectSplit_","k2","y2","y","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","j","best_common","prefixLength","suffixLength","hm1","hm2","pointer","count_delete","count_insert","text_delete","text_insert","changes","cursor_normalize_diff","current_pos","next_pos","split_pos","d_left","d_right","norm","ndiffs","cursor_pointer","d_next","merge_tuples","suffix","left_d","right_d","shim","supported","object","unsupported","propertyIsEnumerable","supportsArgumentsClass","hasOwn","toStr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","src","copyIsArray","deep","Iterator","lib","keepNull","retOp","combineFormats","combined","merged","normalizeDelta","_clone2","image","bullet","_op","_op2","_clone","_deepEqual","_deepEqual2","Editor","getDelta","consumeNextNewline","scrollLength","batch","_scroll$line","_scroll$line2","bubbleFormats","_line$descendant","_line$descendant2","leaf","lines","lengthRemaining","lineLength","codeIndex","codeLength","newlineIndex","leaves","_path","formatsArr","blots","_scroll$line3","_scroll$line4","cursorIndex","textBlot","oldValue","CONTENTS","oldText","newText","diffDelta","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","setPrototypeOf","__proto__","_get","property","receiver","Function","desc","getOwnPropertyDescriptor","getPrototypeOf","getter","_Inline","CodeBlock","_Block","textContent","frag","_descendant","_descendant2","nextNewline","prevNewline","isolateLength","_descendant3","_descendant4","searchIndex","lastIndexOf","querySelectorAll","TAB","NEWLINE_LENGTH","_Embed","BLOCK_ATTRIBUTE","block","_Parchment$Block","cache","Break","_Parchment$Embed","_Parchment$Inline","compare","selfIndex","order","otherIndex","_Parchment$Text","Cursor","textNode","_length","composing","getNativeRange","restoreText","_ref","lastChild","SCROLL_OPTIMIZE","setNativeRange","restore","_eventemitter","_eventemitter2","Emitter","_EventEmitter","SCROLL_BEFORE_UPDATE","SELECTION_CHANGE","Events","EE","context","EventEmitter","_events","_eventsCount","has","eventNames","getOwnPropertySymbols","listeners","event","exists","evt","available","l","ee","a1","a2","a3","a4","a5","len","removeListener","listener","removeAllListeners","addListener","setMaxListeners","prefixed","method","levels","_len","_key","namespace","ns","logger","bind","newLevel","circular","depth","proto","nativeMap","nativeSet","nativePromise","resolve","reject","then","__isArray","__isRegExp","RegExp","__getRegExpFlags","__isDate","Date","getTime","useBuffer","Buffer","isBuffer","allParents","allChildren","keyIterator","keyChild","valueChild","set","entryChild","attrs","symbols","symbol","__objToStr","o","re","flags","global","ignoreCase","multiline","Map","_","Set","Promise","clonePrototype","Module","quill","_toConsumableArray","arr2","from","Selection","cursor","savedRange","eventName","setTimeout","native","ignored","bodyTop","scrollTop","nativeRange","collapsed","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","createRange","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","getBoundingClientRect","side","rect","height","left","width","top","containerBounds","right","bottom","rangeCount","getRangeAt","startContainer","endContainer","startOffset","endOffset","info","positions","indexes","_position","activeElement","offsetHeight","offsetTop","endNode","removeAllRanges","addRange","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","oldRange","_getRange","_getRange2","Theme","themes","_Parchment$Container","isLine","_Parchment$Scroll","_line","_line2","first","_line3","_line4","last","getLines","computeStyle","ELEMENT_NODE","DOM_KEY","window","getComputedStyle","deltaEndsWith","endText","display","matchAlias","matchAttributor","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","matchBlot","matchBreak","matchIgnore","matchNewline","matchSpacing","nextElementSibling","nodeHeight","parseFloat","marginTop","marginBottom","matchStyles","fontWeight","bold","textIndent","matchText","whiteSpace","replacer","collapse","CLIPBOARD_CONFIG","TEXT_NODE","AlignAttribute","Clipboard","_Module","onPaste","matchers","pair","addMatcher","selector","matcher","textMatchers","elementMatchers","_pair","traverse","childNode","childrenDelta","paste","updateContents","defaultPrevented","ColorAttributor","_Parchment$Attributor","FontStyleAttributor","endsWithNewlineChange","getLastChangeIndex","deleteLength","changeIndex","History","lastRecorded","ignoreChange","userOnly","record","addBinding","shortKey","undo","shiftKey","redo","test","navigator","platform","dest","stack","changeDelta","undoDelta","timestamp","now","delay","maxStack","handleBackspace","_quill$scroll$line3","_quill$scroll$line4","curFormats","prevFormats","handleDelete","handleDeleteRange","handleEnter","lineFormats","makeCodeBlockHandler","indent","Keyboard","code-block","handler","_quill$scroll$descend","_quill$scroll$descend2","scrollOffset","makeFormatHandler","normalize","binding","charCodeAt","SHORTKEY","bindings","ENTER","metaKey","ctrlKey","altKey","BACKSPACE","userAgent","listen","which","keyCode","_quill$scroll$line","_quill$scroll$line2","_quill$scroll$leaf","_quill$scroll$leaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","prevented","every","preventDefault","ESCAPE","LEFT","UP","RIGHT","DOWN","italic","underline","outdent","outdent backspace","blockquote","indent code-block","outdent code-block","remove tab","tab","list empty enter","header enter","list autofill","IdentAttributor","Blockquote","Header","List","_Container","Bold","Italic","_Bold","sanitize","url","protocols","anchor","href","protocol","Link","SANITIZED_URL","Script","Strike","Underline","ATTRIBUTES","Image","hasAttribute","Video","_BlockEmbed","Formula","katex","FormulaBlot","render","CodeToken","SyntaxCodeBlock","_CodeBlock","highlight","cachedHTML","Syntax","timer","code","hljs","highlightAuto","addButton","addControls","groups","controls","group","control","addSelect","option","Toolbar","_ret","handlers","addHandler","_this$quill$selection","_this$quill$selection2","selectedIndex","selected","_quill$selection$getR","_quill$selection$getR2","prompt","isActive","clean","direction","align","link","","center","justify","background","color","rtl","float","full","formula","header","1","2","+1","-1","ordered","script","sub","super","strike","video","_dropdown","_dropdown2","Picker","select","buildPicker","label","selectItem","buildItem","buildLabel","buildOptions","trigger","Event","dispatchEvent","createEvent","initEvent","close","ColorPicker","_Picker","backgroundColor","colorLabel","stroke","fill","IconPicker","icons","defaultItem","Tooltip","boundsContainer","TEMPLATE","checkBounds","hide","reference","offsetWidth","rootBounds","BubbleTooltip","_base","_base2","TOOLBAR_CONFIG","BubbleTheme","_BaseTheme","tooltip","buildButtons","buildPickers","edit","_BaseTooltip","show","lastLine","textbox","arrow","marginLeft","BaseTooltip","fillSelect","defaultValue","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","pickers","picker","removeEventListener","extendToolbar","buttons","button","selects","fileInput","files","reader","FileReader","onload","readAsDataURL","click","_Tooltip","save","cancel","mode","preview","linkRange","restoreFocus","SnowTheme","SnowTooltip","__webpack_module_template_argument_0__","__webpack_module_template_argument_1__","isUndefinedOrNull","objEquiv","opts","isArguments","pSlice","deepEqual","ka","objectKeys","kb","actual","expected"],"mappings":";;;;;;CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,UAAAH,GACA,gBAAAC,SACAA,QAAA,MAAAD,IAEAD,EAAA,MAAAC,KACCK,KAAA,WACD,MCMgB,UAAUC,GCZ1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAP,WACAS,GAAAF,EACAG,QAAA,EAUA,OANAL,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,QAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KAqCA,OATAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,GAGAR,EAAA,IDoBW,SAASD,GAEnB,IAAI,GAAIU,KAAKV,GACZ,GAAGW,OAAOC,UAAUC,eAAeP,KAAKN,EAASU,GAChD,aAAcV,GAAQU,IACtB,IAAK,WAAY,KACjB,KAAK,SAEJV,EAAQU,GAAM,SAASI,GACtB,GAAIC,GAAOD,EAAGE,MAAM,GAAIC,EAAKjB,EAAQc,EAAG,GACxC,OAAO,UAAUI,EAAEC,EAAEX,GACpBS,EAAGG,MAAMrB,MAAOmB,EAAEC,EAAEX,GAAGa,OAAON,MAE9Bf,EAAQU,GACV,MACD,SAECV,EAAQU,GAAKV,EAAQA,EAAQU,IAKhC,MAAOV,KAGF,SAASJ,EAAQD,EAASM,GAE/B,YA4GA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GEjMxF,GAAAG,GAAAzB,EAAA,GFyFK0B,EAASL,EAAuBI,GEvFrCE,EAAA3B,EAAA,IACA4B,EAAA5B,EAAA,IACA6B,EAAA7B,EAAA,IAEA8B,EAAA9B,EAAA,IF6FK+B,EAAeV,EAAuBS,GE5F3CE,EAAAhC,EAAA,IFgGKiC,EAAWZ,EAAuBW,GE/FvCE,EAAAlC,EAAA,IFmGKmC,EAASd,EAAuBa,GEjGrCE,EAAApC,EAAA,IACAqC,EAAArC,EAAA,IACAsC,EAAAtC,EAAA,IACAuC,EAAAvC,EAAA,IAEAwC,EAAAxC,EAAA,IFwGKyC,EAASpB,EAAuBmB,GEvGrCE,EAAA1C,EAAA,IF2GK2C,EAAWtB,EAAuBqB,GE1GvCE,EAAA5C,EAAA,IF8GK6C,EAASxB,EAAuBuB,GE7GrCE,EAAA9C,EAAA,IFiHK+C,EAAW1B,EAAuByB,GEhHvCE,EAAAhD,EAAA,IFoHKiD,EAAW5B,EAAuB2B,GEnHvCE,EAAAlD,EAAA,IFuHKmD,EAAc9B,EAAuB6B,GErH1CE,EAAApD,EAAA,IFyHKqD,EAAUhC,EAAuB+B,GExHtCE,EAAAtD,EAAA,IF4HKuD,EAAUlC,EAAuBiC,GE1HtCE,EAAAxD,EAAA,IF8HKyD,EAASpC,EAAuBmC,GE5HrCE,EAAA1D,EAAA,IFgIK2D,EAAYtC,EAAuBqC,GE/HxCE,EAAA5D,EAAA,IFmIK6D,EAAWxC,EAAuBuC,GElIvCE,EAAA9D,EAAA,IFsIK+D,EAAY1C,EAAuByC,GEpIxCE,EAAAhE,EAAA,IFwIKiE,EAAU5C,EAAuB2C,GEvItCE,EAAAlE,EAAA,KF2IKmE,EAAW9C,EAAuB6C,GE1IvCE,EAAApE,EAAA,KF8IKqE,EAAgBhD,EAAuB+C,GE7I5CE,EAAAtE,EAAA,KFiJKuE,EAAelD,EAAuBiD,GEhJ3CE,EAAAxE,EAAA,KFoJKyE,EAAYpD,EAAuBmD,GElJxCE,EAAA1E,EAAA,KFsJK2E,GAAWtD,EAAuBqD,GErJvCE,GAAA5E,EAAA,KFyJK6E,GAASxD,EAAuBuD,GEtJrClD,GAAAF,QAAMsD,UACJC,kCAAAnD,EAAAoD,mBAEAC,0BAAAtD,EAAAuD,WACAC,+BAAA/C,EAAAgD,gBACAC,0BAAAhD,EAAAiD,WACAC,8BAAA3D,EAAA4D,eACAC,yBAAAnD,EAAAoD,UACAC,yBAAApD,EAAAqD,UAEAC,0BAAAlE,EAAAmE,WACAC,+BAAA3D,EAAA4D,gBACAC,0BAAA5D,EAAA6D,WACAC,8BAAAvE,EAAAwE,eACAC,yBAAA/D,EAAAgE,UACAC,yBAAAhE,EAAAiE,YACC,GAGH9E,EAAAF,QAAMsD,UACJ2B,gBAAA9E,EAAAuD,WACAwB,oBAAA9E,EAAA4D,eACAmB,iBAAA9E,EAAA+E,YAEAC,qBAAAzE,EAAA4D,gBACAc,gBAAAzE,EAAA6D,WACAa,eAAAzE,EAAAoD,UACAsB,eAAAzE,EAAAqD,UAEAqB,qBAAAlF,EAAAP,QACA0F,qBAAAzD,EAAAjC,QACA2F,iBAAAlF,EAAAT,QACA4F,eAAAjF,EAAAX,QAEA6F,eAAA5E,EAAAjB,QACA8F,eAAA9D,EAAA+D,KACAC,iBAAA7E,EAAAnB,QACAiG,eAAA5E,EAAArB,QACAkG,iBAAA3E,EAAAvB,QACAmG,iBAAA1E,EAAAzB,QACAoG,oBAAAzE,EAAA3B,QAEAqG,gBAAAxE,EAAA7B,QACAsG,gBAAAvE,EAAA/B,QAEAuG,oBAAA7F,EAAA8F,SAEAC,kBAAAtE,EAAAnC,QACA0G,iBAAArE,EAAArC,QACA2G,kBAAApE,EAAAvC,QAEA4G,gBAAAzD,GAAAnD,QACA6G,cAAAxD,GAAArD,QAEA8G,WAAArE,EAAAzC,QACA+G,YAAApE,EAAA3C,QACAgH,iBAAAjE,EAAA/C,QACAiH,kBAAApE,EAAA7C,QACAkH,aAAAjE,EAAAjD,UACC,GAGH7B,EAAOD,QAAPgC,EAAAF,SF4JM,SAAS7B,EAAQD,EAASM,GAE/B,YAsDA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GG3TxF,GAAAqH,GAAA3I,EAAA,GHyQK4I,EAAcvH,EAAuBsH,GGxQ1CE,EAAA7I,EAAA,IH4QK8I,EAAUzH,EAAuBwH,GG1QtCE,EAAA/I,EAAA,IH8QKgJ,EAAU3H,EAAuB0H,GG7QtCE,EAAAjJ,EAAA,IHiRKkJ,EAAU7H,EAAuB4H,GGhRtCE,EAAAnJ,EAAA,IHoRKoJ,EAAc/H,EAAuB8H,GGnR1CE,EAAArJ,EAAA,IHuRKsJ,EAAWjI,EAAuBgI,GGtRvCE,EAAAvJ,EAAA,IH0RKwJ,EAAUnI,EAAuBkI,GGzRtCE,EAAAzJ,EAAA,IH6RK0J,EAAWrI,EAAuBoI,GG5RvCE,EAAA3J,EAAA,IHgSK4J,EAAWvI,EAAuBsI,GG/RvCE,EAAA7J,EAAA,IHmSK8J,EAASzI,EAAuBwI,GGjSrCE,EAAA/J,EAAA,IHqSKgK,EAAc3I,EAAuB0I,GGpS1CE,EAAAjK,EAAA,IHwSKkK,EAAY7I,EAAuB4I,GGvSxCE,EAAAnK,EAAA,IH2SKoK,EAAa/I,EAAuB8I,EGzSzCrB,GAAAtH,QAAMsD,UACJuF,cAAArB,EAAAxH,QACA8I,oBAAAvB,EAAAwB,WACAC,cAAAtB,EAAA1H,QACAiJ,kBAAArB,EAAA5H,QACAkJ,eAAApB,EAAA9H,QACAmJ,cAAAnB,EAAAhI,QACAoJ,eAAAlB,EAAAlI,QACAqJ,eAAAjB,EAAApI,QACAsJ,aAAAhB,EAAAtI,QAEAuJ,oBAAAf,EAAAxI,QACAwJ,kBAAAd,EAAA1I,QACAyJ,mBAAAb,EAAA5I,UAGFoH,EAAApH,QAAUsD,SAAVkE,EAAAxH,QAAA0H,EAAA1H,QAAA8H,EAAA9H,QAAAkI,EAAAlI,QAAAoI,EAAApI,QAAAsI,EAAAtI,SAGA7B,EAAOD,QAAPoJ,EAAAtH,SHgTM,SAAS7B,EAAQD,EAASM,GInVhC,YACA,IAAAkL,GAAAlL,EAAA,GACAmL,EAAAnL,EAAA,GACAoL,EAAApL,EAAA,IACAqL,EAAArL,EAAA,IACAsL,EAAAtL,EAAA,IACAuL,EAAAvL,EAAA,IACAwL,EAAAxL,EAAA,IACAyL,EAAAzL,EAAA,IACA0L,EAAA1L,EAAA,GACA2L,EAAA3L,EAAA,IACA4L,EAAA5L,EAAA,IACA6L,EAAA7L,EAAA,GACA8L,EAAA9L,EAAA,GACA+L,GACAC,MAAAF,EAAAE,MACAC,OAAAH,EAAAG,OACAC,KAAAJ,EAAAI,KACAC,MAAAL,EAAAK,MACArH,SAAAgH,EAAAhH,SACAsH,UAAAlB,EAAA1J,QACA6K,OAAAlB,EAAA3J,QACA8K,KAAAlB,EAAA5J,QACA+K,MAAAf,EAAAhK,QACAgL,OAAAnB,EAAA7J,QACAiL,MAAAlB,EAAA/J,QACAkL,OAAApB,EAAA9J,QACAmL,KAAAlB,EAAAjK,QACAoL,YACAC,UAAAnB,EAAAlK,QACAsL,MAAAnB,EAAAnK,QACAuL,MAAAnB,EAAApK,QACAwL,MAAAnB,EAAArK,SAGAd,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAAuK,GJ0VM,SAASpM,EAAQD,EAASM,GK9XhC,YAoNA,SAAAmN,GAAAC,GACA,GAAAC,GAAAvB,EAAAI,KAAAkB,EACA,UAAAC,EACA,IACAA,EAAAvB,EAAAG,OAAAmB,GAEA,MAAAE,GACAD,EAAAvB,EAAAG,OAAAH,EAAAE,MAAAuB,WACAxM,MAAAV,KAAA+M,EAAAI,YAAAC,QAAA,SAAAC,GACAL,EAAAM,QAAAC,YAAAF,KAEAN,EAAAS,WAAAC,aAAAT,EAAAM,QAAAP,GACAC,EAAAU,SAGA,MAAAV,GAlOA,GAAAW,GAAAlO,WAAAkO,WAAA,SAAAC,EAAA/M,GAEA,QAAAgN,KAAmBpO,KAAAqO,YAAAF,EADnB,OAAAzN,KAAAU,KAAAN,eAAAJ,KAAAyN,EAAAzN,GAAAU,EAAAV,GAEAyN,GAAAtN,UAAA,OAAAO,EAAAR,OAAAuL,OAAA/K,IAAAgN,EAAAvN,UAAAO,EAAAP,UAAA,GAAAuN,KAEAE,EAAApO,EAAA,GACAqO,EAAArO,EAAA,GACA8L,EAAA9L,EAAA,GACAsO,EAAA,SAAAC,GAEA,QAAAD,KACAC,EAAApN,MAAArB,KAAA0O,WAsMA,MAxMAR,GAAAM,EAAAC,GAIAD,EAAA3N,UAAAiN,YAAA,SAAAa,GACA3O,KAAA4O,aAAAD,IAEAH,EAAA3N,UAAAoN,OAAA,WACA,GAAAY,GAAA7O,IACAyO,GAAA5N,UAAAoN,OAAA1N,KAAAP,MACAA,KAAA8O,SAAA,GAAAR,GAAA5M,WAEAT,MAAAV,KAAAP,KAAA6N,QAAAH,YAAAqB,UAAApB,QAAA,SAAAL,GACA,IACA,GAAAM,GAAAP,EAAAC,EACAuB,GAAAD,aAAAhB,EAAAiB,EAAAC,SAAAE,MAEA,MAAAC,GACA,GAAAA,YAAAjD,GAAAkD,eACA,MAEA,MAAAD,OAIAT,EAAA3N,UAAAsO,SAAA,SAAAC,EAAAC,GACA,WAAAD,GAAAC,IAAArP,KAAAqP,SACArP,KAAAsP,aAEAtP,MAAA8O,SAAAS,UAAAH,EAAAC,EAAA,SAAAzB,EAAA4B,EAAAH,GACAzB,EAAAuB,SAAAK,EAAAH,MAGAb,EAAA3N,UAAA4O,WAAA,SAAAC,EAAAN,GACA,GAAAO,GAAA3P,KAAA8O,SAAA1C,KAAAgD,GAAAxB,EAAA+B,EAAA,GAAAH,EAAAG,EAAA,EACA,cAAAD,EAAAE,UAAAF,EAAA9B,IACA,MAAA8B,EAAAE,UAAAhC,YAAA8B,IACA9B,EAAA4B,GAEA5B,YAAAY,GACAZ,EAAA6B,WAAAC,EAAAF,IAGA,UAGAhB,EAAA3N,UAAAgP,YAAA,SAAAH,EAAAN,EAAAC,GACA,SAAAD,IAA+BA,EAAA,GAC/B,SAAAC,IAAgCA,EAAAS,OAAAC,UAChC,IAAAF,MAAAG,EAAAX,CAWA,OAVArP,MAAA8O,SAAAS,UAAAH,EAAAC,EAAA,SAAAzB,EAAAwB,EAAAC,IACA,MAAAK,EAAAE,UAAAF,EAAA9B,IACA,MAAA8B,EAAAE,UAAAhC,YAAA8B,KACAG,EAAAI,KAAArC,GAEAA,YAAAY,KACAqB,IAAAvO,OAAAsM,EAAAiC,YAAAH,EAAAN,EAAAY,KAEAA,GAAAX,IAEAQ,GAEArB,EAAA3N,UAAAqP,OAAA,WACAlQ,KAAA8O,SAAAnB,QAAA,SAAAC,GACAA,EAAAsC,WAEAzB,EAAA5N,UAAAqP,OAAA3P,KAAAP,OAEAwO,EAAA3N,UAAAsP,SAAA,SAAAf,EAAAC,EAAAe,EAAAhD,GACApN,KAAA8O,SAAAS,UAAAH,EAAAC,EAAA,SAAAzB,EAAA4B,EAAAH,GACAzB,EAAAuC,SAAAX,EAAAH,EAAAe,EAAAhD,MAGAoB,EAAA3N,UAAAwP,SAAA,SAAAjB,EAAAhC,EAAAkD,GACA,GAAAX,GAAA3P,KAAA8O,SAAA1C,KAAAgD,GAAAxB,EAAA+B,EAAA,GAAAH,EAAAG,EAAA,EACA,IAAA/B,EACAA,EAAAyC,SAAAb,EAAApC,EAAAkD,OAEA,CACA,GAAA/C,GAAA,MAAA+C,EAAAtE,EAAAG,OAAA,OAAAiB,GAAApB,EAAAG,OAAAiB,EAAAkD,EACAtQ,MAAA8N,YAAAP,KAGAiB,EAAA3N,UAAA+N,aAAA,SAAA2B,EAAAC,GACA,SAAAxQ,KAAAyQ,QAAAC,kBAAA1Q,KAAAyQ,QAAAC,gBAAAC,KAAA,SAAA/C,GACA,MAAA2C,aAAA3C,KAEA,SAAA5B,GAAAkD,eAAA,iBAAAqB,EAAAE,QAAAb,SAAA,SAAA5P,KAAAyQ,QAAAb,SAEAW,GAAAK,WAAA5Q,KAAAwQ,IAEAhC,EAAA3N,UAAAwO,OAAA,WACA,MAAArP,MAAA8O,SAAA+B,OAAA,SAAAC,EAAAlD,GACA,MAAAkD,GAAAlD,EAAAyB,UACS,IAETb,EAAA3N,UAAAkQ,aAAA,SAAAC,EAAAC,GACAjR,KAAA8O,SAAAnB,QAAA,SAAAC,GACAoD,EAAApC,aAAAhB,EAAAqD,MAGAzC,EAAA3N,UAAAqQ,SAAA,WAEA,GADAzC,EAAA5N,UAAAqQ,SAAA3Q,KAAAP,MACA,IAAAA,KAAA8O,SAAAO,OACA,SAAArP,KAAAyQ,QAAAU,aAAA,CACA,GAAAvD,GAAA5B,EAAAG,OAAAnM,KAAAyQ,QAAAU,aACAnR,MAAA8N,YAAAF,GACAA,EAAAsD,eAGAlR,MAAAsP,UAIAd,EAAA3N,UAAAuQ,KAAA,SAAAhC,EAAAiC,GACA,SAAAA,IAAmCA,GAAA,EACnC,IAAA1B,GAAA3P,KAAA8O,SAAA1C,KAAAgD,EAAAiC,GAAAzD,EAAA+B,EAAA,GAAAH,EAAAG,EAAA,GACA2B,IAAAtR,KAAAoP,GACA,OAAAxB,aAAAY,GACA8C,EAAAhQ,OAAAsM,EAAAwD,KAAA5B,EAAA6B,KAEA,MAAAzD,GACA0D,EAAArB,MAAArC,EAAA4B,IAEA8B,IAEA9C,EAAA3N,UAAA0Q,YAAA,SAAA3D,GACA5N,KAAA8O,SAAAQ,OAAA1B,IAEAY,EAAA3N,UAAA2Q,QAAA,SAAAC,GACAA,YAAAjD,IACAiD,EAAAV,aAAA/Q,MAEAyO,EAAA5N,UAAA2Q,QAAAjR,KAAAP,KAAAyR,IAEAjD,EAAA3N,UAAA6Q,MAAA,SAAAtC,EAAAuC,GAEA,GADA,SAAAA,IAA+BA,GAAA,IAC/BA,EAAA,CACA,OAAAvC,EACA,MAAApP,KACA,IAAAoP,IAAApP,KAAAqP,SACA,MAAArP,MAAA4R,KAEA,GAAAC,GAAA7R,KAAA8R,OAMA,OALA9R,MAAA+R,OAAAnD,aAAAiD,EAAA7R,KAAA4R,MACA5R,KAAA8O,SAAAS,UAAAH,EAAApP,KAAAqP,SAAA,SAAAzB,EAAA4B,EAAAH,GACAzB,IAAA8D,MAAAlC,EAAAmC,GACAE,EAAA/D,YAAAF,KAEAiE,GAEArD,EAAA3N,UAAAmR,OAAA,WACAhS,KAAA+Q,aAAA/Q,KAAA+R,OAAA/R,KAAA4R,MACA5R,KAAAsP,UAEAd,EAAA3N,UAAAoR,OAAA,SAAAC,GACA,GAAArD,GAAA7O,KACAmS,KAAAC,IACAF,GAAAvE,QAAA,SAAA0E,GACAA,EAAAZ,SAAA5C,EAAAhB,SAAA,cAAAwE,EAAAC,OACAH,EAAAlC,KAAA5O,MAAA8Q,EAAAE,EAAAF,YACAC,EAAAnC,KAAA5O,MAAA+Q,EAAAC,EAAAD,iBAGAA,EAAAzE,QAAA,SAAAL,GACA,WAAAA,EAAAS,YACAwE,SAAAC,KAAAC,wBAAAnF,GAAAoF,KAAAC,gCADA,CAKA,GAAApF,GAAAvB,EAAAI,KAAAkB,EACA,OAAAC,IAEA,MAAAA,EAAAM,QAAAE,YAAAR,EAAAM,QAAAE,aAAAc,EAAAhB,SACAN,EAAA2C,aAGAiC,EAAAS,OAAA,SAAAtF,GACA,MAAAA,GAAAS,YAAAc,EAAAhB,UACSgF,KAAA,SAAA1R,EAAAC,GACT,MAAAD,KAAAC,EACA,EACAD,EAAAsR,wBAAArR,GAAAsR,KAAAI,4BACA,GAEA,IACSnF,QAAA,SAAAL,GACT,GAAAkD,GAAA,IACA,OAAAlD,EAAAyF,cACAvC,EAAAxE,EAAAI,KAAAkB,EAAAyF,aAEA,IAAAxF,GAAAF,EAAAC,EACAC,GAAAqE,MAAApB,GAAA,MAAAjD,EAAAqE,OACA,MAAArE,EAAAwE,QACAxE,EAAAwE,OAAAR,YAAA1C,GAEAA,EAAAD,aAAArB,EAAAiD,OAIAhC,GACCD,EAAA7M,QAkBDd,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAA8M,GLqYM,SAAS3O,EAAQD,GM3mBvB,YACA,IAAAoT,GAAA,WACA,QAAAA,KACAhT,KAAAgP,KAAAhP,KAAAiT,KAAAC,OACAlT,KAAAqP,OAAA,EA2HA,MAzHA2D,GAAAnS,UAAAsS,OAAA,WAEA,OADAC,MACAC,EAAA,EAAwBA,EAAA3E,UAAAW,OAAuBgE,IAC/CD,EAAAC,EAAA,GAAA3E,UAAA2E,EAEArT,MAAA4O,aAAAwE,EAAA,GAAAF,QACAE,EAAA/D,OAAA,GACArP,KAAAmT,OAAA9R,MAAArB,KAAAoT,EAAAnS,MAAA,KAGA+R,EAAAnS,UAAAyS,SAAA,SAAAhG,GAEA,IADA,GAAAiG,GAAA3B,EAAA5R,KAAAwT,WACAD,EAAA3B,KACA,GAAA2B,IAAAjG,EACA,QAEA,WAEA0F,EAAAnS,UAAA+N,aAAA,SAAAtB,EAAA2D,GACA3D,EAAAsE,KAAAX,EACA,MAAAA,GACA3D,EAAAmG,KAAAxC,EAAAwC,KACA,MAAAxC,EAAAwC,OACAxC,EAAAwC,KAAA7B,KAAAtE,GAEA2D,EAAAwC,KAAAnG,EACA2D,IAAAjR,KAAAgP,OACAhP,KAAAgP,KAAA1B,IAGA,MAAAtN,KAAAiT,MACAjT,KAAAiT,KAAArB,KAAAtE,EACAA,EAAAmG,KAAAzT,KAAAiT,KACAjT,KAAAiT,KAAA3F,IAGAA,EAAAmG,KAAAP,OACAlT,KAAAgP,KAAAhP,KAAAiT,KAAA3F,GAEAtN,KAAAqP,QAAA,GAEA2D,EAAAnS,UAAA2O,OAAA,SAAAiC,GAEA,IADA,GAAArC,GAAA,EAAAmE,EAAAvT,KAAAgP,KACA,MAAAuE,GAAA,CACA,GAAAA,IAAA9B,EACA,MAAArC,EACAA,IAAAmE,EAAAlE,SACAkE,IAAA3B,KAEA,UAEAoB,EAAAnS,UAAAyO,OAAA,SAAAhC,GACAtN,KAAAsT,SAAAhG,KAEA,MAAAA,EAAAmG,OACAnG,EAAAmG,KAAA7B,KAAAtE,EAAAsE,MACA,MAAAtE,EAAAsE,OACAtE,EAAAsE,KAAA6B,KAAAnG,EAAAmG,MACAnG,IAAAtN,KAAAgP,OACAhP,KAAAgP,KAAA1B,EAAAsE,MACAtE,IAAAtN,KAAAiT,OACAjT,KAAAiT,KAAA3F,EAAAmG,MACAzT,KAAAqP,QAAA,IAEA2D,EAAAnS,UAAA2S,SAAA,SAAAE,GAGA,MAFA,UAAAA,IAAiCA,EAAA1T,KAAAgP,MAEjC,WACA,GAAA2E,GAAAD,CAGA,OAFA,OAAAA,IACAA,IAAA9B,MACA+B,IAGAX,EAAAnS,UAAAuL,KAAA,SAAAgD,EAAAiC,GACA,SAAAA,IAAmCA,GAAA,EAEnC,KADA,GAAAkC,GAAA3B,EAAA5R,KAAAwT,WACAD,EAAA3B,KAAA,CACA,GAAAgC,GAAAL,EAAAlE,QACA,IAAAD,EAAAwE,GAAAvC,GAAAjC,IAAAwE,IAAA,MAAAL,EAAA3B,MAAA,IAAA2B,EAAA3B,KAAAvC,UACA,OAAAkE,EAAAnE,EAEAA,IAAAwE,EAEA,gBAEAZ,EAAAnS,UAAA8M,QAAA,SAAAkG,GAEA,IADA,GAAAN,GAAA3B,EAAA5R,KAAAwT,WACAD,EAAA3B,KACAiC,EAAAN,IAGAP,EAAAnS,UAAA0O,UAAA,SAAAH,EAAAC,EAAAwE,GACA,KAAAxE,GAAA,GAIA,IAFA,GACAkE,GADA5D,EAAA3P,KAAAoM,KAAAgD,GAAA0E,EAAAnE,EAAA,GAAAH,EAAAG,EAAA,GACAoE,EAAA3E,EAAAI,EAAAoC,EAAA5R,KAAAwT,SAAAM,IACAP,EAAA3B,MAAAmC,EAAA3E,EAAAC,GAAA,CACA,GAAA2E,GAAAT,EAAAlE,QACAD,GAAA2E,EACAF,EAAAN,EAAAnE,EAAA2E,EAAAE,KAAAC,IAAA7E,EAAA0E,EAAAC,EAAA5E,IAGAyE,EAAAN,EAAA,EAAAU,KAAAC,IAAAF,EAAA5E,EAAAC,EAAA0E,IAEAA,GAAAC,IAGAhB,EAAAnS,UAAAsT,IAAA,SAAAN,GACA,MAAA7T,MAAA6Q,OAAA,SAAAC,EAAAyC,GAEA,MADAzC,GAAAb,KAAA4D,EAAAN,IACAzC,QAGAkC,EAAAnS,UAAAgQ,OAAA,SAAAgD,EAAA/C,GAEA,IADA,GAAAyC,GAAA3B,EAAA5R,KAAAwT,WACAD,EAAA3B,KACAd,EAAA+C,EAAA/C,EAAAyC,EAEA,OAAAzC,IAEAkC,IAEApS,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAAsR,GNknBM,SAASnT,EAAQD,EAASM,GOpvBhC,YACA,IAAA8L,GAAA9L,EAAA,GACAkU,EAAA,WACA,QAAAA,GAAAvG,GACA7N,KAAA6N,UACA7N,KAAAiO,SA2IA,MAzIArN,QAAAuM,eAAAiH,EAAAvT,UAAA,WAEAwT,IAAA,WACA,MAAArU,MAAAqO,aAEAiG,YAAA,EACAC,cAAA,IAEAH,EAAAjI,OAAA,SAAAiB,GACA,SAAApN,KAAAwU,QACA,SAAAxI,GAAAkD,eAAA,kCAEA,IAAA5B,EAwBA,OAvBAmH,OAAAC,QAAA1U,KAAAwU,UACA,gBAAApH,KACAA,IAAAuH,cACAC,SAAAxH,GAAAyH,aAAAzH,IACAA,EAAAwH,SAAAxH,KAIAE,EADA,gBAAAF,GACAmF,SAAAuC,cAAA9U,KAAAwU,QAAApH,EAAA,IAEApN,KAAAwU,QAAAO,QAAA3H,IAAA,EACAmF,SAAAuC,cAAA1H,GAGAmF,SAAAuC,cAAA9U,KAAAwU,QAAA,KAIAlH,EAAAiF,SAAAuC,cAAA9U,KAAAwU,SAEAxU,KAAAgV,WACA1H,EAAA2H,UAAAC,IAAAlV,KAAAgV,WAEA1H,GAEA8G,EAAAvT,UAAAoN,OAAA,WACAjO,KAAA6N,QAAA7B,EAAAmJ,WAA2C5H,KAAAvN,OAE3CoU,EAAAvT,UAAAiR,MAAA,WACA,GAAAjE,GAAA7N,KAAA6N,QAAAuH,WACA,OAAApJ,GAAAG,OAAA0B,IAEAuG,EAAAvT,UAAAqP,OAAA,WACA,MAAAlQ,KAAA+R,QACA/R,KAAA+R,OAAAR,YAAAvR,YACAA,MAAA6N,QAAA7B,EAAAmJ,WAEAf,EAAAvT,UAAAsO,SAAA,SAAAC,EAAAC,GACA,GAAA9B,GAAAvN,KAAAqV,QAAAjG,EAAAC,EACA9B,GAAA+B,UAEA8E,EAAAvT,UAAAsP,SAAA,SAAAf,EAAAC,EAAAe,EAAAhD,GACA,GAAAG,GAAAvN,KAAAqV,QAAAjG,EAAAC,EACA,UAAArD,EAAAK,MAAA+D,EAAApE,EAAAE,MAAAoJ,OAAAlI,EACAG,EAAAgI,KAAAnF,EAAAhD,OAEA,UAAApB,EAAAK,MAAA+D,EAAApE,EAAAE,MAAAsJ,WAAA,CACA,GAAAC,GAAAzJ,EAAAG,OAAAnM,KAAAyQ,QAAAiF,MACAnI,GAAAgI,KAAAE,GACAA,EAAAE,OAAAvF,EAAAhD,KAGAgH,EAAAvT,UAAAwP,SAAA,SAAAjB,EAAAhC,EAAAkD,GACA,GAAA/C,GAAA,MAAA+C,EAAAtE,EAAAG,OAAA,OAAAiB,GAAApB,EAAAG,OAAAiB,EAAAkD,GACAsF,EAAA5V,KAAA0R,MAAAtC,EACApP,MAAA+R,OAAAnD,aAAArB,EAAAqI,IAEAxB,EAAAvT,UAAA+P,WAAA,SAAAiF,EAAArF,GAKA,GAJA,MAAAxQ,KAAA+R,QACA/R,KAAA+R,OAAAjD,SAAAQ,OAAAtP,MAEA6V,EAAA/G,SAAAF,aAAA5O,KAAAwQ,GACA,MAAAA,EACA,GAAAsF,GAAAtF,EAAA3C,OAEA,OAAA7N,KAAA4R,MAAA5R,KAAA6N,QAAAkF,aAAA+C,GACAD,EAAAhI,QAAAe,aAAA5O,KAAA6N,QAAAiI,GAEA9V,KAAA+R,OAAA8D,GAEAzB,EAAAvT,UAAAwU,QAAA,SAAAjG,EAAAC,GACA,GAAAoC,GAAAzR,KAAA0R,MAAAtC,EAEA,OADAqC,GAAAC,MAAArC,GACAoC,GAEA2C,EAAAvT,UAAAwO,OAAA,WACA,UAGA+E,EAAAvT,UAAA2O,OAAA,SAAA9P,GAEA,MADA,UAAAA,IAA8BA,EAAAM,KAAA+R,QAC9B,MAAA/R,KAAA+R,QAAA/R,MAAAN,EACA,EACAM,KAAA+R,OAAAjD,SAAAU,OAAAxP,WAAA+R,OAAAvC,OAAA9P,IAEA0U,EAAAvT,UAAAqQ,SAAA,WAEA,MAAAlR,KAAA6N,QAAA7B,EAAAmJ,iBACAnV,MAAA6N,QAAA7B,EAAAmJ,UAAAjD,WAGAkC,EAAAvT,UAAAyO,OAAA,WACA,MAAAtP,KAAA6N,QAAAE,YACA/N,KAAA6N,QAAAE,WAAAwD,YAAAvR,KAAA6N,SAEA7N,KAAAkQ,UAEAkE,EAAAvT,UAAA2Q,QAAA,SAAAC,GACA,MAAAA,EAAAM,SAEAN,EAAAM,OAAAnD,aAAA5O,KAAAyR,EAAAG,MACAH,EAAAnC,WAEA8E,EAAAvT,UAAAkV,YAAA,SAAA3F,EAAAhD,GACA,GAAA4I,GAAA,gBAAA5F,GAAApE,EAAAG,OAAAiE,EAAAhD,GAAAgD,CAEA,OADA4F,GAAAxE,QAAAxR,MACAgW,GAEA5B,EAAAvT,UAAA6Q,MAAA,SAAAtC,EAAAuC,GACA,WAAAvC,EAAApP,UAAA4R,MAEAwC,EAAAvT,UAAAoR,OAAA,SAAAC,GACA,SAAAA,IAAmCA,OAGnCkC,EAAAvT,UAAA0U,KAAA,SAAAnF,EAAAhD,GACA,GAAA6I,GAAA,gBAAA7F,GAAApE,EAAAG,OAAAiE,EAAAhD,GAAAgD,CAKA,OAJA,OAAApQ,KAAA+R,QACA/R,KAAA+R,OAAAnD,aAAAqH,EAAAjW,KAAA4R,MAEAqE,EAAAnI,YAAA9N,MACAiW,GAEA7B,EAAAxE,SAAA,WACAwE,IAEAxT,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAA0S,GP2vBM,SAASvU,EAAQD,GQ94BvB,YAqCA,SAAAuM,GAAA+J,EAAA9I,GACA,GAAA+I,GAAA9J,EAAA6J,EACA,UAAAC,EACA,SAAAjH,GAAA,oBAAAgH,EAAA,QAEA,IAAAE,GAAAD,EACA7I,EAAA4I,YAAAxD,MAAAwD,EAAAE,EAAAjK,OAAAiB,EACA,WAAAgJ,GAAA9I,EAAAF,GAGA,QAAAhB,GAAAkB,EAAA+I,GAEA,MADA,UAAAA,IAA4BA,GAAA,GAC5B,MAAA/I,EACA,KACA,MAAAA,EAAA1N,EAAAuV,UACA7H,EAAA1N,EAAAuV,UAAA5H,KACA8I,EACAjK,EAAAkB,EAAAS,WAAAsI,GACA,KAGA,QAAAhK,KAAAqJ,GACA,SAAAA,IAA2BA,EAAAxJ,EAAAoK,IAC3B,IAAAH,EACA,oBAAA9J,GACA8J,EAAAI,EAAAlK,IAAAmK,EAAAnK,OAEA,IAAAA,YAAAQ,MACAsJ,EAAAI,EAAA,SAEA,oBAAAlK,GACAA,EAAAH,EAAAuK,MAAAvK,EAAAwK,MACAP,EAAAI,EAAA,MAEAlK,EAAAH,EAAAuK,MAAAvK,EAAAuB,SACA0I,EAAAI,EAAA,YAGA,IAAAlK,YAAAsK,aAAA,CACA,GAAAC,IAAAvK,EAAAwK,aAAA,cAAAnF,MAAA,MACA,QAAA/Q,KAAAiW,GAEA,GADAT,EAAAW,EAAAF,EAAAjW,IAEA,KAEAwV,MAAAY,EAAA1K,EAAAmI,SAOA,MALA,OAAA2B,GACA9J,YAAAqG,OACAsE,QAAAC,IAAA5K,EAAA6K,UAGA,MAAAf,EACA,KACAT,EAAAxJ,EAAAuK,MAAAN,EAAAT,SAAAxJ,EAAAiL,KAAAhB,EAAAT,MACAS,EACA,KAGA,QAAAnR,KAEA,OADAoS,MACA/D,EAAA,EAAoBA,EAAA3E,UAAAW,OAAuBgE,IAC3C+D,EAAA/D,EAAA,GAAA3E,UAAA2E,EAEA,IAAA+D,EAAA/H,OAAA,EACA,MAAA+H,GAAAjD,IAAA,SAAAhG,GACA,MAAAnJ,GAAAmJ,IAGA,IAAAkJ,GAAAD,EAAA,EACA,oBAAAC,GAAAzH,UAAA,gBAAAyH,GAAAC,SACA,SAAApI,GAAA,qBAEA,iBAAAmI,EAAAzH,SACA,SAAAV,GAAA,iCAGA,IADAqH,EAAAc,EAAAzH,UAAAyH,EAAAC,UAAAD,EACA,gBAAAA,GAAAE,QACAf,EAAAa,EAAAE,SAAAF,MAMA,IAHA,MAAAA,EAAArC,YACA8B,EAAAO,EAAArC,WAAAqC,GAEA,MAAAA,EAAA7C,QAAA,CACAC,MAAAC,QAAA2C,EAAA7C,SACA6C,EAAA7C,QAAA6C,EAAA7C,QAAAL,IAAA,SAAAK,GACA,MAAAA,GAAAG,gBAIA0C,EAAA7C,QAAA6C,EAAA7C,QAAAG,aAEA,IAAA6C,GAAA/C,MAAAC,QAAA2C,EAAA7C,SAAA6C,EAAA7C,SAAA6C,EAAA7C,QACAgD,GAAA7J,QAAA,SAAA8J,GACA,MAAAV,EAAAU,IAAA,MAAAJ,EAAArC,YACA+B,EAAAU,GAAAJ,KAKA,MAAAA,GAzIA,GAAAnJ,GAAAlO,WAAAkO,WAAA,SAAAC,EAAA/M,GAEA,QAAAgN,KAAmBpO,KAAAqO,YAAAF,EADnB,OAAAzN,KAAAU,KAAAN,eAAAJ,KAAAyN,EAAAzN,GAAAU,EAAAV,GAEAyN,GAAAtN,UAAA,OAAAO,EAAAR,OAAAuL,OAAA/K,IAAAgN,EAAAvN,UAAAO,EAAAP,UAAA,GAAAuN,KAEAc,EAAA,SAAAT,GAEA,QAAAS,GAAAwI,GACAA,EAAA,eAAAA,EACAjJ,EAAAlO,KAAAP,KAAA0X,GACA1X,KAAA0X,UACA1X,KAAAoQ,KAAApQ,KAAAqO,YAAA+B,KAEA,MAPAlC,GAAAgB,EAAAT,GAOAS,GACCyI,MACD/X,GAAAsP,gBACA,IAAAsH,MACAM,KACAC,KACAR,IACA3W,GAAAuV,SAAA,SACA,SAAAjJ,GACAA,IAAA,eACAA,IAAA,kBACAA,IAAA,0BACAA,IAAA,gBACAA,IAAA,mBACAA,IAAA,kBACAA,IAAA,4BACAA,IAAA,6BACAA,IAAA,qCACAA,IAAA,uCACAA,IAAA,eACCtM,EAAAsM,QAAAtM,EAAAsM,UACD,IAAAA,GAAAtM,EAAAsM,KAWAtM,GAAAuM,SAWAvM,EAAAwM,OAsCAxM,EAAAyM,QA6CAzM,EAAAoF,YRq5BM,SAASnF,EAAQD,EAASM,GSjiChC,YACA,IAAAgO,GAAAlO,WAAAkO,WAAA,SAAAC,EAAA/M,GAEA,QAAAgN,KAAmBpO,KAAAqO,YAAAF,EADnB,OAAAzN,KAAAU,KAAAN,eAAAJ,KAAAyN,EAAAzN,GAAAU,EAAAV,GAEAyN,GAAAtN,UAAA,OAAAO,EAAAR,OAAAuL,OAAA/K,IAAAgN,EAAAvN,UAAAO,EAAAP,UAAA,GAAAuN,KAEAxC,EAAA1L,EAAA,GACA6L,EAAA7L,EAAA,GACAkL,EAAAlL,EAAA,GACA8L,EAAA9L,EAAA,GACA0X,EAAA,SAAAnJ,GAEA,QAAAmJ,KACAnJ,EAAApN,MAAArB,KAAA0O,WAuDA,MAzDAR,GAAA0J,EAAAnJ,GAIAmJ,EAAAC,QAAA,SAAAhK,GACA,sBAAA7N,MAAAwU,UAGAC,MAAAC,QAAA1U,KAAAwU,SACA3G,EAAA2G,QAAAsD,cADA,SAKAF,EAAA/W,UAAAoN,OAAA,WACAQ,EAAA5N,UAAAoN,OAAA1N,KAAAP,MACAA,KAAAwW,WAAA,GAAAzK,GAAArK,QAAA1B,KAAA6N,UAEA+J,EAAA/W,UAAA8U,OAAA,SAAAvF,EAAAhD,GACA,GAAAuI,GAAA3J,EAAAK,MAAA+D,EACAuF,aAAA/J,GAAAlK,QACA1B,KAAAwW,WAAAuB,UAAApC,EAAAvI,GAEAA,IACA,MAAAuI,GAAAvF,IAAApQ,KAAAyQ,QAAAb,UAAA5P,KAAA6X,UAAAzH,KAAAhD,GACApN,KAAA+V,YAAA3F,EAAAhD,KAIAwK,EAAA/W,UAAAgX,QAAA,WACA,GAAAA,GAAA7X,KAAAwW,WAAAwB,SACArC,EAAA3V,KAAAyQ,QAAAoH,QAAA7X,KAAA6N,QAIA,OAHA,OAAA8H,IACAkC,EAAA7X,KAAAyQ,QAAAb,UAAA+F,GAEAkC,GAEAD,EAAA/W,UAAAkV,YAAA,SAAA3F,EAAAhD,GACA,GAAA4I,GAAAvH,EAAA5N,UAAAkV,YAAAxV,KAAAP,KAAAoQ,EAAAhD,EAEA,OADApN,MAAAwW,WAAAyB,KAAAjC,GACAA,GAEA4B,EAAA/W,UAAAoR,OAAA,SAAAC,GACA,GAAArD,GAAA7O,IACAyO,GAAA5N,UAAAoR,OAAA1R,KAAAP,KAAAkS,GACAA,EAAAvB,KAAA,SAAA0B,GACA,MAAAA,GAAAZ,SAAA5C,EAAAhB,SAAA,eAAAwE,EAAAC,QAEAtS,KAAAwW,WAAA0B,SAGAN,EAAA/W,UAAA0U,KAAA,SAAAnF,EAAAhD,GACA,GAAA6I,GAAAxH,EAAA5N,UAAA0U,KAAAhV,KAAAP,KAAAoQ,EAAAhD,EAIA,OAHA6I,aAAA2B,IAAA3B,EAAAxF,QAAAiF,QAAA1V,KAAAyQ,QAAAiF,OACA1V,KAAAwW,WAAA2B,KAAAlC,GAEAA,GAEA2B,GACCxM,EAAA1J,QACDd,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAAkW,GTwiCM,SAAS/X,EAAQD,EAASM,GU/mChC,YACA,IAAA8L,GAAA9L,EAAA,GACA4M,EAAA,WACA,QAAAA,GAAAwK,EAAAC,EAAAa,GACA,SAAAA,IAAiCA,MACjCpY,KAAAsX,WACAtX,KAAAuX,SACA,IAAAc,GAAArM,EAAAE,MAAAiL,KAAAnL,EAAAE,MAAAsJ,SACA,OAAA4C,EAAA1C,MAEA1V,KAAA0V,MAAA0C,EAAA1C,MAAA1J,EAAAE,MAAAuK,MAAA4B,EAGArY,KAAA0V,MAAA1J,EAAAE,MAAAsJ,UAEA,MAAA4C,EAAAE,YACAtY,KAAAsY,UAAAF,EAAAE,WA0BA,MAxBAxL,GAAAyL,KAAA,SAAAjL,GACA,SAAA6G,IAAA5T,KAAA+M,EAAAkJ,WAAA,SAAAgC,GACA,MAAAA,GAAApI,QAGAtD,EAAAjM,UAAAqU,IAAA,SAAA5H,EAAAF,GACA,QAAApN,KAAAyY,OAAAnL,EAAAF,KAEAE,EAAAoL,aAAA1Y,KAAAuX,QAAAnK,IACA,IAEAN,EAAAjM,UAAA4X,OAAA,SAAAnL,EAAAF,GACA,GAAA+I,GAAAnK,EAAAK,MAAAiB,EAAAtB,EAAAE,MAAAoJ,MAAAtV,KAAA0V,MAAA1J,EAAAE,MAAAiL,MACA,cAAAhB,IAAA,MAAAnW,KAAAsY,WAAAtY,KAAAsY,UAAAvD,QAAA3H,IAAA,IAKAN,EAAAjM,UAAAyO,OAAA,SAAAhC,GACAA,EAAAqL,gBAAA3Y,KAAAuX,UAEAzK,EAAAjM,UAAAuM,MAAA,SAAAE,GACA,MAAAA,GAAAuJ,aAAA7W,KAAAuX,UAEAzK,IAEAlM,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAAoL,GVsnCM,SAASjN,EAAQD,EAASM,GWnqChC,YACA,IAAA0L,GAAA1L,EAAA,GACA2L,EAAA3L,EAAA,IACA4L,EAAA5L,EAAA,IACA8L,EAAA9L,EAAA,GACA0Y,EAAA,WACA,QAAAA,GAAA/K,GACA7N,KAAAwW,cACAxW,KAAA6N,UACA7N,KAAAkY,QAqDA,MAnDAU,GAAA/X,UAAAkX,UAAA,SAAAA,EAAA3K,GACAA,EACA2K,EAAA7C,IAAAlV,KAAA6N,QAAAT,KACA,MAAA2K,EAAA3K,MAAApN,KAAA6N,SACA7N,KAAAwW,WAAAuB,EAAAT,UAAAS,QAGA/X,MAAAwW,WAAAuB,EAAAT,YAKAS,EAAAzI,OAAAtP,KAAA6N,eACA7N,MAAAwW,WAAAuB,EAAAT,YAGAsB,EAAA/X,UAAAqX,MAAA,WACA,GAAArJ,GAAA7O,IACAA,MAAAwW,aACA,IAAAA,GAAA5K,EAAAlK,QAAA6W,KAAAvY,KAAA6N,SACAiJ,EAAAjL,EAAAnK,QAAA6W,KAAAvY,KAAA6N,SACAgL,EAAA/M,EAAApK,QAAA6W,KAAAvY,KAAA6N,QACA2I,GAAAlV,OAAAwV,GAAAxV,OAAAuX,GAAAlL,QAAA,SAAAyC,GACA,GAAA0I,GAAA9M,EAAAK,MAAA+D,EAAApE,EAAAE,MAAAsJ,UACAsD,aAAAlN,GAAAlK,UACAmN,EAAA2H,WAAAsC,EAAAxB,UAAAwB,MAIAF,EAAA/X,UAAAoX,KAAA,SAAAxG,GACA,GAAA5C,GAAA7O,IACAY,QAAA2X,KAAAvY,KAAAwW,YAAA7I,QAAA,SAAAoL,GACA,GAAA3L,GAAAyB,EAAA2H,WAAAuC,GAAA3L,MAAAyB,EAAAhB,QACA4D,GAAAkE,OAAAoD,EAAA3L,MAGAwL,EAAA/X,UAAAsX,KAAA,SAAA1G,GACA,GAAA5C,GAAA7O,IACAA,MAAAiY,KAAAxG,GACA7Q,OAAA2X,KAAAvY,KAAAwW,YAAA7I,QAAA,SAAAoL,GACAlK,EAAA2H,WAAAuC,GAAAzJ,OAAAT,EAAAhB,WAEA7N,KAAAwW,eAEAoC,EAAA/X,UAAAmX,OAAA,WACA,GAAAnJ,GAAA7O,IACA,OAAAY,QAAA2X,KAAAvY,KAAAwW,YAAA3F,OAAA,SAAA2F,EAAApG,GAEA,MADAoG,GAAApG,GAAAvB,EAAA2H,WAAApG,GAAAhD,MAAAyB,EAAAhB,SACA2I,QAGAoC,IAEAhY,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAAkX,GX0qCM,SAAS/Y,EAAQD,EAASM,GY3uChC,YAOA,SAAAiW,GAAA7I,EAAA0L,GACA,GAAAhE,GAAA1H,EAAAuJ,aAAA,YACA,OAAA7B,GAAAtD,MAAA,OAAAkB,OAAA,SAAAxC,GACA,WAAAA,EAAA2E,QAAAiE,EAAA,OATA,GAAA9K,GAAAlO,WAAAkO,WAAA,SAAAC,EAAA/M,GAEA,QAAAgN,KAAmBpO,KAAAqO,YAAAF,EADnB,OAAAzN,KAAAU,KAAAN,eAAAJ,KAAAyN,EAAAzN,GAAAU,EAAAV,GAEAyN,GAAAtN,UAAA,OAAAO,EAAAR,OAAAuL,OAAA/K,IAAAgN,EAAAvN,UAAAO,EAAAP,UAAA,GAAAuN,KAEAxC,EAAA1L,EAAA,GAOA+Y,EAAA,SAAAxK,GAEA,QAAAwK,KACAxK,EAAApN,MAAArB,KAAA0O,WA2BA,MA7BAR,GAAA+K,EAAAxK,GAIAwK,EAAAV,KAAA,SAAAjL,GACA,OAAAA,EAAAuJ,aAAA,cAAAnF,MAAA,OAAAyC,IAAA,SAAA/D,GACA,MAAAA,GAAAsB,MAAA,KAAAzQ,MAAA,MAAAiY,KAAA,QAGAD,EAAApY,UAAAqU,IAAA,SAAA5H,EAAAF,GACA,QAAApN,KAAAyY,OAAAnL,EAAAF,KAEApN,KAAAsP,OAAAhC,GACAA,EAAA2H,UAAAC,IAAAlV,KAAAuX,QAAA,IAAAnK,IACA,IAEA6L,EAAApY,UAAAyO,OAAA,SAAAhC,GACA,GAAA6L,GAAAhD,EAAA7I,EAAAtN,KAAAuX,QACA4B,GAAAxL,QAAA,SAAAyC,GACA9C,EAAA2H,UAAA3F,OAAAc,KAEA,IAAA9C,EAAA2H,UAAA5F,QACA/B,EAAAqL,gBAAA,UAGAM,EAAApY,UAAAuM,MAAA,SAAAE,GACA,GAAA8L,GAAAjD,EAAA7I,EAAAtN,KAAAuX,SAAA,MACA,OAAA6B,GAAAnY,MAAAjB,KAAAuX,QAAAlI,OAAA,IAEA4J,GACCrN,EAAAlK,QACDd,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAAuX,GZkvCM,SAASpZ,EAAQD,EAASM,GahyChC,YAOA,SAAAmZ,GAAAjJ,GACA,GAAAkJ,GAAAlJ,EAAAsB,MAAA,KACA6H,EAAAD,EAAArY,MAAA,GAAAkT,IAAA,SAAAqF,GACA,MAAAA,GAAA,GAAA7E,cAAA6E,EAAAvY,MAAA,KACKiY,KAAA,GACL,OAAAI,GAAA,GAAAC,EAXA,GAAArL,GAAAlO,WAAAkO,WAAA,SAAAC,EAAA/M,GAEA,QAAAgN,KAAmBpO,KAAAqO,YAAAF,EADnB,OAAAzN,KAAAU,KAAAN,eAAAJ,KAAAyN,EAAAzN,GAAAU,EAAAV,GAEAyN,GAAAtN,UAAA,OAAAO,EAAAR,OAAAuL,OAAA/K,IAAAgN,EAAAvN,UAAAO,EAAAP,UAAA,GAAAuN,KAEAxC,EAAA1L,EAAA,GAQAuZ,EAAA,SAAAhL,GAEA,QAAAgL,KACAhL,EAAApN,MAAArB,KAAA0O,WAuBA,MAzBAR,GAAAuL,EAAAhL,GAIAgL,EAAAlB,KAAA,SAAAjL,GACA,OAAAA,EAAAuJ,aAAA,cAAAnF,MAAA,KAA0DyC,IAAA,SAAA/G,GAC1D,GAAAsM,GAAAtM,EAAAsE,MAAA,IACA,OAAAgI,GAAA,GAAAC,UAGAF,EAAA5Y,UAAAqU,IAAA,SAAA5H,EAAAF,GACA,QAAApN,KAAAyY,OAAAnL,EAAAF,KAEAE,EAAAsM,MAAAP,EAAArZ,KAAAuX,UAAAnK,GACA,IAEAqM,EAAA5Y,UAAAyO,OAAA,SAAAhC,GACAA,EAAAsM,MAAAP,EAAArZ,KAAAuX,UAAA,GACAjK,EAAAuJ,aAAA,UACAvJ,EAAAqL,gBAAA,UAGAc,EAAA5Y,UAAAuM,MAAA,SAAAE,GACA,MAAAA,GAAAsM,MAAAP,EAAArZ,KAAAuX,WAEAkC,GACC7N,EAAAlK,QACDd,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAA+X,GbuyCM,SAAS5Z,EAAQD,EAASM,Gcl1ChC,YACA,IAAAgO,GAAAlO,WAAAkO,WAAA,SAAAC,EAAA/M,GAEA,QAAAgN,KAAmBpO,KAAAqO,YAAAF,EADnB,OAAAzN,KAAAU,KAAAN,eAAAJ,KAAAyN,EAAAzN,GAAAU,EAAAV,GAEAyN,GAAAtN,UAAA,OAAAO,EAAAR,OAAAuL,OAAA/K,IAAAgN,EAAAvN,UAAAO,EAAAP,UAAA,GAAAuN,KAEAG,EAAArO,EAAA,GACA8L,EAAA9L,EAAA,GACA2Z,EAAA,SAAApL,GAEA,QAAAoL,KACApL,EAAApN,MAAArB,KAAA0O,WAqBA,MAvBAR,GAAA2L,EAAApL,GAIAoL,EAAAzM,MAAA,SAAAS,GACA,UAEAgM,EAAAhZ,UAAAuO,MAAA,SAAA9B,EAAAkC,GACA,MAAAlC,KAAAtN,KAAA6N,SACA,EACAoG,KAAAC,IAAA1E,EAAA,IAEAqK,EAAAhZ,UAAAyQ,SAAA,SAAAlC,EAAAiC,GACA,GAAA7B,MAAAuF,QAAAxU,KAAAP,KAAA+R,OAAAlE,QAAAH,WAAA1N,KAAA6N,QAGA,OAFAuB,GAAA,IACAI,GAAA,IACAxP,KAAA+R,OAAAlE,QAAA2B,IAEAqK,EAAAhZ,UAAAuM,MAAA,WACA,MAAAuC,MAAuBA,EAAA3P,KAAAyQ,QAAAb,UAAA5P,KAAAyQ,QAAArD,MAAApN,KAAA6N,WAAA,EAAA8B,CACvB,IAAAA,IAEAkK,EAAAnE,MAAA1J,EAAAE,MAAA4N,YACAD,GACCtL,EAAA7M,QACDd,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAAmY,Gdy1CM,SAASha,EAAQD,EAASM,Ge53ChC,YACA,IAAAgO,GAAAlO,WAAAkO,WAAA,SAAAC,EAAA/M,GAEA,QAAAgN,KAAmBpO,KAAAqO,YAAAF,EADnB,OAAAzN,KAAAU,KAAAN,eAAAJ,KAAAyN,EAAAzN,GAAAU,EAAAV,GAEAyN,GAAAtN,UAAA,OAAAO,EAAAR,OAAAuL,OAAA/K,IAAAgN,EAAAvN,UAAAO,EAAAP,UAAA,GAAAuN,KAEAhD,EAAAlL,EAAA,GACA8L,EAAA9L,EAAA,GACA6Z,GACAvD,YAAA,EACAwD,eAAA,EACAC,uBAAA,EACAC,WAAA,EACAC,SAAA,GAEAC,EAAA,IACAC,EAAA,SAAA5L,GAEA,QAAA4L,GAAA/M,GACA,GAAAuB,GAAA7O,IACAyO,GAAAlO,KAAAP,KAAAsN,GACAtN,KAAA+R,OAAA,KACA/R,KAAAsa,SAAA,GAAAC,kBAAA,SAAArI,GACArD,EAAAoD,OAAAC,KAEAlS,KAAAsa,SAAAE,QAAAxa,KAAA6N,QAAAkM,GAmHA,MA3HA7L,GAAAmM,EAAA5L,GAUA4L,EAAAxZ,UAAAqP,OAAA,WACAzB,EAAA5N,UAAAqP,OAAA3P,KAAAP,MACAA,KAAAsa,SAAAG,cAEAJ,EAAAxZ,UAAAsO,SAAA,SAAAC,EAAAC,GACArP,KAAAiS,SACA,IAAA7C,GAAAC,IAAArP,KAAAqP,SACArP,KAAA8O,SAAAnB,QAAA,SAAAC,GACAA,EAAA0B,WAIAb,EAAA5N,UAAAsO,SAAA5O,KAAAP,KAAAoP,EAAAC,IAGAgL,EAAAxZ,UAAAsP,SAAA,SAAAf,EAAAC,EAAAe,EAAAhD,GACApN,KAAAiS,SACAxD,EAAA5N,UAAAsP,SAAA5P,KAAAP,KAAAoP,EAAAC,EAAAe,EAAAhD,IAEAiN,EAAAxZ,UAAAwP,SAAA,SAAAjB,EAAAhC,EAAAkD,GACAtQ,KAAAiS,SACAxD,EAAA5N,UAAAwP,SAAA9P,KAAAP,KAAAoP,EAAAhC,EAAAkD,IAEA+J,EAAAxZ,UAAAqQ,SAAA,SAAAgB,GACA,GAAArD,GAAA7O,IACA,UAAAkS,IAAmCA,MACnCzD,EAAA5N,UAAAqQ,SAAA3Q,KAAAP,MACAkS,EAAAjC,KAAA5O,MAAA6Q,EAAAlS,KAAAsa,SAAAI,cAwBA,QAtBAC,GAAA,SAAApN,EAAAqN,GACA,SAAAA,IAAwCA,GAAA,GACxC,MAAArN,OAAAsB,GAEA,MAAAtB,EAAAM,QAAAE,aAEA,MAAAR,EAAAM,QAAA7B,EAAAmJ,UAAAjD,YACA3E,EAAAM,QAAA7B,EAAAmJ,UAAAjD,cAEA0I,GACAD,EAAApN,EAAAwE,UAEAb,EAAA,SAAA3D,GACA,MAAAA,EAAAM,QAAA7B,EAAAmJ,WAAA,MAAA5H,EAAAM,QAAA7B,EAAAmJ,UAAAjD,YAGA3E,YAAAnC,GAAA1J,SACA6L,EAAAuB,SAAAnB,QAAAuD,GAEA3D,EAAA2D,aAEA2J,EAAA3I,EACAvR,EAAA,EAAuBka,EAAAxL,OAAA,EAAsB1O,GAAA,GAC7C,GAAAA,GAAAyZ,EACA,SAAAzC,OAAA,kDAEAkD,GAAAlN,QAAA,SAAA0E,GACA,GAAA9E,GAAAvB,EAAAI,KAAAiG,EAAAZ,QAAA,EACA,OAAAlE,IAEAA,EAAAM,UAAAwE,EAAAZ,SACA,cAAAY,EAAAC,MACAqI,EAAA3O,EAAAI,KAAAiG,EAAAyI,iBAAA,OACAnN,QAAApN,KAAA8R,EAAAF,WAAA,SAAA7E,GACA,GAAAM,GAAA5B,EAAAI,KAAAkB,GAAA,EACAqN,GAAA/M,GAAA,GACAA,YAAAxC,GAAA1J,SACAkM,EAAAkB,SAAAnB,QAAA,SAAAoN,GACAJ,EAAAI,GAAA,QAKA,eAAA1I,EAAAC,MACAqI,EAAApN,EAAAkG,OAGAkH,EAAApN,MAEAvN,KAAA8O,SAAAnB,QAAAuD,GACA2J,EAAA7a,KAAAsa,SAAAI,cACAxI,EAAAjC,KAAA5O,MAAA6Q,EAAA2I,KAGAR,EAAAxZ,UAAAoR,OAAA,SAAAC,GACA,GAAArD,GAAA7O,IACAkS,MAAAlS,KAAAsa,SAAAI,cAEAxI,EAAAiC,IAAA,SAAA9B,GACA,GAAA9E,GAAAvB,EAAAI,KAAAiG,EAAAZ,QAAA,EACA,UAAAlE,EAEA,aAAAA,EAAAM,QAAA7B,EAAAmJ,UAAAjD,WACA3E,EAAAM,QAAA7B,EAAAmJ,UAAAjD,WAAAG,GACA9E,IAGAA,EAAAM,QAAA7B,EAAAmJ,UAAAjD,UAAAjC,KAAAoC,GACA,QAES1E,QAAA,SAAAJ,GACT,MAAAA,OAAAsB,GAAA,MAAAtB,EAAAM,QAAA7B,EAAAmJ,WAEA5H,EAAA0E,OAAA1E,EAAAM,QAAA7B,EAAAmJ,UAAAjD,iBAEA,MAAAlS,KAAA6N,QAAA7B,EAAAmJ,UAAAjD,WACAzD,EAAA5N,UAAAoR,OAAA1R,KAAAP,UAAA6N,QAAA7B,EAAAmJ,UAAAjD,WAEAlS,KAAAkR,SAAAgB,IAEAmI,EAAAzK,SAAA,SACAyK,EAAAlJ,aAAA,QACAkJ,EAAA3E,MAAA1J,EAAAE,MAAA8O,WACAX,EAAA7F,QAAA,MACA6F,GACCjP,EAAA1J,QACDd,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAA2Y,Gfm4CM,SAASxa,EAAQD,EAASM,GgBlhDhC,YASA,SAAA+a,GAAAC,EAAAC,GACA,GAAAva,OAAA2X,KAAA2C,GAAA7L,SAAAzO,OAAA2X,KAAA4C,GAAA9L,OACA,QACA,QAAA+L,KAAAF,GACA,GAAAA,EAAAE,KAAAD,EAAAC,GACA,QAEA,UAfA,GAAAlN,GAAAlO,WAAAkO,WAAA,SAAAC,EAAA/M,GAEA,QAAAgN,KAAmBpO,KAAAqO,YAAAF,EADnB,OAAAzN,KAAAU,KAAAN,eAAAJ,KAAAyN,EAAAzN,GAAAU,EAAAV,GAEAyN,GAAAtN,UAAA,OAAAO,EAAAR,OAAAuL,OAAA/K,IAAAgN,EAAAvN,UAAAO,EAAAP,UAAA,GAAAuN,KAEA/C,EAAAnL,EAAA,GACA8L,EAAA9L,EAAA,GAWAmb,EAAA,SAAA5M,GAEA,QAAA4M,KACA5M,EAAApN,MAAArB,KAAA0O,WA8CA,MAhDAR,GAAAmN,EAAA5M,GAIA4M,EAAAxD,QAAA,SAAAhK,GACA,GAAAA,EAAA2G,UAAA6G,EAAA7G,QAEA,MAAA/F,GAAAoJ,QAAAtX,KAAAP,KAAA6N,IAEAwN,EAAAxa,UAAA8U,OAAA,SAAAvF,EAAAhD,GACA,GAAAyB,GAAA7O,IACAoQ,KAAApQ,KAAAyQ,QAAAb,UAAAxC,EAUAqB,EAAA5N,UAAA8U,OAAApV,KAAAP,KAAAoQ,EAAAhD,IATApN,KAAA8O,SAAAnB,QAAA,SAAAC,GACAA,YAAAvC,GAAA3J,UACAkM,IAAA2H,KAAA8F,EAAAzL,UAAA,IAEAf,EAAA2H,WAAAyB,KAAArK,KAEA5N,KAAAgS,WAMAqJ,EAAAxa,UAAAsP,SAAA,SAAAf,EAAAC,EAAAe,EAAAhD,GACA,SAAApN,KAAA6X,UAAAzH,IAAApE,EAAAK,MAAA+D,EAAApE,EAAAE,MAAAsJ,WAAA,CACA,GAAAjI,GAAAvN,KAAAqV,QAAAjG,EAAAC,EACA9B,GAAAoI,OAAAvF,EAAAhD,OAGAqB,GAAA5N,UAAAsP,SAAA5P,KAAAP,KAAAoP,EAAAC,EAAAe,EAAAhD,IAGAiO,EAAAxa,UAAAqQ,SAAA,WACAzC,EAAA5N,UAAAqQ,SAAA3Q,KAAAP,KACA,IAAA6X,GAAA7X,KAAA6X,SACA,QAAAjX,OAAA2X,KAAAV,GAAAxI,OACA,MAAArP,MAAAgS,QAEA,IAAAJ,GAAA5R,KAAA4R,IACAA,aAAAyJ,IAAAzJ,EAAA6B,OAAAzT,MAAAib,EAAApD,EAAAjG,EAAAiG,aACAjG,EAAAb,aAAA/Q,MACA4R,EAAAtC,WAGA+L,EAAAzL,SAAA,SACAyL,EAAA3F,MAAA1J,EAAAE,MAAA4N,YACAuB,EAAA7G,QAAA,OACA6G,GACChQ,EAAA3J,QACDd,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAA2Z,GhByhDM,SAASxb,EAAQD,EAASM,GiB/lDhC,YACA,IAAAgO,GAAAlO,WAAAkO,WAAA,SAAAC,EAAA/M,GAEA,QAAAgN,KAAmBpO,KAAAqO,YAAAF,EADnB,OAAAzN,KAAAU,KAAAN,eAAAJ,KAAAyN,EAAAzN,GAAAU,EAAAV,GAEAyN,GAAAtN,UAAA,OAAAO,EAAAR,OAAAuL,OAAA/K,IAAAgN,EAAAvN,UAAAO,EAAAP,UAAA,GAAAuN,KAEA/C,EAAAnL,EAAA,GACA8L,EAAA9L,EAAA,GACAob,EAAA,SAAA7M,GAEA,QAAA6M,KACA7M,EAAApN,MAAArB,KAAA0O,WAyCA,MA3CAR,GAAAoN,EAAA7M,GAIA6M,EAAAzD,QAAA,SAAAhK,GACA,GAAA2G,GAAAxI,EAAAK,MAAAiP,EAAA1L,UAAA4E,OACA,IAAA3G,EAAA2G,YAEA,MAAA/F,GAAAoJ,QAAAtX,KAAAP,KAAA6N,IAEAyN,EAAAza,UAAA8U,OAAA,SAAAvF,EAAAhD,GACA,MAAApB,EAAAK,MAAA+D,EAAApE,EAAAE,MAAAwK,SAGAtG,IAAApQ,KAAAyQ,QAAAb,UAAAxC,EAIAqB,EAAA5N,UAAA8U,OAAApV,KAAAP,KAAAoQ,EAAAhD,GAHApN,KAAA+V,YAAAuF,EAAA1L,YAMA0L,EAAAza,UAAAsP,SAAA,SAAAf,EAAAC,EAAAe,EAAAhD,GACA,MAAApB,EAAAK,MAAA+D,EAAApE,EAAAE,MAAAwK,OACA1W,KAAA2V,OAAAvF,EAAAhD,GAGAqB,EAAA5N,UAAAsP,SAAA5P,KAAAP,KAAAoP,EAAAC,EAAAe,EAAAhD,IAGAkO,EAAAza,UAAAwP,SAAA,SAAAjB,EAAAhC,EAAAkD,GACA,SAAAA,GAAA,MAAAtE,EAAAK,MAAAe,EAAApB,EAAAE,MAAAuB,QAEAgB,EAAA5N,UAAAwP,SAAA9P,KAAAP,KAAAoP,EAAAhC,EAAAkD,OAEA,CACA,GAAAuB,GAAA7R,KAAA0R,MAAAtC,GACA7B,EAAAvB,EAAAG,OAAAiB,EAAAkD,EACAuB,GAAAE,OAAAnD,aAAArB,EAAAsE,KAGAyJ,EAAA1L,SAAA,QACA0L,EAAA5F,MAAA1J,EAAAE,MAAA8O,WACAM,EAAA9G,QAAA,IACA8G,GACCjQ,EAAA3J,QACDd,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAA4Z,GjBsmDM,SAASzb,EAAQD,EAASM,GkB7pDhC,YACA,IAAAgO,GAAAlO,WAAAkO,WAAA,SAAAC,EAAA/M,GAEA,QAAAgN,KAAmBpO,KAAAqO,YAAAF,EADnB,OAAAzN,KAAAU,KAAAN,eAAAJ,KAAAyN,EAAAzN,GAAAU,EAAAV,GAEAyN,GAAAtN,UAAA,OAAAO,EAAAR,OAAAuL,OAAA/K,IAAAgN,EAAAvN,UAAAO,EAAAP,UAAA,GAAAuN,KAEA9C,EAAApL,EAAA,IACAqb,EAAA,SAAA9M,GAEA,QAAA8M,KACA9M,EAAApN,MAAArB,KAAA0O,WAsBA,MAxBAR,GAAAqN,EAAA9M,GAIA8M,EAAA1D,QAAA,SAAAhK,KAGA0N,EAAA1a,UAAA8U,OAAA,SAAAvF,EAAAhD,GAIAqB,EAAA5N,UAAAsP,SAAA5P,KAAAP,KAAA,EAAAA,KAAAqP,SAAAe,EAAAhD,IAEAmO,EAAA1a,UAAAsP,SAAA,SAAAf,EAAAC,EAAAe,EAAAhD,GACA,IAAAgC,GAAAC,IAAArP,KAAAqP,SACArP,KAAA2V,OAAAvF,EAAAhD,GAGAqB,EAAA5N,UAAAsP,SAAA5P,KAAAP,KAAAoP,EAAAC,EAAAe,EAAAhD,IAGAmO,EAAA1a,UAAAgX,QAAA,WACA,MAAA7X,MAAAyQ,QAAAoH,QAAA7X,KAAA6N,UAEA0N,GACCjQ,EAAA5J,QACDd,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAA6Z,GlBoqDM,SAAS1b,EAAQD,EAASM,GmBvsDhC,YACA,IAAAgO,GAAAlO,WAAAkO,WAAA,SAAAC,EAAA/M,GAEA,QAAAgN,KAAmBpO,KAAAqO,YAAAF,EADnB,OAAAzN,KAAAU,KAAAN,eAAAJ,KAAAyN,EAAAzN,GAAAU,EAAAV,GAEAyN,GAAAtN,UAAA,OAAAO,EAAAR,OAAAuL,OAAA/K,IAAAgN,EAAAvN,UAAAO,EAAAP,UAAA,GAAAuN,KAEA9C,EAAApL,EAAA,IACA8L,EAAA9L,EAAA,GACAsb,EAAA,SAAA/M,GAEA,QAAA+M,GAAAlO,GACAmB,EAAAlO,KAAAP,KAAAsN,GACAtN,KAAAyb,KAAAzb,KAAAyQ,QAAArD,MAAApN,KAAA6N,SAsEA,MAzEAK,GAAAsN,EAAA/M,GAKA+M,EAAArP,OAAA,SAAAiB,GACA,MAAAmF,UAAAmJ,eAAAtO,IAEAoO,EAAApO,MAAA,SAAAS,GACA,MAAAA,GAAA8N,MAEAH,EAAA3a,UAAAsO,SAAA,SAAAC,EAAAC,GACArP,KAAA6N,QAAA8N,KAAA3b,KAAAyb,KAAAzb,KAAAyb,KAAAxa,MAAA,EAAAmO,GAAApP,KAAAyb,KAAAxa,MAAAmO,EAAAC,IAEAmM,EAAA3a,UAAAuO,MAAA,SAAA9B,EAAAkC,GACA,MAAAxP,MAAA6N,UAAAP,EACAkC,GAEA,GAEAgM,EAAA3a,UAAAwP,SAAA,SAAAjB,EAAAhC,EAAAkD,GACA,MAAAA,GACAtQ,KAAAyb,KAAAzb,KAAAyb,KAAAxa,MAAA,EAAAmO,GAAAhC,EAAApN,KAAAyb,KAAAxa,MAAAmO,GACApP,KAAA6N,QAAA8N,KAAA3b,KAAAyb,MAGAhN,EAAA5N,UAAAwP,SAAA9P,KAAAP,KAAAoP,EAAAhC,EAAAkD,IAGAkL,EAAA3a,UAAAwO,OAAA,WACA,MAAArP,MAAAyb,KAAApM,QAEAmM,EAAA3a,UAAAqQ,SAAA,WACAzC,EAAA5N,UAAAqQ,SAAA3Q,KAAAP,MACAA,KAAAyb,KAAAzb,KAAAyQ,QAAArD,MAAApN,KAAA6N,SACA,IAAA7N,KAAAyb,KAAApM,OACArP,KAAAsP,SAEAtP,KAAA4R,eAAA4J,IAAAxb,KAAA4R,KAAA6B,OAAAzT,OACAA,KAAAqQ,SAAArQ,KAAAqP,SAAArP,KAAA4R,KAAAxE,SACApN,KAAA4R,KAAAtC,WAGAkM,EAAA3a,UAAAyQ,SAAA,SAAAlC,EAAAiC,GAEA,MADA,UAAAA,IAAmCA,GAAA,IACnCrR,KAAA6N,QAAAuB,IAEAoM,EAAA3a,UAAA6Q,MAAA,SAAAtC,EAAAuC,GAEA,GADA,SAAAA,IAA+BA,GAAA,IAC/BA,EAAA,CACA,OAAAvC,EACA,MAAApP,KACA,IAAAoP,IAAApP,KAAAqP,SACA,MAAArP,MAAA4R,KAEA,GAAAC,GAAA7F,EAAAG,OAAAnM,KAAA6N,QAAA+N,UAAAxM,GAGA,OAFApP,MAAA+R,OAAAnD,aAAAiD,EAAA7R,KAAA4R,MACA5R,KAAAyb,KAAAzb,KAAAyQ,QAAArD,MAAApN,KAAA6N,SACAgE,GAEA2J,EAAA3a,UAAAoR,OAAA,SAAAC,GACA,GAAArD,GAAA7O,IACAkS,GAAAvB,KAAA,SAAA0B,GACA,wBAAAA,EAAAC,MAAAD,EAAAZ,SAAA5C,EAAAhB,YAEA7N,KAAAyb,KAAAzb,KAAAyQ,QAAArD,MAAApN,KAAA6N,WAGA2N,EAAA3a,UAAAuM,MAAA,WACA,MAAApN,MAAAyb,MAEAD,EAAA5L,SAAA,OACA4L,EAAA9F,MAAA1J,EAAAE,MAAA4N,YACA0B,GACClQ,EAAA5J,QACDd,QAAAuM,eAAAvN,EAAA,cAA8CwN,OAAA,IAC9CxN,EAAA8B,QAAA8Z,GnB8sDM,SAAS3b,EAAQD,EAASM,GAE/B,YAmDA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASqa,GAAgBra,EAAKuX,EAAK3L,GAAiK,MAApJ2L,KAAOvX,GAAOZ,OAAOuM,eAAe3L,EAAKuX,GAAO3L,MAAOA,EAAOkH,YAAY,EAAMC,cAAc,EAAMuH,UAAU,IAAkBta,EAAIuX,GAAO3L,EAAgB5L,EAE3M,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCoBvhDjH,QAASC,GAAaC,EAAWC,GAS/B,GARAA,GAAa,EAAAC,EAAA5a,UAAO,GAClB0a,UAAWA,EACXnc,SACEsc,WAAW,EACXC,UAAU,EACVC,SAAS,IAEVJ,GACEA,EAAWK,OAASL,EAAWK,QAAUC,EAAMC,SAASF,OAI3D,GADAL,EAAWK,MAAQC,EAAME,OAAN,UAAuBR,EAAWK,OAC7B,MAApBL,EAAWK,MACb,KAAM,IAAI/E,OAAJ,iBAA2B0E,EAAWK,MAAtC,8BAJRL,GAAWK,MAAXI,EAAApb,OAOF,IAAIqb,IAAc,EAAAT,EAAA5a,UAAO,KAAU2a,EAAWK,MAAME,WACnDG,EAAaV,GAAY1O,QAAQ,SAASqP,GACzCA,EAAO/c,QAAU+c,EAAO/c,YACxBW,OAAO2X,KAAKyE,EAAO/c,SAAS0N,QAAQ,SAAS9N,GACvCmd,EAAO/c,QAAQJ,MAAY,IAC7Bmd,EAAO/c,QAAQJ,UAIrB,IAAIod,GAAcrc,OAAO2X,KAAKwE,EAAY9c,SAASqB,OAAOV,OAAO2X,KAAK8D,EAAWpc,UAC7Eid,EAAeD,EAAYpM,OAAO,SAASmM,EAAQ5M,GACrD,GAAI+M,GAAcR,EAAME,OAAN,WAAwBzM,EAM1C,OALmB,OAAf+M,EACFC,EAAMC,MAAN,eAA2BjN,EAA3B,4CAEA4M,EAAO5M,GAAQ+M,EAAYP,aAEtBI,MAqBT,OAlB0B,OAAtBX,EAAWpc,SAAmBoc,EAAWpc,QAAQqd,SACjDjB,EAAWpc,QAAQqd,QAAQjP,cAAgBzN,SAC7Cyb,EAAWpc,QAAQqd,SACjBlB,UAAWC,EAAWpc,QAAQqd,UAGlCjB,GAAa,EAAAC,EAAA5a,UAAO,KAAUib,EAAMC,UAAY3c,QAASid,GAAgBH,EAAaV,IACrF,SAAU,aAAa1O,QAAQ,SAASoL,GACR,gBAApBsD,GAAWtD,KACpBsD,EAAWtD,GAAOxG,SAASgL,cAAclB,EAAWtD,OAGxDsD,EAAWpc,QAAUW,OAAO2X,KAAK8D,EAAWpc,SAAS4Q,OAAO,SAASmM,EAAQ5M,GAI3E,MAHIiM,GAAWpc,QAAQmQ,KACrB4M,EAAO5M,GAAQiM,EAAWpc,QAAQmQ,IAE7B4M,OAEFX,EAKT,QAASmB,GAAOC,EAAUC,EAAQtO,EAAOuO,GACvC,IAAK3d,KAAKoY,QAAQwF,SAAW5d,KAAK6d,aAAeH,IAAWI,EAAApc,QAAQqc,QAAQC,KAC1E,MAAO,IAAAC,GAAAvc,OAET,IAAIwc,GAAiB,MAAT9O,EAAgB,KAAOpP,KAAKme,eACpCC,EAAWpe,KAAKqe,OAAOC,MACvBC,EAASd,GAUb,IATa,MAATS,IACE9O,KAAU,IAAMA,EAAQ8O,EAAM9O,OACrB,MAATuO,EACFO,EAAQM,EAAWN,EAAOK,EAAQb,GACf,IAAVC,IACTO,EAAQM,EAAWN,EAAO9O,EAAOuO,EAAOD,IAE1C1d,KAAKye,aAAaP,EAAOJ,EAAApc,QAAQqc,QAAQW,SAEvCH,EAAOlP,SAAW,EAAG,IAAAsP,GACnB3d,GAAQ8c,EAAApc,QAAQkd,OAAOC,YAAaN,EAAQH,EAAUV,EAE1D,KADAiB,EAAA3e,KAAK8e,SAAQC,KAAb1d,MAAAsd,GAAkBb,EAAApc,QAAQkd,OAAOI,eAAjC1d,OAAmDN,IAC/C0c,IAAWI,EAAApc,QAAQqc,QAAQW,OAAQ,IAAAO,IACrCA,EAAAjf,KAAK8e,SAAQC,KAAb1d,MAAA4d,EAAqBje,IAGzB,MAAOud,GAGT,QAASW,GAAS9P,EAAOC,EAAQe,EAAMhD,EAAOsQ,GAC5C,GAAI7F,KAwBJ,OAvB2B,gBAAhBzI,GAAMA,OAA8C,gBAAjBA,GAAMC,OAE5B,gBAAXA,IACTqO,EAAStQ,EAAOA,EAAQgD,EAAMA,EAAOf,EAAQA,EAASD,EAAMC,OAAQD,EAAQA,EAAMA,QAElFC,EAASD,EAAMC,OAAQD,EAAQA,EAAMA,OAEZ,gBAAXC,KAChBqO,EAAStQ,EAAOA,EAAQgD,EAAMA,EAAOf,EAAQA,EAAS,GAGpC,YAAhB,mBAAOe,GAAP,YAAA+O,EAAO/O,KACTyH,EAAUzH,EACVsN,EAAStQ,GACgB,gBAATgD,KACH,MAAThD,EACFyK,EAAQzH,GAAQhD,EAEhBsQ,EAAStN,GAIbsN,EAASA,GAAUI,EAAApc,QAAQqc,QAAQqB,KAC3BhQ,EAAOC,EAAQwI,EAAS6F,GAGlC,QAASc,GAAWN,EAAO9O,EAAOC,EAAQqO,GACxC,GAAa,MAATQ,EAAe,MAAO,KAC1B,IAAImB,UAAOC,QACX,IAAIlQ,uBAAwB,IAAAmQ,IACVrB,EAAM9O,MAAO8O,EAAM9O,MAAQ8O,EAAM7O,QAAQ8E,IAAI,SAASqL,GACpE,MAAOpQ,GAAMqQ,kBAAkBD,EAAK9B,IAAWI,EAAApc,QAAQqc,QAAQC,QAFvC0B,EAAAC,EAAAJ,EAAA,EACzBF,GADyBK,EAAA,GAClBJ,EADkBI,EAAA,OAIrB,IAAAE,IACW1B,EAAM9O,MAAO8O,EAAM9O,MAAQ8O,EAAM7O,QAAQ8E,IAAI,SAASqL,GACpE,MAAIA,GAAMpQ,GAAUoQ,IAAQpQ,GAASsO,IAAWI,EAAApc,QAAQqc,QAAQC,KAAcwB,EAC1EnQ,GAAU,EACLmQ,EAAMnQ,EAEN4E,KAAK4L,IAAIzQ,EAAOoQ,EAAMnQ,KAN5ByQ,EAAAH,EAAAC,EAAA,EACJP,GADIS,EAAA,GACGR,EADHQ,EAAA,GAUP,MAAO,IAAAC,GAAAC,MAAUX,EAAOC,EAAMD,GpB+1C/Bze,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQ8B,QAAU9B,EAAQsf,SAAWtf,EAAQuc,aAAejJ,MAE5D,IAAIiM,GAA4B,kBAAXc,SAAoD,gBAApBA,QAAOzM,SAAwB,SAAUhS,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXye,SAAyBze,EAAI6M,cAAgB4R,QAAUze,IAAQye,OAAOpf,UAAY,eAAkBW,IAElQme,EAAiB,WAAc,QAASO,GAAcxG,EAAK/Y,GAAK,GAAIwf,MAAeC,GAAK,EAAUC,GAAK,EAAWC,EAAKpN,MAAW,KAAM,IAAK,GAAiCqN,GAA7BlN,EAAKqG,EAAIuG,OAAOzM,cAAmB4M,GAAMG,EAAKlN,EAAGzB,QAAQ4O,QAAoBL,EAAKlQ,KAAKsQ,EAAGnT,QAAYzM,GAAKwf,EAAK9Q,SAAW1O,GAA3Dyf,GAAK,IAAoE,MAAOnR,GAAOoR,GAAK,EAAMC,EAAKrR,EAAO,QAAU,KAAWmR,GAAM/M,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIgN,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUzG,EAAK/Y,GAAK,GAAI8T,MAAMC,QAAQgF,GAAQ,MAAOA,EAAY,IAAIuG,OAAOzM,WAAY5S,QAAO8Y,GAAQ,MAAOwG,GAAcxG,EAAK/Y,EAAa,MAAM,IAAIub,WAAU,4DAEllBuE,EAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,KoBhzDjiB/b,GAAA,GACA,IAAA6gB,GAAA7gB,EAAA,IpBqzDK+d,EAAe1c,EAAuBwf,GoBpzD3CC,EAAA9gB,EAAA,IpBwzDK+gB,EAAW1f,EAAuByf,GoBvzDvCE,EAAAhhB,EAAA,IpB2zDK4d,EAAYvc,EAAuB2f,GoB1zDxCC,EAAAjhB,EAAA,IpB8zDKkhB,EAAW7f,EAAuB4f,GoB7zDvCtY,EAAA3I,EAAA,GpBi0DK4I,EAAcvH,EAAuBsH,GoBh0D1CkX,EAAA7f,EAAA,IpBo0DKmhB,EAAc9f,EAAuBwe,GoBn0D1CuB,EAAAphB,EAAA,IpBu0DKoc,EAAW/a,EAAuB+f,GoBt0DvCC,EAAArhB,EAAA,IpB00DKshB,EAAWjgB,EAAuBggB,GoBz0DvCE,EAAAvhB,EAAA,IpB60DK4c,EAAUvb,EAAuBkgB,GoB30DlCrE,GAAQ,EAAAoE,EAAA9f,SAAO,SAGbib,EpBk1DO,WoB5yDX,QAAAA,GAAYP,GAAyB,GAAAsF,GAAA1hB,KAAdoY,EAAc1J,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,KAGnC,IAHmCqN,EAAA/b,KAAA2c,GACnC3c,KAAKoY,QAAU+D,EAAaC,EAAWhE,GACvCpY,KAAKoc,UAAYpc,KAAKoY,QAAQgE,UACR,MAAlBpc,KAAKoc,UACP,MAAOgB,GAAMC,MAAM,0BAA2BjB,EAE5Cpc,MAAKoY,QAAQgF,OACfT,EAAMS,MAAMpd,KAAKoY,QAAQgF,MAE3B,IAAIuE,GAAO3hB,KAAKoc,UAAUwF,UAAUjI;AACpC3Z,KAAKoc,UAAUnH,UAAUC,IAAI,gBAC7BlV,KAAKoc,UAAUwF,UAAY,GAC3B5hB,KAAKN,KAAOM,KAAK6hB,aAAa,aAC9B7hB,KAAKN,KAAKuV,UAAUC,IAAI,YACxBlV,KAAK8e,QAAU,GAAAhB,GAAApc,QACf1B,KAAK8hB,OAAShZ,EAAApH,QAAUyK,OAAOnM,KAAKN,MAClCof,QAAS9e,KAAK8e,QACdxG,UAAWtY,KAAKoY,QAAQP,UAE1B7X,KAAKqe,OAAS,GAAA4C,GAAAvf,QAAW1B,KAAK8hB,QAC9B9hB,KAAK+hB,UAAY,GAAAV,GAAA3f,QAAc1B,KAAK8hB,OAAQ9hB,KAAK8e,SACjD9e,KAAK0c,MAAQ,GAAI1c,MAAKoY,QAAQsE,MAAM1c,KAAMA,KAAKoY,SAC/CpY,KAAKwc,SAAWxc,KAAK0c,MAAMsF,UAAU,YACrChiB,KAAKuc,UAAYvc,KAAK0c,MAAMsF,UAAU,aACtChiB,KAAKyc,QAAUzc,KAAK0c,MAAMsF,UAAU,WACpChiB,KAAK0c,MAAMuF,OACXjiB,KAAK8e,QAAQoD,GAAGpE,EAAApc,QAAQkd,OAAOI,cAAe,SAAC1M,GACzCA,IAASwL,EAAApc,QAAQkd,OAAOC,aAC1B6C,EAAKhiB,KAAKuV,UAAUkN,OAAO,WAAYT,EAAKrD,OAAO+D,aAGvDpiB,KAAK8e,QAAQoD,GAAGpE,EAAApc,QAAQkd,OAAOyD,cAAe,SAAC3E,EAAQxL,GACrD,GAAIgM,GAAQwD,EAAKK,UAAUO,UACvBlT,EAAQ8O,GAA0B,IAAjBA,EAAM7O,OAAe6O,EAAM9O,MAAQ8D,MACxDsK,GAAOjd,KAAPmhB,EAAkB,WAChB,MAAOA,GAAKrD,OAAOpM,OAAO,KAAMC,EAAW9C,IAC1CsO,IAEL,IAAI6E,GAAWviB,KAAKuc,UAAUiG,QAAf,yDAA8Eb,EAA9E,oBACf3hB,MAAKyiB,YAAYF,GACjBviB,KAAKyc,QAAQiG,QACT1iB,KAAKoY,QAAQuK,aACf3iB,KAAKN,KAAKgZ,aAAa,mBAAoB1Y,KAAKoY,QAAQuK,aAEtD3iB,KAAKoY,QAAQwK,UACf5iB,KAAK6iB,UpBwrER,MAxbApC,GAAa9D,EAAO,OAClB5D,IAAK,QACL3L,MAAO,SoBp1DG0V,GACPA,KAAU,IACZA,EAAQ,OAEVtB,EAAA9f,QAAOqhB,MAAMD,MpBu1DZ/J,IAAK,SACL3L,MAAO,SoBr1DIgD,GAIZ,MAH0B,OAAtBpQ,KAAKgjB,QAAQ5S,IACfgN,EAAMC,MAAN,iBAA6BjN,EAA7B,qCAEKpQ,KAAKgjB,QAAQ5S,MpBw1DnB2I,IAAK,WACL3L,MAAO,SoBt1DMgE,EAAMK,GAA2B,GAAA5C,GAAA7O,KAAnBijB,EAAmBvU,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,IAAAA,UAAA,EAC/C,IAAoB,gBAAT0C,GAAmB,CAC5B,GAAIhB,GAAOgB,EAAKkG,UAAYlG,EAAKxB,QACb,iBAATQ,GAETpQ,KAAKgF,SAAS,WAAaoL,EAAMgB,EAAMK,GAEvC7Q,OAAO2X,KAAKnH,GAAMzD,QAAQ,SAACoL,GACzBlK,EAAK7J,SAAS+T,EAAK3H,EAAK2H,GAAMtH,SAIR,OAAtBzR,KAAKgjB,QAAQ5R,IAAkB6R,GACjC7F,EAAM8F,KAAN,eAA0B9R,EAA1B,QAAuCK,GAEzCzR,KAAKgjB,QAAQ5R,GAAQK,GAChBL,EAAK+R,WAAW,WAAa/R,EAAK+R,WAAW,cAC1B,aAApB1R,EAAO7B,UACT9G,EAAApH,QAAUsD,SAASyM,OpBs5DxBgP,EAAa9D,IACX5D,IAAK,eACL3L,MAAO,SoBl2DGgP,GAA2B,GAAhBnL,GAAgBvC,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAN,IAChC,IAAyB,gBAAd0N,GAAwB,CACjC,GAAIpH,GAAYoH,CAChBA,GAAY7J,SAASuC,cAAc,OACnCsH,EAAUnH,UAAUC,IAAIF,GAG1B,MADAhV,MAAKoc,UAAUxN,aAAawN,EAAWnL,GAChCmL,KpBu2DNrD,IAAK,OACL3L,MAAO,WoBp2DRpN,KAAK+hB,UAAUqB,SAAS,SpBw2DvBrK,IAAK,aACL3L,MAAO,SoBt2DCgC,EAAOC,EAAQqO,GAAQ,GAAA2F,GAAArjB,KAAAsjB,EACJpE,EAAS9P,EAAOC,EAAQqO,GADpB6F,EAAA5D,EAAA2D,EAAA,EAEhC,OADClU,GAD+BmU,EAAA,GACxBlU,EADwBkU,EAAA,GACd7F,EADc6F,EAAA,GAEzB/F,EAAOjd,KAAKP,KAAM,WACvB,MAAOqjB,GAAKhF,OAAOmF,WAAWpU,EAAOC,IACpCqO,EAAQtO,GAAO,EAAGC,MpBk3DpB0J,IAAK,UACL3L,MAAO,WoB/2DRpN,KAAKyjB,QAAO,MpBm3DX1K,IAAK,SACL3L,MAAO,WoBj3Da,GAAhBsW,KAAgBhV,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,KAAAA,UAAA,EACrB1O,MAAK8hB,OAAO2B,OAAOC,GACnB1jB,KAAKoc,UAAUnH,UAAUkN,OAAO,eAAgBuB,GAC3CA,GACH1jB,KAAK2jB,UpBu3DN5K,IAAK,QACL3L,MAAO,WoBn3DRpN,KAAK+hB,UAAU6B,QACf5jB,KAAK+hB,UAAU8B,oBpBu3Dd9K,IAAK,SACL3L,MAAO,SoBr3DHgD,EAAMhD,GAAqC,GAAA0W,GAAA9jB,KAA9B0d,EAA8BhP,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAArBoP,EAAApc,QAAQqc,QAAQqB,GAC3C,OAAO5B,GAAOjd,KAAKP,KAAM,WACvB,GAAIke,GAAQ4F,EAAK3F,cAAa,GAC1BI,EAAS,GAAAN,GAAAvc,OACb,IAAa,MAATwc,EACF,MAAOK,EACF,IAAIzV,EAAApH,QAAU2K,MAAM+D,EAAMtH,EAAApH,QAAUwK,MAAMwK,OAC/C6H,EAASuF,EAAKzF,OAAO0F,WAAW7F,EAAM9O,MAAO8O,EAAM7O,OAA1CwM,KAAqDzL,EAAOhD,QAChE,IAAqB,IAAjB8Q,EAAM7O,OAEf,MADAyU,GAAK/B,UAAUpM,OAAOvF,EAAMhD,GACrBmR,CAEPA,GAASuF,EAAKzF,OAAO2F,WAAW9F,EAAM9O,MAAO8O,EAAM7O,OAA1CwM,KAAqDzL,EAAOhD,IAGvE,MADA0W,GAAKrF,aAAaP,EAAOJ,EAAApc,QAAQqc,QAAQW,QAClCH,GACNb,MpB43DF3E,IAAK,aACL3L,MAAO,SoB13DCgC,EAAOC,EAAQe,EAAMhD,EAAOsQ,GAAQ,GAAAuG,GAAAjkB,KACzC6X,SADyCqM,EAEVhF,EAAS9P,EAAOC,EAAQe,EAAMhD,EAAOsQ,GAF3ByG,EAAAxE,EAAAuE,EAAA,EAG7C,OADC9U,GAF4C+U,EAAA,GAErC9U,EAFqC8U,EAAA,GAE7BtM,EAF6BsM,EAAA,GAEpBzG,EAFoByG,EAAA,GAGtC3G,EAAOjd,KAAKP,KAAM,WACvB,MAAOikB,GAAK5F,OAAO0F,WAAW3U,EAAOC,EAAQwI,IAC5C6F,EAAQtO,EAAO,MpBw4DjB2J,IAAK,aACL3L,MAAO,SoBt4DCgC,EAAOC,EAAQe,EAAMhD,EAAOsQ,GAAQ,GAAA0G,GAAApkB,KACzC6X,SADyCwM,EAEVnF,EAAS9P,EAAOC,EAAQe,EAAMhD,EAAOsQ,GAF3B4G,EAAA3E,EAAA0E,EAAA,EAG7C,OADCjV,GAF4CkV,EAAA,GAErCjV,EAFqCiV,EAAA,GAE7BzM,EAF6ByM,EAAA,GAEpB5G,EAFoB4G,EAAA,GAGtC9G,EAAOjd,KAAKP,KAAM,WACvB,MAAOokB,GAAK/F,OAAO2F,WAAW5U,EAAOC,EAAQwI,IAC5C6F,EAAQtO,EAAO,MpBo5DjB2J,IAAK,YACL3L,MAAO,SoBl5DAgC,GAAmB,GAAZC,GAAYX,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAH,CACxB,OAAqB,gBAAVU,GACFpP,KAAK+hB,UAAUwC,UAAUnV,EAAOC,GAEhCrP,KAAK+hB,UAAUwC,UAAUnV,EAAMA,MAAOA,EAAMC,WpBw5DpD0J,IAAK,cACL3L,MAAO,WoBr5DgD,GAA9CgC,GAA8CV,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAtC,EAAGW,EAAmCX,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAA1B1O,KAAKwkB,YAAcpV,EAAOqV,EACtCvF,EAAS9P,EAAOC,GADsBqV,EAAA/E,EAAA8E,EAAA,EAExD,OADCrV,GADuDsV,EAAA,GAChDrV,EADgDqV,EAAA,GAEjD1kB,KAAKqe,OAAOsG,YAAYvV,EAAOC,MpBi6DrC0J,IAAK,YACL3L,MAAO,WoB/5DyC,GAAzCgC,GAAyCV,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAjC1O,KAAKme,eAAgB9O,EAAYX,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAH,CAC9C,OAAqB,gBAAVU,GACFpP,KAAKqe,OAAOuG,UAAUxV,EAAOC,GAE7BrP,KAAKqe,OAAOuG,UAAUxV,EAAMA,MAAOA,EAAMC,WpBs6DjD0J,IAAK,YACL3L,MAAO,WoBl6DR,MAAOpN,MAAK8hB,OAAOzS,YpBs6DlB0J,IAAK,YACL3L,MAAO,SoBp6DAgD,GACR,MAAOpQ,MAAK0c,MAAMzc,QAAQmQ,MpBu6DzB2I,IAAK,eACL3L,MAAO,WoBr6DkB,GAAfwW,GAAelV,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,IAAAA,UAAA,EAG1B,OAFIkV,IAAO5jB,KAAK4jB,QAChB5jB,KAAKiS,SACEjS,KAAK+hB,UAAU8C,WAAW,MpB06DhC9L,IAAK,UACL3L,MAAO,WoBx6D4C,GAA9CgC,GAA8CV,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAtC,EAAGW,EAAmCX,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAA1B1O,KAAKwkB,YAAcpV,EAAO0V,EAClC5F,EAAS9P,EAAOC,GADkB0V,EAAApF,EAAAmF,EAAA,EAEpD,OADC1V,GADmD2V,EAAA,GAC5C1V,EAD4C0V,EAAA,GAE7C/kB,KAAKqe,OAAO2G,QAAQ5V,EAAOC,MpBo7DjC0J,IAAK,WACL3L,MAAO,WoBj7DR,MAAOpN,MAAK+hB,UAAUkD,cpBq7DrBlM,IAAK,cACL3L,MAAO,SoBn7DEgC,EAAO8V,EAAO9X,GAAmC,GAAA+X,GAAAnlB,KAA5B0d,EAA4BhP,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAnBiO,EAAMoB,QAAQqB,GACtD,OAAO5B,GAAOjd,KAAKP,KAAM,WACvB,MAAOmlB,GAAK9G,OAAO+G,YAAYhW,EAAO8V,EAAO9X,IAC5CsQ,EAAQtO,MpB07DV2J,IAAK,aACL3L,MAAO,SoBx7DCgC,EAAOqM,EAAMrL,EAAMhD,EAAOsQ,GAAQ,GAAA2H,GAAArlB,KACvC6X,SADuCyN,EAEdpG,EAAS9P,EAAO,EAAGgB,EAAMhD,EAAOsQ,GAFlB6H,EAAA5F,EAAA2F,EAAA,EAG3C,OADClW,GAF0CmW,EAAA,GAEjC1N,EAFiC0N,EAAA,GAExB7H,EAFwB6H,EAAA,GAGpC/H,EAAOjd,KAAKP,KAAM,WACvB,MAAOqlB,GAAKhH,OAAOmH,WAAWpW,EAAOqM,EAAM5D,IAC1C6F,EAAQtO,EAAOqM,EAAKpM,WpBq8DtB0J,IAAK,YACL3L,MAAO,WoBl8DR,OAAQpN,KAAKoc,UAAUnH,UAAU3B,SAAS,kBpBs8DzCyF,IAAK,MACL3L,MAAO,WoBn8DR,MAAOpN,MAAK8e,QAAQ2G,IAAIpkB,MAAMrB,KAAK8e,QAASpQ,cpBu8D3CqK,IAAK,KACL3L,MAAO,WoBp8DR,MAAOpN,MAAK8e,QAAQoD,GAAG7gB,MAAMrB,KAAK8e,QAASpQ,cpBw8D1CqK,IAAK,OACL3L,MAAO,WoBr8DR,MAAOpN,MAAK8e,QAAQ4G,KAAKrkB,MAAMrB,KAAK8e,QAASpQ,cpBy8D5CqK,IAAK,YACL3L,MAAO,SoBv8DAgC,EAAOuS,EAAMjE,GACrB1d,KAAKuc,UAAUoJ,qBAAqBvW,EAAOuS,EAAMjE,MpB08DhD3E,IAAK,eACL3L,MAAO,SoBx8DGgC,EAAOC,EAAQqO,GAAQ,GAAAkI,GAAA5lB,KAAA6lB,EACN3G,EAAS9P,EAAOC,EAAQqO,GADlBoI,EAAAnG,EAAAkG,EAAA,EAElC,OADCzW,GADiC0W,EAAA,GAC1BzW,EAD0ByW,EAAA,GAChBpI,EADgBoI,EAAA,GAE3BtI,EAAOjd,KAAKP,KAAM,WACvB,MAAO4lB,GAAKvH,OAAO0H,aAAa3W,EAAOC,IACtCqO,EAAQtO,MpBo9DV2J,IAAK,cACL3L,MAAO,SoBl9DEkR,GAAqC,GAAA0H,GAAAhmB,KAA9B0d,EAA8BhP,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAArBoP,EAAApc,QAAQqc,QAAQqB,GAC1C,OAAO5B,GAAOjd,KAAKP,KAAM,WACvBse,EAAQ,GAAAL,GAAAvc,QAAU4c,EAClB,IAAIjP,GAAS2W,EAAKxB,YACdyB,EAAUD,EAAK3H,OAAOmF,WAAW,EAAGnU,GACpC6W,EAAUF,EAAK3H,OAAO8H,WAAW7H,GACjC8H,EAASF,EAAQG,IAAIH,EAAQG,IAAIhX,OAAS,EAChC,OAAV+W,GAA4C,gBAAnBA,GAAOE,QAAkE,OAA1CF,EAAOE,OAAOF,EAAOE,OAAOjX,OAAO,KAC7F2W,EAAK3H,OAAOmF,WAAWwC,EAAKxB,YAAc,EAAG,GAC7C0B,EAAQK,OAAO,GAEjB,IAAI5S,GAAMsS,EAAQO,QAAQN,EAC1B,OAAOvS,IACN+J,MpBy9DF3E,IAAK,eACL3L,MAAO,SoBv9DGgC,EAAOC,EAAQqO,GAC1B,GAAa,MAATtO,EACFpP,KAAK+hB,UAAUqB,SAAS,KAAM/T,GAAUsN,EAAMoB,QAAQqB,SACjD,IAAAqH,GACuBvH,EAAS9P,EAAOC,EAAQqO,GAD/CgJ,EAAA/G,EAAA8G,EAAA,EACJrX,GADIsX,EAAA,GACGrX,EADHqX,EAAA,GACahJ,EADbgJ,EAAA,GAEL1mB,KAAK+hB,UAAUqB,SAAS,GAAArD,GAAAC,MAAU5Q,EAAOC,GAASqO,GAEpD1d,KAAK+hB,UAAU8B,oBpBi+Dd9K,IAAK,UACL3L,MAAO,SoB/9DFqO,GAAoC,GAA9BiC,GAA8BhP,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAArBoP,EAAApc,QAAQqc,QAAQqB,IACjCd,GAAQ,GAAAL,GAAAvc,SAAY4kB,OAAO7K,EAC/B,OAAOzb,MAAKyiB,YAAYnE,EAAOZ,MpBo+D9B3E,IAAK,SACL3L,MAAO,WoBl+D4B,GAA/BsQ,GAA+BhP,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAtBoP,EAAApc,QAAQqc,QAAQC,KAC1BO,EAASve,KAAK8hB,OAAO7P,OAAOyL,EAEhC,OADA1d,MAAK+hB,UAAU9P,OAAOyL,GACfa,KpBu+DNxF,IAAK,iBACL3L,MAAO,SoBr+DKkR,GAAqC,GAAAqI,GAAA3mB,KAA9B0d,EAA8BhP,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAArBoP,EAAApc,QAAQqc,QAAQqB,GAC7C,OAAO5B,GAAOjd,KAAKP,KAAM,WAEvB,MADAse,GAAQ,GAAAL,GAAAvc,QAAU4c,GACXqI,EAAKtI,OAAO8H,WAAW7H,EAAOZ,IACpCA,GAAQ,OpB6+DLf,IoB1+DVA,GAAMC,UACJgK,OAAQ,KACR/O,QAAS,KACT5X,WACA0iB,YAAa,GACbC,UAAU,EACVhF,QAAQ,EACRlB,MAAO,WAETC,EAAMiC,OAASd,EAAApc,QAAQkd,OACvBjC,EAAMoB,QAAUD,EAAApc,QAAQqc,QAExBpB,EAAMkK,QAA0D,QAEhElK,EAAMqG,SACJ1E,MAAAL,EAAAvc,QACAolB,UAAAhe,EAAApH,QACAqlB,cAAA3F,EAAA1f,QACAslB,aAAAlK,EAAApb,SpBooED9B,EoBz/DQuc,epB0/DRvc,EoB1/DsBsf,WpB2/DtBtf,EoB3/DyC8B,QAATib,GpB+/D3B,SAAS9c,EAAQD,GAEtB,YqB78ED,IAAIqnB,GAAO1U,SAASuC,cAAc,MAClCmS,GAAKhS,UAAUkN,OAAO,cAAc,GAChC8E,EAAKhS,UAAU3B,SAAS,gBAAe,WACzC,GAAI4T,GAAUC,aAAatmB,UAAUshB,MACrCgF,cAAatmB,UAAUshB,OAAS,SAASiF,EAAOzV,GAC9C,MAAIjD,WAAUW,OAAS,IAAMrP,KAAKsT,SAAS8T,KAAYzV,EAC9CA,EAEAuV,EAAQ3mB,KAAKP,KAAMonB,OAK3BC,OAAOxmB,UAAUsiB,aACpBkE,OAAOxmB,UAAUsiB,WAAa,SAASmE,EAAchW,GAEnD,MADAA,GAAWA,GAAY,EAChBtR,KAAKunB,OAAOjW,EAAUgW,EAAajY,UAAYiY,IAIrDD,OAAOxmB,UAAU2mB,WACpBH,OAAOxmB,UAAU2mB,SAAW,SAASF,EAAchW,GACjD,GAAImW,GAAgBznB,KAAK6U,YACD,gBAAbvD,KAA0BoW,SAASpW,IAAa2C,KAAK0T,MAAMrW,KAAcA,GAAYA,EAAWmW,EAAcpY,UACvHiC,EAAWmW,EAAcpY,QAE3BiC,GAAYgW,EAAajY,MACzB,IAAIuY,GAAYH,EAAc1S,QAAQuS,EAAchW,EACpD,OAAOsW,MAAc,GAAMA,IAActW,IAIxCmD,MAAM5T,UAAUuL,MACnBxL,OAAOuM,eAAesH,MAAM5T,UAAW,QACrCuM,MAAO,QAAAA,GAASya,GACd,GAAa,OAAT7nB,KACF,KAAM,IAAIkc,WAAU,mDAEtB,IAAyB,kBAAd2L,GACT,KAAM,IAAI3L,WAAU,+BAOtB,KAAK,GAFD9O,GAHA0a,EAAOlnB,OAAOZ,MACdqP,EAASyY,EAAKzY,SAAW,EACzB0Y,EAAUrZ,UAAU,GAGf/N,EAAI,EAAGA,EAAI0O,EAAQ1O,IAE1B,GADAyM,EAAQ0a,EAAKnnB,GACTknB,EAAUtnB,KAAKwnB,EAAS3a,EAAOzM,EAAGmnB,GACpC,MAAO1a,MASjBmF,SAASyV,iBAAiB,mBAAoB,WAC5CzV,SAAS0V,YAAY,wBAAwB,GAAO,MrBs9EhD,SAASpoB,EAAQD,EAASM,GsBjhFhC,GAAAgoB,GAAAhoB,EAAA,IACAioB,EAAAjoB,EAAA,IACAkoB,EAAAloB,EAAA,IACAmoB,EAAAnoB,EAAA,IAGAooB,EAAAjB,OAAAkB,aAAA,GAGAC,EAAA,SAAAnC,GAEA5R,MAAAC,QAAA2R,GACArmB,KAAAqmB,MACG,MAAAA,GAAA5R,MAAAC,QAAA2R,OACHrmB,KAAAqmB,UAEArmB,KAAAqmB,OAKAmC,GAAA3nB,UAAAylB,OAAA,SAAA7K,EAAAjF,GACA,GAAAiS,KACA,YAAAhN,EAAApM,OAAArP,MACAyoB,EAAAnC,OAAA7K,EACA,MAAAjF,GAAA,gBAAAA,IAAA5V,OAAA2X,KAAA/B,GAAAnH,OAAA,IACAoZ,EAAAjS,cAEAxW,KAAAiQ,KAAAwY,KAGAD,EAAA3nB,UAAA,gBAAAwO,GACA,MAAAA,IAAA,EAAArP,KACAA,KAAAiQ,MAAoBsW,OAAAlX,KAGpBmZ,EAAA3nB,UAAA6nB,OAAA,SAAArZ,EAAAmH,GACA,GAAAnH,GAAA,QAAArP,KACA,IAAAyoB,IAAeC,OAAArZ,EAIf,OAHA,OAAAmH,GAAA,gBAAAA,IAAA5V,OAAA2X,KAAA/B,GAAAnH,OAAA,IACAoZ,EAAAjS,cAEAxW,KAAAiQ,KAAAwY,IAGAD,EAAA3nB,UAAAoP,KAAA,SAAAwY,GACA,GAAArZ,GAAApP,KAAAqmB,IAAAhX,OACA+W,EAAApmB,KAAAqmB,IAAAjX,EAAA,EAEA,IADAqZ,EAAAL,GAAA,KAAyBK,GACzB,gBAAArC,GAAA,CACA,mBAAAqC,GAAA,wBAAArC,GAAA,OAEA,MADApmB,MAAAqmB,IAAAjX,EAAA,IAA6BmX,OAAAH,EAAA,OAAAqC,EAAA,QAC7BzoB,IAIA,oBAAAomB,GAAA,cAAAqC,EAAAnC,SACAlX,GAAA,EACAgX,EAAApmB,KAAAqmB,IAAAjX,EAAA,GACA,gBAAAgX,IAEA,MADApmB,MAAAqmB,IAAAsC,QAAAF,GACAzoB,IAGA,IAAAmoB,EAAAM,EAAAjS,WAAA4P,EAAA5P,YAAA,CACA,mBAAAiS,GAAAnC,QAAA,gBAAAF,GAAAE,OAGA,MAFAtmB,MAAAqmB,IAAAjX,EAAA,IAA+BkX,OAAAF,EAAAE,OAAAmC,EAAAnC,QAC/B,gBAAAmC,GAAAjS,aAAAxW,KAAAqmB,IAAAjX,EAAA,GAAAoH,WAAAiS,EAAAjS,YACAxW,IACO,oBAAAyoB,GAAAC,QAAA,gBAAAtC,GAAAsC,OAGP,MAFA1oB,MAAAqmB,IAAAjX,EAAA,IAA+BsZ,OAAAtC,EAAAsC,OAAAD,EAAAC,QAC/B,gBAAAD,GAAAjS,aAAAxW,KAAAqmB,IAAAjX,EAAA,GAAAoH,WAAAiS,EAAAjS,YACAxW,MASA,MALAoP,KAAApP,KAAAqmB,IAAAhX,OACArP,KAAAqmB,IAAApW,KAAAwY,GAEAzoB,KAAAqmB,IAAAuC,OAAAxZ,EAAA,EAAAqZ,GAEAzoB,MAGAwoB,EAAA3nB,UAAA+R,OAAA,SAAAiV,GACA,MAAA7nB,MAAAqmB,IAAAzT,OAAAiV,IAGAW,EAAA3nB,UAAA8M,QAAA,SAAAka,GACA7nB,KAAAqmB,IAAA1Y,QAAAka,IAGAW,EAAA3nB,UAAAsT,IAAA,SAAA0T,GACA,MAAA7nB,MAAAqmB,IAAAlS,IAAA0T,IAGAW,EAAA3nB,UAAAgoB,UAAA,SAAAhB,GACA,GAAAiB,MAAAC,IAKA,OAJA/oB,MAAA2N,QAAA,SAAA0a,GACA,GAAA5W,GAAAoW,EAAAQ,GAAAS,EAAAC,CACAtX,GAAAxB,KAAAoY,MAEAS,EAAAC,IAGAP,EAAA3nB,UAAAgQ,OAAA,SAAAgX,EAAAmB,GACA,MAAAhpB,MAAAqmB,IAAAxV,OAAAgX,EAAAmB,IAGAR,EAAA3nB,UAAAooB,KAAA,WACA,GAAA7C,GAAApmB,KAAAqmB,IAAArmB,KAAAqmB,IAAAhX,OAAA,EAIA,OAHA+W,MAAAsC,SAAAtC,EAAA5P,YACAxW,KAAAqmB,IAAA6C,MAEAlpB,MAGAwoB,EAAA3nB,UAAAwO,OAAA,WACA,MAAArP,MAAA6Q,OAAA,SAAAxB,EAAA4X,GACA,MAAA5X,GAAAgZ,EAAAhZ,OAAA4X,IACG,IAGHuB,EAAA3nB,UAAAI,MAAA,SAAAoe,EAAAC,GACAD,KAAA,EACA,gBAAAC,OAAA6J,IAIA,KAHA,GAAA9C,MACA+C,EAAAf,EAAA7U,SAAAxT,KAAAqmB,KACAjX,EAAA,EACAA,EAAAkQ,GAAA8J,EAAAC,WAAA,CACA,GAAAC,EACAla,GAAAiQ,EACAiK,EAAAF,EAAAxX,KAAAyN,EAAAjQ,IAEAka,EAAAF,EAAAxX,KAAA0N,EAAAlQ,GACAiX,EAAApW,KAAAqZ,IAEAla,GAAAiZ,EAAAhZ,OAAAia,GAEA,UAAAd,GAAAnC,IAIAmC,EAAA3nB,UAAA2lB,QAAA,SAAA7X,GAIA,IAHA,GAAA4a,GAAAlB,EAAA7U,SAAAxT,KAAAqmB,KACAmD,EAAAnB,EAAA7U,SAAA7E,EAAA0X,KACA/H,EAAA,GAAAkK,GACAe,EAAAF,WAAAG,EAAAH,WACA,cAAAG,EAAAC,WACAnL,EAAArO,KAAAuZ,EAAA5X,YACK,eAAA2X,EAAAE,WACLnL,EAAArO,KAAAsZ,EAAA3X,YACK,CACL,GAAAvC,GAAA4E,KAAAC,IAAAqV,EAAAG,aAAAF,EAAAE,cACAC,EAAAJ,EAAA3X,KAAAvC,GACAua,EAAAJ,EAAA5X,KAAAvC,EACA,oBAAAua,GAAAlB,OAAA,CACA,GAAAD,KACA,iBAAAkB,GAAAjB,OACAD,EAAAC,OAAArZ,EAEAoZ,EAAAnC,OAAAqD,EAAArD,MAGA,IAAA9P,GAAA6R,EAAA7R,WAAAgQ,QAAAmD,EAAAnT,WAAAoT,EAAApT,WAAA,gBAAAmT,GAAAjB,OACAlS,KAAAiS,EAAAjS,cACA8H,EAAArO,KAAAwY,OAGO,gBAAAmB,GAAA,wBAAAD,GAAAjB,QACPpK,EAAArO,KAAA2Z,GAIA,MAAAtL,GAAA2K,QAGAT,EAAA3nB,UAAAS,OAAA,SAAAqN,GACA,GAAA2P,GAAA,GAAAkK,GAAAxoB,KAAAqmB,IAAAplB,QAKA,OAJA0N,GAAA0X,IAAAhX,OAAA,IACAiP,EAAArO,KAAAtB,EAAA0X,IAAA,IACA/H,EAAA+H,IAAA/H,EAAA+H,IAAA/kB,OAAAqN,EAAA0X,IAAAplB,MAAA,KAEAqd,GAGAkK,EAAA3nB,UAAAqnB,KAAA,SAAAvZ,EAAAS,GACA,GAAApP,KAAAqmB,MAAA1X,EAAA0X,IACA,UAAAmC,EAEA,IAAAqB,IAAA7pB,KAAA2O,GAAAwF,IAAA,SAAAmK,GACA,MAAAA,GAAAnK,IAAA,SAAAkU,GACA,SAAAA,EAAA/B,OACA,sBAAA+B,GAAA/B,OAAA+B,EAAA/B,OAAAgC,CAEA,IAAAwB,GAAAxL,IAAA3P,EAAA,WACA,UAAAgJ,OAAA,iBAAAmS,EAAA,mBACK5Q,KAAA,MAELoF,EAAA,GAAAkK,GACAuB,EAAA7B,EAAA2B,EAAA,GAAAA,EAAA,GAAAza,GACAma,EAAAlB,EAAA7U,SAAAxT,KAAAqmB,KACAmD,EAAAnB,EAAA7U,SAAA7E,EAAA0X,IA6BA,OA5BA0D,GAAApc,QAAA,SAAAqc,GAEA,IADA,GAAA3a,GAAA2a,EAAA,GAAA3a,OACAA,EAAA,IACA,GAAA4a,GAAA,CACA,QAAAD,EAAA,IACA,IAAA9B,GAAAgC,OACAD,EAAAhW,KAAAC,IAAAsV,EAAAE,aAAAra,GACAiP,EAAArO,KAAAuZ,EAAA5X,KAAAqY,GACA,MACA,KAAA/B,GAAAiC,OACAF,EAAAhW,KAAAC,IAAA7E,EAAAka,EAAAG,cACAH,EAAA3X,KAAAqY,GACA3L,EAAA,OAAA2L,EACA,MACA,KAAA/B,GAAAkC,MACAH,EAAAhW,KAAAC,IAAAqV,EAAAG,aAAAF,EAAAE,aAAAra,EACA,IAAAsa,GAAAJ,EAAA3X,KAAAqY,GACAL,EAAAJ,EAAA5X,KAAAqY,EACA9B,GAAAwB,EAAArD,OAAAsD,EAAAtD,QACAhI,EAAAoK,OAAAuB,EAAA5B,EAAA7R,WAAA0R,KAAAyB,EAAAnT,WAAAoT,EAAApT,aAEA8H,EAAArO,KAAA2Z,GAAA,OAAAK,GAIA5a,GAAA4a,KAGA3L,EAAA2K,QAGAT,EAAA3nB,UAAAwpB,SAAA,SAAAxC,EAAAyC,GACAA,KAAA,IAGA,KAFA,GAAAlB,GAAAf,EAAA7U,SAAAxT,KAAAqmB,KACAkE,EAAA,GAAA/B,GACAY,EAAAC,WAAA,CACA,cAAAD,EAAAK,WAAA,MACA,IAAAE,GAAAP,EAAAoB,OACAnL,EAAAgJ,EAAAhZ,OAAAsa,GAAAP,EAAAM,aACAta,EAAA,gBAAAua,GAAArD,OACAqD,EAAArD,OAAAvR,QAAAuV,EAAAjL,MAAA,CACAjQ,GAAA,EACAmb,EAAAta,KAAAmZ,EAAAxX,QACKxC,EAAA,EACLmb,EAAAta,KAAAmZ,EAAAxX,KAAAxC,KAEAyY,EAAA0C,EAAAnB,EAAAxX,KAAA,GAAA4E,gBACA+T,EAAA,GAAA/B,IAGA+B,EAAAlb,SAAA,GACAwY,EAAA0C,OAIA/B,EAAA3nB,UAAA4pB,UAAA,SAAA9b,EAAA+b,GAEA,GADAA,MACA,gBAAA/b,GACA,MAAA3O,MAAAyf,kBAAA9Q,EAAA+b,EAKA,KAHA,GAAAnB,GAAAlB,EAAA7U,SAAAxT,KAAAqmB,KACAmD,EAAAnB,EAAA7U,SAAA7E,EAAA0X,KACA/H,EAAA,GAAAkK,GACAe,EAAAF,WAAAG,EAAAH,WACA,cAAAE,EAAAE,aAAAiB,GAAA,WAAAlB,EAAAC,WAEK,cAAAD,EAAAC,WACLnL,EAAArO,KAAAuZ,EAAA5X,YACK,CACL,GAAAvC,GAAA4E,KAAAC,IAAAqV,EAAAG,aAAAF,EAAAE,cACAC,EAAAJ,EAAA3X,KAAAvC,GACAua,EAAAJ,EAAA5X,KAAAvC,EACA,IAAAsa,EAAA,OAEA,QACOC,GAAA,OACPtL,EAAArO,KAAA2Z,GAGAtL,EAAAoK,OAAArZ,EAAAgZ,EAAA7R,WAAAiU,UAAAd,EAAAnT,WAAAoT,EAAApT,WAAAkU,QAdApM,GAAAoK,OAAAL,EAAAhZ,OAAAka,EAAA3X,QAkBA,OAAA0M,GAAA2K,QAGAT,EAAA3nB,UAAA4e,kBAAA,SAAArQ,EAAAsb,GACAA,KAGA,KAFA,GAAAnB,GAAAlB,EAAA7U,SAAAxT,KAAAqmB,KACA7W,EAAA,EACA+Z,EAAAF,WAAA7Z,GAAAJ,GAAA,CACA,GAAAC,GAAAka,EAAAG,aACAiB,EAAApB,EAAAE,UACAF,GAAA3X,OACA,WAAA+Y,GAGK,WAAAA,IAAAnb,EAAAJ,IAAAsb,KACLtb,GAAAC,GAEAG,GAAAH,GALAD,GAAA6E,KAAAC,IAAA7E,EAAAD,EAAAI,GAOA,MAAAJ,IAIAvP,EAAAD,QAAA4oB,GtBwhFM,SAAS3oB,EAAQD,GuBjyFvB,QAAAgrB,GAAAC,EAAAC,EAAAC,GAEA,GAAAF,GAAAC,EACA,MAAAD,KACAG,EAAAH,QAMAE,EAAA,GAAAF,EAAAxb,OAAA0b,KACAA,EAAA,KAIA,IAAAE,GAAAC,EAAAL,EAAAC,GACAK,EAAAN,EAAAO,UAAA,EAAAH,EACAJ,KAAAO,UAAAH,GACAH,IAAAM,UAAAH,GAGAA,EAAAI,EAAAR,EAAAC,EACA,IAAAQ,GAAAT,EAAAO,UAAAP,EAAAxb,OAAA4b,EACAJ,KAAAO,UAAA,EAAAP,EAAAxb,OAAA4b,GACAH,IAAAM,UAAA,EAAAN,EAAAzb,OAAA4b,EAGA,IAAAM,GAAAC,EAAAX,EAAAC,EAaA,OAVAK,IACAI,EAAA5C,SAAAqC,EAAAG,IAEAG,GACAC,EAAAtb,MAAA+a,EAAAM,IAEAG,EAAAF,GACA,MAAAR,IACAQ,EAAAG,EAAAH,EAAAR,IAEAQ,EAWA,QAAAC,GAAAX,EAAAC,GACA,GAAAS,EAEA,KAAAV,EAEA,QAAAc,EAAAb,GAGA,KAAAA,EAEA,QAAAc,EAAAf,GAGA,IAAAgB,GAAAhB,EAAAxb,OAAAyb,EAAAzb,OAAAwb,EAAAC,EACAgB,EAAAjB,EAAAxb,OAAAyb,EAAAzb,OAAAyb,EAAAD,EACAlqB,EAAAkrB,EAAA9W,QAAA+W,EACA,IAAAnrB,IAAA,EASA,MAPA4qB,KAAAI,EAAAE,EAAAT,UAAA,EAAAzqB,KACAqqB,EAAAc,IACAH,EAAAE,EAAAT,UAAAzqB,EAAAmrB,EAAAzc,UAEAwb,EAAAxb,OAAAyb,EAAAzb,SACAkc,EAAA,MAAAA,EAAA,MAAAK,GAEAL,CAGA,OAAAO,EAAAzc,OAGA,QAAAuc,EAAAf,IAAAc,EAAAb,GAIA,IAAAiB,GAAAC,EAAAnB,EAAAC,EACA,IAAAiB,EAAA,CAEA,GAAAE,GAAAF,EAAA,GACAG,EAAAH,EAAA,GACAI,EAAAJ,EAAA,GACAK,EAAAL,EAAA,GACAM,EAAAN,EAAA,GAEAO,EAAA1B,EAAAqB,EAAAE,GACAI,EAAA3B,EAAAsB,EAAAE,EAEA,OAAAE,GAAAhrB,SAAA0pB,EAAAqB,IAAAE,GAGA,MAAAC,GAAA3B,EAAAC,GAaA,QAAA0B,GAAA3B,EAAAC,GAWA,OATA2B,GAAA5B,EAAAxb,OACAqd,EAAA5B,EAAAzb,OACAsd,EAAA1Y,KAAA2Y,MAAAH,EAAAC,GAAA,GACAG,EAAAF,EACAG,EAAA,EAAAH,EACAI,EAAA,GAAAtY,OAAAqY,GACAE,EAAA,GAAAvY,OAAAqY,GAGAG,EAAA,EAAiBA,EAAAH,EAAcG,IAC/BF,EAAAE,IAAA,EACAD,EAAAC,IAAA,CAEAF,GAAAF,EAAA,KACAG,EAAAH,EAAA,IAWA,QAVAvO,GAAAmO,EAAAC,EAGAQ,EAAA5O,EAAA,KAGA6O,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAnf,EAAA,EAAiBA,EAAAwe,EAAWxe,IAAA,CAE5B,OAAAof,IAAApf,EAAAgf,EAA+BI,GAAApf,EAAAif,EAAiBG,GAAA,GAChD,GACAC,GADAC,EAAAZ,EAAAU,CAGAC,GADAD,IAAApf,GAAAof,GAAApf,GAAA4e,EAAAU,EAAA,GAAAV,EAAAU,EAAA,GACAV,EAAAU,EAAA,GAEAV,EAAAU,EAAA,IAGA,KADA,GAAAC,GAAAF,EAAAD,EACAC,EAAAf,GAAAiB,EAAAhB,GACA7B,EAAA8C,OAAAH,IAAA1C,EAAA6C,OAAAD,IACAF,IACAE,GAGA,IADAX,EAAAU,GAAAD,EACAA,EAAAf,EAEAW,GAAA,MACO,IAAAM,EAAAhB,EAEPS,GAAA,MACO,IAAAD,EAAA,CACP,GAAAU,GAAAf,EAAAvO,EAAAiP,CACA,IAAAK,GAAA,GAAAA,EAAAd,GAAAE,EAAAY,KAAA,GAEA,GAAAC,GAAApB,EAAAO,EAAAY,EACA,IAAAJ,GAAAK,EAEA,MAAAC,GAAAjD,EAAAC,EAAA0C,EAAAE,KAOA,OAAAK,IAAA5f,EAAAkf,EAA+BU,GAAA5f,EAAAmf,EAAiBS,GAAA,GAChD,GACAF,GADAD,EAAAf,EAAAkB,CAGAF,GADAE,IAAA5f,GAAA4f,GAAA5f,GAAA6e,EAAAY,EAAA,GAAAZ,EAAAY,EAAA,GACAZ,EAAAY,EAAA,GAEAZ,EAAAY,EAAA,IAGA,KADA,GAAAI,GAAAH,EAAAE,EACAF,EAAApB,GAAAuB,EAAAtB,GACA7B,EAAA8C,OAAAlB,EAAAoB,EAAA,IACA/C,EAAA6C,OAAAjB,EAAAsB,EAAA,IACAH,IACAG,GAGA,IADAhB,EAAAY,GAAAC,EACAA,EAAApB,EAEAa,GAAA,MACO,IAAAU,EAAAtB,EAEPW,GAAA,MACO,KAAAH,EAAA,CACP,GAAAO,GAAAZ,EAAAvO,EAAAyP,CACA,IAAAN,GAAA,GAAAA,EAAAX,GAAAC,EAAAU,KAAA,GACA,GAAAD,GAAAT,EAAAU,GACAC,EAAAb,EAAAW,EAAAC,CAGA,IADAI,EAAApB,EAAAoB,EACAL,GAAAK,EAEA,MAAAC,GAAAjD,EAAAC,EAAA0C,EAAAE,MAQA,QAAA9B,EAAAf,IAAAc,EAAAb,IAaA,QAAAgD,GAAAjD,EAAAC,EAAAmC,EAAAgB,GACA,GAAAC,GAAArD,EAAAO,UAAA,EAAA6B,GACAkB,EAAArD,EAAAM,UAAA,EAAA6C,GACAG,EAAAvD,EAAAO,UAAA6B,GACAoB,EAAAvD,EAAAM,UAAA6C,GAGA1C,EAAAX,EAAAsD,EAAAC,GACAG,EAAA1D,EAAAwD,EAAAC,EAEA,OAAA9C,GAAAjqB,OAAAgtB,GAWA,QAAApD,GAAAL,EAAAC,GAEA,IAAAD,IAAAC,GAAAD,EAAA8C,OAAA,IAAA7C,EAAA6C,OAAA,GACA,QAQA,KAJA,GAAAY,GAAA,EACAC,EAAAva,KAAAC,IAAA2W,EAAAxb,OAAAyb,EAAAzb,QACAof,EAAAD,EACAE,EAAA,EACAH,EAAAE,GACA5D,EAAAO,UAAAsD,EAAAD,IACA3D,EAAAM,UAAAsD,EAAAD,IACAF,EAAAE,EACAC,EAAAH,GAEAC,EAAAC,EAEAA,EAAAxa,KAAA0T,OAAA6G,EAAAD,GAAA,EAAAA,EAEA,OAAAE,GAUA,QAAApD,GAAAR,EAAAC,GAEA,IAAAD,IAAAC,GACAD,EAAA8C,OAAA9C,EAAAxb,OAAA,IAAAyb,EAAA6C,OAAA7C,EAAAzb,OAAA,GACA,QAQA,KAJA,GAAAkf,GAAA,EACAC,EAAAva,KAAAC,IAAA2W,EAAAxb,OAAAyb,EAAAzb,QACAof,EAAAD,EACAG,EAAA,EACAJ,EAAAE,GACA5D,EAAAO,UAAAP,EAAAxb,OAAAof,EAAA5D,EAAAxb,OAAAsf,IACA7D,EAAAM,UAAAN,EAAAzb,OAAAof,EAAA3D,EAAAzb,OAAAsf,IACAJ,EAAAE,EACAE,EAAAJ,GAEAC,EAAAC,EAEAA,EAAAxa,KAAA0T,OAAA6G,EAAAD,GAAA,EAAAA,EAEA,OAAAE,GAcA,QAAAzC,GAAAnB,EAAAC,GAmBA,QAAA8D,GAAA/C,EAAAC,EAAAnrB,GAMA,IAJA,GAGAkuB,GAAAC,EAAAC,EAAAC,EAHAC,EAAApD,EAAAT,UAAAzqB,IAAAsT,KAAA0T,MAAAkE,EAAAxc,OAAA,IACA6f,GAAA,EACAC,EAAA,IAEAD,EAAApD,EAAA/W,QAAAka,EAAAC,EAAA,UACA,GAAAE,GAAAlE,EAAAW,EAAAT,UAAAzqB,GACAmrB,EAAAV,UAAA8D,IACAG,EAAAhE,EAAAQ,EAAAT,UAAA,EAAAzqB,GACAmrB,EAAAV,UAAA,EAAA8D,GACAC,GAAA9f,OAAAggB,EAAAD,IACAD,EAAArD,EAAAV,UAAA8D,EAAAG,EAAAH,GACApD,EAAAV,UAAA8D,IAAAE,GACAP,EAAAhD,EAAAT,UAAA,EAAAzqB,EAAA0uB,GACAP,EAAAjD,EAAAT,UAAAzqB,EAAAyuB,GACAL,EAAAjD,EAAAV,UAAA,EAAA8D,EAAAG,GACAL,EAAAlD,EAAAV,UAAA8D,EAAAE,IAGA,SAAAD,EAAA9f,QAAAwc,EAAAxc,QACAwf,EAAAC,EACAC,EAAAC,EAAAG,GAEA,KA1CA,GAAAtD,GAAAhB,EAAAxb,OAAAyb,EAAAzb,OAAAwb,EAAAC,EACAgB,EAAAjB,EAAAxb,OAAAyb,EAAAzb,OAAAyb,EAAAD,CACA,IAAAgB,EAAAxc,OAAA,KAAAyc,EAAAzc,OAAAwc,EAAAxc,OACA,WA4CA,IAKA0c,GALAuD,EAAAV,EAAA/C,EAAAC,EACA7X,KAAA2Y,KAAAf,EAAAxc,OAAA,IAEAkgB,EAAAX,EAAA/C,EAAAC,EACA7X,KAAA2Y,KAAAf,EAAAxc,OAAA,GAEA,KAAAigB,IAAAC,EACA,WAOAxD,GANGwD,EAEAD,GAIHA,EAAA,GAAAjgB,OAAAkgB,EAAA,GAAAlgB,OAAAigB,EAHAC,EAFAD,CASA,IAAArD,GAAAC,EAAAC,EAAAC,CACAvB,GAAAxb,OAAAyb,EAAAzb,QACA4c,EAAAF,EAAA,GACAG,EAAAH,EAAA,GACAI,EAAAJ,EAAA,GACAK,EAAAL,EAAA,KAEAI,EAAAJ,EAAA,GACAK,EAAAL,EAAA,GACAE,EAAAF,EAAA,GACAG,EAAAH,EAAA,GAEA,IAAAM,GAAAN,EAAA,EACA,QAAAE,EAAAC,EAAAC,EAAAC,EAAAC,GASA,QAAAZ,GAAAF,GACAA,EAAAtb,MAAA+a,EAAA,IAOA,KANA,GAKAC,GALAuE,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,GACAC,EAAA,GAEAJ,EAAAjE,EAAAlc,QACA,OAAAkc,EAAAiE,GAAA,IACA,IAAA7D,GACA+D,IACAE,GAAArE,EAAAiE,GAAA,GACAA,GACA,MACA,KAAA5D,GACA6D,IACAE,GAAApE,EAAAiE,GAAA,GACAA,GACA,MACA,KAAAxE,GAEAyE,EAAAC,EAAA,GACA,IAAAD,GAAA,IAAAC,IAEAzE,EAAAC,EAAA0E,EAAAD,GACA,IAAA1E,IACAuE,EAAAC,EAAAC,EAAA,GACAnE,EAAAiE,EAAAC,EAAAC,EAAA,OACA1E,EACAO,EAAAiE,EAAAC,EAAAC,EAAA,OACAE,EAAAxE,UAAA,EAAAH,IAEAM,EAAA3C,OAAA,KAAAoC,EACA4E,EAAAxE,UAAA,EAAAH,KACAuE,KAEAI,IAAAxE,UAAAH,GACA0E,IAAAvE,UAAAH,IAGAA,EAAAI,EAAAuE,EAAAD,GACA,IAAA1E,IACAM,EAAAiE,GAAA,GAAAI,EAAAxE,UAAAwE,EAAAvgB,OACA4b,GAAAM,EAAAiE,GAAA,GACAI,IAAAxE,UAAA,EAAAwE,EAAAvgB,OACA4b,GACA0E,IAAAvE,UAAA,EAAAuE,EAAAtgB,OACA4b,KAIA,IAAAwE,EACAlE,EAAA3C,OAAA4G,EAAAE,EACAD,EAAAC,GAAA/D,EAAAiE,IACW,IAAAF,EACXnE,EAAA3C,OAAA4G,EAAAC,EACAA,EAAAC,GAAA9D,EAAA+D,IAEApE,EAAA3C,OAAA4G,EAAAC,EAAAC,EACAD,EAAAC,GAAA9D,EAAA+D,IACAhE,EAAAiE,IAEAJ,IAAAC,EAAAC,GACAD,EAAA,MAAAC,EAAA,QACS,IAAAF,GAAAjE,EAAAiE,EAAA,OAAAxE,GAETO,EAAAiE,EAAA,OAAAjE,EAAAiE,GAAA,GACAjE,EAAA3C,OAAA4G,EAAA,IAEAA,IAEAE,EAAA,EACAD,EAAA,EACAE,EAAA,GACAC,EAAA,GAIA,KAAArE,IAAAlc,OAAA,OACAkc,EAAArC,KAMA,IAAA2G,IAAA,CAGA,KAFAL,EAAA,EAEAA,EAAAjE,EAAAlc,OAAA,GACAkc,EAAAiE,EAAA,OAAAxE,GACAO,EAAAiE,EAAA,OAAAxE,IAEAO,EAAAiE,GAAA,GAAApE,UAAAG,EAAAiE,GAAA,GAAAngB,OACAkc,EAAAiE,EAAA,MAAAngB,SAAAkc,EAAAiE,EAAA,OAEAjE,EAAAiE,GAAA,GAAAjE,EAAAiE,EAAA,MACAjE,EAAAiE,GAAA,GAAApE,UAAA,EAAAG,EAAAiE,GAAA,GAAAngB,OACAkc,EAAAiE,EAAA,MAAAngB,QACAkc,EAAAiE,EAAA,MAAAjE,EAAAiE,EAAA,MAAAjE,EAAAiE,EAAA,MACAjE,EAAA3C,OAAA4G,EAAA,KACAK,GAAA,GACOtE,EAAAiE,GAAA,GAAApE,UAAA,EAAAG,EAAAiE,EAAA,MAAAngB,SACPkc,EAAAiE,EAAA,QAEAjE,EAAAiE,EAAA,OAAAjE,EAAAiE,EAAA,MACAjE,EAAAiE,GAAA,GACAjE,EAAAiE,GAAA,GAAApE,UAAAG,EAAAiE,EAAA,MAAAngB,QACAkc,EAAAiE,EAAA,MACAjE,EAAA3C,OAAA4G,EAAA,KACAK,GAAA,IAGAL,GAGAK,IACApE,EAAAF,GAwBA,QAAAuE,GAAAvE,EAAAR,GACA,OAAAA,EACA,OAAAC,EAAAO,EAEA,QAAAwE,GAAA,EAAApvB,EAAA,EAAkCA,EAAA4qB,EAAAlc,OAAkB1O,IAAA,CACpD,GAAAwN,GAAAod,EAAA5qB,EACA,IAAAwN,EAAA,KAAAyd,GAAAzd,EAAA,KAAA6c,EAAA,CACA,GAAAgF,GAAAD,EAAA5hB,EAAA,GAAAkB,MACA,IAAA0b,IAAAiF,EACA,OAAArvB,EAAA,EAAA4qB,EACO,IAAAR,EAAAiF,EAAA,CAEPzE,IAAAtqB,OAEA,IAAAgvB,GAAAlF,EAAAgF,EACAG,GAAA/hB,EAAA,GAAAA,EAAA,GAAAlN,MAAA,EAAAgvB,IACAE,GAAAhiB,EAAA,GAAAA,EAAA,GAAAlN,MAAAgvB,GAEA,OADA1E,GAAA3C,OAAAjoB,EAAA,EAAAuvB,EAAAC,IACAxvB,EAAA,EAAA4qB,GAEAwE,EAAAC,GAIA,SAAArY,OAAA,gCAqBA,QAAA+T,GAAAH,EAAAR,GACA,GAAAqF,GAAAN,EAAAvE,EAAAR,GACAsF,EAAAD,EAAA,GACAE,EAAAF,EAAA,GACAjiB,EAAAkiB,EAAAC,GACAC,EAAAF,EAAAC,EAAA,EAEA,UAAAniB,EAGA,MAAAod,EACG,IAAApd,EAAA,KAAA6c,EAGH,MAAAO,EAEA,UAAAgF,GAAApiB,EAAA,GAAAoiB,EAAA,KAAAA,EAAA,GAAApiB,EAAA,GAIA,MADAkiB,GAAAzH,OAAA0H,EAAA,EAAAC,EAAApiB,GACAqiB,EAAAH,EAAAC,EAAA,EACK,UAAAC,GAAA,IAAAA,EAAA,GAAAxb,QAAA5G,EAAA,KAKLkiB,EAAAzH,OAAA0H,EAAA,GAAAC,EAAA,GAAApiB,EAAA,OAAAA,EAAA,IACA,IAAAsiB,GAAAF,EAAA,GAAAtvB,MAAAkN,EAAA,GAAAkB,OAIA,OAHAohB,GAAAphB,OAAA,GACAghB,EAAAzH,OAAA0H,EAAA,KAAAC,EAAA,GAAAE,IAEAD,EAAAH,EAAAC,EAAA,GAGA,MAAA/E,GAeA,QAAAiF,GAAAjF,EAAAlM,EAAAhQ,GAEA,OAAA1O,GAAA0e,EAAAhQ,EAAA,EAAkC1O,GAAA,GAAAA,GAAA0e,EAAA,EAA0B1e,IAC5D,GAAAA,EAAA,EAAA4qB,EAAAlc,OAAA,CACA,GAAAqhB,GAAAnF,EAAA5qB,GACAgwB,EAAApF,EAAA5qB,EAAA,EACA+vB,GAAA,KAAAC,EAAA,IACApF,EAAA3C,OAAAjoB,EAAA,GAAA+vB,EAAA,GAAAA,EAAA,GAAAC,EAAA,KAIA,MAAApF,GAzpBA,GAAAK,IAAA,EACAD,EAAA,EACAX,EAAA,EA2hBA9C,EAAA0C,CACA1C,GAAAgC,OAAAyB,EACAzD,EAAAiC,OAAAyB,EACA1D,EAAAkC,MAAAY,EAEAnrB,EAAAD,QAAAsoB,IvB48FC,IAAK,GAAI,IAEJ,SAASroB,EAAQD,GwB3gHvB,QAAAgxB,GAAApvB,GACA,GAAA+W,KACA,QAAAQ,KAAAvX,GAAA+W,EAAAtI,KAAA8I,EACA,OAAAR,GAPA3Y,EAAAC,EAAAD,QAAA,kBAAAgB,QAAA2X,KACA3X,OAAA2X,KAAAqY,EAEAhxB,EAAAgxB,QxB2hHM,SAAS/wB,EAAQD,GyBvhHvB,QAAAixB,GAAAC,GACA,4BAAAlwB,OAAAC,UAAAgU,SAAAtU,KAAAuwB,GAIA,QAAAC,GAAAD,GACA,MAAAA,IACA,gBAAAA,IACA,gBAAAA,GAAAzhB,QACAzO,OAAAC,UAAAC,eAAAP,KAAAuwB,EAAA,YACAlwB,OAAAC,UAAAmwB,qBAAAzwB,KAAAuwB,EAAA,YACA,EAlBA,GAAAG,GAEC,sBAFD,WACA,MAAArwB,QAAAC,UAAAgU,SAAAtU,KAAAmO,aAGA9O,GAAAC,EAAAD,QAAAqxB,EAAAJ,EAAAE,EAEAnxB,EAAAixB,YAKAjxB,EAAAmxB,ezB6iHM,SAASlxB,EAAQD,G0BxjHvB,YAEA,IAAAsxB,GAAAtwB,OAAAC,UAAAC,eACAqwB,EAAAvwB,OAAAC,UAAAgU,SAEAH,EAAA,SAAAgF,GACA,wBAAAjF,OAAAC,QACAD,MAAAC,QAAAgF,GAGA,mBAAAyX,EAAA5wB,KAAAmZ,IAGA0X,EAAA,SAAA5vB,GACA,IAAAA,GAAA,oBAAA2vB,EAAA5wB,KAAAiB,GACA,QAGA,IAAA6vB,GAAAH,EAAA3wB,KAAAiB,EAAA,eACA8vB,EAAA9vB,EAAA6M,aAAA7M,EAAA6M,YAAAxN,WAAAqwB,EAAA3wB,KAAAiB,EAAA6M,YAAAxN,UAAA,gBAEA,IAAAW,EAAA6M,cAAAgjB,IAAAC,EACA,QAKA,IAAAvY,EACA,KAAAA,IAAAvX,IAEA,yBAAAuX,IAAAmY,EAAA3wB,KAAAiB,EAAAuX,GAGAlZ,GAAAD,QAAA,QAAAwoB,KACA,GAAAhQ,GAAAhI,EAAAmhB,EAAAtZ,EAAAuZ,EAAA1f,EACAL,EAAA/C,UAAA,GACA/N,EAAA,EACA0O,EAAAX,UAAAW,OACAoiB,GAAA,CAYA,KATA,iBAAAhgB,IACAggB,EAAAhgB,EACAA,EAAA/C,UAAA,OAEA/N,EAAA,IACE,gBAAA8Q,IAAA,kBAAAA,IAAA,MAAAA,KACFA,MAGO9Q,EAAA0O,IAAY1O,EAGnB,GAFAyX,EAAA1J,UAAA/N,GAEA,MAAAyX,EAEA,IAAAhI,IAAAgI,GACAmZ,EAAA9f,EAAArB,GACA6H,EAAAG,EAAAhI,GAGAqB,IAAAwG,IAEAwZ,GAAAxZ,IAAAmZ,EAAAnZ,KAAAuZ,EAAA9c,EAAAuD,MACAuZ,GACAA,GAAA,EACA1f,EAAAyf,GAAA7c,EAAA6c,SAEAzf,EAAAyf,GAAAH,EAAAG,QAIA9f,EAAArB,GAAAgY,EAAAqJ,EAAA3f,EAAAmG,IAGM,mBAAAA,KACNxG,EAAArB,GAAA6H,GAQA,OAAAxG,K1BikHM,SAAS5R,EAAQD,EAASM,G2BllHhC,QAAAwxB,GAAArL,GACArmB,KAAAqmB,MACArmB,KAAAoP,MAAA,EACApP,KAAAwP,OAAA,EArEA,GAAA2Y,GAAAjoB,EAAA,IACAkoB,EAAAloB,EAAA,IAGAyxB,GACAnb,YACAgQ,QAAA,SAAArlB,EAAAC,EAAAwwB,GACA,gBAAAzwB,WACA,gBAAAC,UACA,IAAAoV,GAAA4R,GAAA,KAAsChnB,EACtCwwB,KACApb,EAAA5V,OAAA2X,KAAA/B,GAAA3F,OAAA,SAAAoH,EAAAc,GAIA,MAHA,OAAAvC,EAAAuC,KACAd,EAAAc,GAAAvC,EAAAuC,IAEAd,OAGA,QAAAc,KAAA5X,GACA+R,SAAA/R,EAAA4X,IAAA7F,SAAA9R,EAAA2X,KACAvC,EAAAuC,GAAA5X,EAAA4X,GAGA,OAAAnY,QAAA2X,KAAA/B,GAAAnH,OAAA,EAAAmH,EAAAtD,QAGAgV,KAAA,SAAA/mB,EAAAC,GACA,gBAAAD,WACA,gBAAAC,UACA,IAAAoV,GAAA5V,OAAA2X,KAAApX,GAAAG,OAAAV,OAAA2X,KAAAnX,IAAAyP,OAAA,SAAA2F,EAAAuC,GAIA,MAHAoP,GAAAhnB,EAAA4X,GAAA3X,EAAA2X,MACAvC,EAAAuC,GAAA7F,SAAA9R,EAAA2X,GAAA,KAAA3X,EAAA2X,IAEAvC,MAEA,OAAA5V,QAAA2X,KAAA/B,GAAAnH,OAAA,EAAAmH,EAAAtD,QAGAuX,UAAA,SAAAtpB,EAAAC,EAAAspB,GACA,mBAAAvpB,GAAA,MAAAC,EACA,oBAAAA,GAAA,CACA,IAAAspB,EAAA,MAAAtpB,EACA,IAAAoV,GAAA5V,OAAA2X,KAAAnX,GAAAyP,OAAA,SAAA2F,EAAAuC,GAEA,MADA7F,UAAA/R,EAAA4X,KAAAvC,EAAAuC,GAAA3X,EAAA2X,IACAvC,MAEA,OAAA5V,QAAA2X,KAAA/B,GAAAnH,OAAA,EAAAmH,EAAAtD,UAIAM,SAAA,SAAA6S,GACA,UAAAqL,GAAArL,IAGAhX,OAAA,SAAAgZ,GACA,sBAAAA,GAAA,OACAA,EAAA,OACK,gBAAAA,GAAAK,OACLL,EAAAK,OAEA,gBAAAL,GAAA/B,OAAA+B,EAAA/B,OAAAjX,OAAA,GAYAqiB,GAAA7wB,UAAAwoB,QAAA,WACA,MAAArpB,MAAA0pB,aAAAP,KAGAuI,EAAA7wB,UAAA+Q,KAAA,SAAAvC,GACAA,MAAA8Z,IACA,IAAAG,GAAAtpB,KAAAqmB,IAAArmB,KAAAoP,MACA,IAAAka,EAAA,CACA,GAAA9Z,GAAAxP,KAAAwP,OACAya,EAAA0H,EAAAtiB,OAAAia,EAQA,IAPAja,GAAA4a,EAAAza,GACAH,EAAA4a,EAAAza,EACAxP,KAAAoP,OAAA,EACApP,KAAAwP,OAAA,GAEAxP,KAAAwP,QAAAH,EAEA,gBAAAia,GAAA,OACA,OAAc/C,OAAAlX,EAEd,IAAAwiB,KAYA,OAXAvI,GAAA9S,aACAqb,EAAArb,WAAA8S,EAAA9S,YAEA,gBAAA8S,GAAAZ,OACAmJ,EAAAnJ,OAAArZ,EACO,gBAAAia,GAAAhD,OACPuL,EAAAvL,OAAAgD,EAAAhD,OAAAiB,OAAA/X,EAAAH,GAGAwiB,EAAAvL,OAAAgD,EAAAhD,OAEAuL,EAGA,OAAYnJ,OAAAS,MAIZuI,EAAA7wB,UAAA2pB,KAAA,WACA,MAAAxqB,MAAAqmB,IAAArmB,KAAAoP,QAGAsiB,EAAA7wB,UAAA6oB,WAAA,WACA,MAAA1pB,MAAAqmB,IAAArmB,KAAAoP,OAEAuiB,EAAAtiB,OAAArP,KAAAqmB,IAAArmB,KAAAoP,QAAApP,KAAAwP,OAEA2Z,KAIAuI,EAAA7wB,UAAA4oB,SAAA,WACA,MAAAzpB,MAAAqmB,IAAArmB,KAAAoP,OACA,gBAAApP,MAAAqmB,IAAArmB,KAAAoP,OAAA,OACA,SACK,gBAAApP,MAAAqmB,IAAArmB,KAAAoP,OAAAsZ,OACL,SAEA,SAGA,UAIA7oB,EAAAD,QAAA+xB,G3B2pHM,SAAS9xB,EAAQD,EAASM,GAE/B,YAgDA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASqa,GAAgBra,EAAKuX,EAAK3L,GAAiK,MAApJ2L,KAAOvX,GAAOZ,OAAOuM,eAAe3L,EAAKuX,GAAO3L,MAAOA,EAAOkH,YAAY,EAAMC,cAAc,EAAMuH,UAAU,IAAkBta,EAAIuX,GAAO3L,EAAgB5L,EAE3M,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qC4BjoHjH,QAAS4V,GAAeja,EAASka,GAC/B,MAAOnxB,QAAO2X,KAAKwZ,GAAUlhB,OAAO,SAASmhB,EAAQ5hB,GACnD,MAAqB,OAAjByH,EAAQzH,GAAsB4hB,GAC9BD,EAAS3hB,KAAUyH,EAAQzH,GAC7B4hB,EAAO5hB,GAAQ2hB,EAAS3hB,GACfqE,MAAMC,QAAQqd,EAAS3hB,IAC5B2hB,EAAS3hB,GAAM2E,QAAQ8C,EAAQzH,IAAS,IAC1C4hB,EAAO5hB,GAAQ2hB,EAAS3hB,GAAM9O,QAAQuW,EAAQzH,MAGhD4hB,EAAO5hB,IAAS2hB,EAAS3hB,GAAOyH,EAAQzH,IAEnC4hB,QAIX,QAASC,GAAe3T,GACtB,MAAOA,GAAMzN,OAAO,SAASyN,EAAO+J,GAClC,GAAkB,IAAdA,EAAG/B,OAAc,CACnB,GAAI9P,IAAa,EAAA0b,EAAAxwB,SAAM2mB,EAAG7R,WAE1B,cADOA,GAAA,MACA8H,EAAMgI,QAAS6L,MAAO9J,EAAG7R,WAAW2b,OAAS3b,GAWtD,GATqB,MAAjB6R,EAAG7R,YAAuB6R,EAAG7R,WAAWsR,QAAS,GAAQO,EAAG7R,WAAW4b,UAAW,IACpF/J,GAAK,EAAA6J,EAAAxwB,SAAM2mB,GACPA,EAAG7R,WAAWsR,KAChBO,EAAG7R,WAAWsR,KAAO,WAErBO,EAAG7R,WAAWsR,KAAO,eACdO,GAAG7R,WAAW4b,SAGA,gBAAd/J,GAAG/B,OAAqB,CACjC,GAAI7K,GAAO4M,EAAG/B,OAAO9U,QAAQ,QAAS,MAAMA,QAAQ,MAAO,KAC3D,OAAO8M,GAAMgI,OAAO7K,EAAM4M,EAAG7R,YAE/B,MAAO8H,GAAMrO,KAAKoY,IACjB,GAAApK,GAAAvc,S5B0iHJd,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAI+R,GAA4B,kBAAXc,SAAoD,gBAApBA,QAAOzM,SAAwB,SAAUhS,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXye,SAAyBze,EAAI6M,cAAgB4R,QAAUze,IAAQye,OAAOpf,UAAY,eAAkBW,IAElQme,EAAiB,WAAc,QAASO,GAAcxG,EAAK/Y,GAAK,GAAIwf,MAAeC,GAAK,EAAUC,GAAK,EAAWC,EAAKpN,MAAW,KAAM,IAAK,GAAiCqN,GAA7BlN,EAAKqG,EAAIuG,OAAOzM,cAAmB4M,GAAMG,EAAKlN,EAAGzB,QAAQ4O,QAAoBL,EAAKlQ,KAAKsQ,EAAGnT,QAAYzM,GAAKwf,EAAK9Q,SAAW1O,GAA3Dyf,GAAK,IAAoE,MAAOnR,GAAOoR,GAAK,EAAMC,EAAKrR,EAAO,QAAU,KAAWmR,GAAM/M,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIgN,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUzG,EAAK/Y,GAAK,GAAI8T,MAAMC,QAAQgF,GAAQ,MAAOA,EAAY,IAAIuG,OAAOzM,WAAY5S,QAAO8Y,GAAQ,MAAOwG,GAAcxG,EAAK/Y,EAAa,MAAM,IAAIub,WAAU,4DAEllBuE,EAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,M4BjzHjiB8E,EAAA7gB,EAAA,I5BqzHK+d,EAAe1c,EAAuBwf,G4BpzH3CsR,EAAAnyB,EAAA,I5BwzHKoyB,EAAO/wB,EAAuB8wB,G4BvzHnCxpB,EAAA3I,EAAA,G5B2zHK4I,EAAcvH,EAAuBsH,G4B1zH1CnF,EAAAxD,EAAA,I5B8zHKyD,EAASpC,EAAuBmC,G4B7zHrC6F,EAAArJ,EAAA,I5Bi0HKsJ,EAAWjI,EAAuBgI,G4Bh0HvCN,EAAA/I,EAAA,I5Bo0HKgJ,EAAU3H,EAAuB0H,G4Bn0HtCspB,EAAAryB,EAAA,I5Bu0HKgyB,EAAU3wB,EAAuBgxB,G4Bt0HtCC,EAAAtyB,EAAA,I5B00HKuyB,EAAclxB,EAAuBixB,G4Bz0H1ClR,EAAAphB,EAAA,I5B60HKoc,EAAW/a,EAAuB+f,G4B10HjCoR,E5Bk1HQ,W4Bj1HZ,QAAAA,GAAY5Q,GAAQ/F,EAAA/b,KAAA0yB,GAClB1yB,KAAK8hB,OAASA,EACd9hB,KAAKse,MAAQte,KAAK2yB,W5BmlInB,MA5PAlS,GAAaiS,IACX3Z,IAAK,aACL3L,MAAO,S4Bt1HCkR,GAAO,GAAAzP,GAAA7O,KACZ4yB,GAAqB,CACzB5yB,MAAK8hB,OAAO7P,QACZ,IAAI4gB,GAAe7yB,KAAK8hB,OAAOzS,QA6C/B,OA5CArP,MAAK8hB,OAAOgR,OAAQ,EACpBxU,EAAQ2T,EAAe3T,GACvBA,EAAMzN,OAAO,SAACzB,EAAOiZ,GACnB,GAAIhZ,GAASgZ,EAAGK,QAAUL,EAAG9B,QAAU8B,EAAG/B,OAAOjX,QAAU,EACvDmH,EAAa6R,EAAG7R,cACpB,IAAiB,MAAb6R,EAAG/B,OAAgB,CACrB,GAAyB,gBAAd+B,GAAG/B,OAAqB,CACjC,GAAI7K,GAAO4M,EAAG/B,MACV7K,GAAK+L,SAAS,OAASoL,IACzBA,GAAqB,EACrBnX,EAAOA,EAAKxa,MAAM,GAAG,IAEnBmO,GAASyjB,IAAiBpX,EAAK+L,SAAS,QAC1CoL,GAAqB,GAEvB/jB,EAAKiT,OAAOzR,SAASjB,EAAOqM,EATK,IAAAsX,GAUZlkB,EAAKiT,OAAOyI,KAAKnb,GAVL4jB,EAAArT,EAAAoT,EAAA,GAU5BxI,EAV4ByI,EAAA,GAUtBxjB,EAVsBwjB,EAAA,GAW7Bnb,GAAU,EAAAyE,EAAA5a,aAAW,EAAAuH,EAAAgqB,eAAc1I,GACvC,IAAIA,uBAAuB,IAAA2I,GACV3I,EAAK9a,WAAW3G,EAAApH,QAAU8K,KAAMgD,GADtB2jB,EAAAxT,EAAAuT,EAAA,GACpBE,EADoBD,EAAA,EAEzBtb,IAAU,EAAAyE,EAAA5a,SAAOmW,GAAS,EAAA5O,EAAAgqB,eAAcG,IAE1C5c,EAAa8b,EAAA5wB,QAAQ8U,WAAW0R,KAAKrQ,EAASrB,WACzC,IAAyB,WAArB2I,EAAOkJ,EAAG/B,QAAqB,CACxC,GAAIvN,GAAMnY,OAAO2X,KAAK8P,EAAG/B,QAAQ,EACjC,IAAW,MAAPvN,EAAa,MAAO3J,EACxBP,GAAKiT,OAAOzR,SAASjB,EAAO2J,EAAKsP,EAAG/B,OAAOvN,IAE7C8Z,GAAgBxjB,EAKlB,MAHAzO,QAAO2X,KAAK/B,GAAY7I,QAAQ,SAACyC,GAC/BvB,EAAKiT,OAAO3R,SAASf,EAAOC,EAAQe,EAAMoG,EAAWpG,MAEhDhB,EAAQC,GACd,GACHiP,EAAMzN,OAAO,SAACzB,EAAOiZ,GACnB,MAAyB,gBAAdA,GAAG9B,QACZ1X,EAAKiT,OAAO3S,SAASC,EAAOiZ,EAAG9B,QACxBnX,GAEFA,GAASiZ,EAAGK,QAAUL,EAAG/B,OAAOjX,QAAU,IAChD,GACHrP,KAAK8hB,OAAOgR,OAAQ,EACpB9yB,KAAK8hB,OAAO5Q,WACLlR,KAAKiS,OAAOqM,M5Bm2HlBvF,IAAK,aACL3L,MAAO,S4Bj2HCgC,EAAOC,GAEhB,MADArP,MAAK8hB,OAAO3S,SAASC,EAAOC,GACrBrP,KAAKiS,QAAO,GAAAgM,GAAAvc,SAAYgnB,OAAOtZ,GAAOmX,OAAOlX,O5Bo2HnD0J,IAAK,aACL3L,MAAO,S4Bl2HCgC,EAAOC,GAAsB,GAAAqS,GAAA1hB,KAAd6X,EAAcnJ,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,KAkBtC,OAjBA1O,MAAK8hB,OAAO7P,SACZrR,OAAO2X,KAAKV,GAASlK,QAAQ,SAACgI,GAC5B,GAAI0d,GAAQ3R,EAAKI,OAAOuR,MAAMjkB,EAAO6E,KAAK4L,IAAIxQ,EAAQ,IAClDikB,EAAkBjkB,CACtBgkB,GAAM1lB,QAAQ,SAAC4c,GACb,GAAIgJ,GAAahJ,EAAKlb,QACtB,IAAMkb,uBAEC,CACL,GAAIiJ,GAAYpkB,EAAQmb,EAAK/a,OAAOkS,EAAKI,QACrC2R,EAAalJ,EAAKmJ,aAAaF,EAAYF,GAAmBE,EAAY,CAC9EjJ,GAAKpa,SAASqjB,EAAWC,EAAY9d,EAAQkC,EAAQlC,QAJrD4U,GAAK5U,OAAOA,EAAQkC,EAAQlC,GAM9B2d,IAAmBC,MAGvBvzB,KAAK8hB,OAAO5Q,WACLlR,KAAKiS,QAAO,GAAAgM,GAAAvc,SAAYgnB,OAAOtZ,GAAOsZ,OAAOrZ,GAAQ,EAAA6iB,EAAAxwB,SAAMmW,Q5By2HjEkB,IAAK,aACL3L,MAAO,S4Bv2HCgC,EAAOC,GAAsB,GAAAgU,GAAArjB,KAAd6X,EAAcnJ,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,KAItC,OAHA9N,QAAO2X,KAAKV,GAASlK,QAAQ,SAACgI,GAC5B0N,EAAKvB,OAAO3R,SAASf,EAAOC,EAAQsG,EAAQkC,EAAQlC,MAE/C3V,KAAKiS,QAAO,GAAAgM,GAAAvc,SAAYgnB,OAAOtZ,GAAOsZ,OAAOrZ,GAAQ,EAAA6iB,EAAAxwB,SAAMmW,Q5B82HjEkB,IAAK,cACL3L,MAAO,S4B52HEgC,EAAOC,GACjB,MAAOrP,MAAKse,MAAMrd,MAAMmO,EAAOA,EAAQC,M5B+2HtC0J,IAAK,WACL3L,MAAO,W4B52HR,MAAOpN,MAAK8hB,OAAOuR,QAAQxiB,OAAO,SAACyN,EAAOiM,GACxC,MAAOjM,GAAMhd,OAAOipB,EAAKjM,UACxB,GAAAL,GAAAvc,Y5Bg3HFqX,IAAK,YACL3L,MAAO,S4B92HAgC,GAAmB,GAAZC,GAAYX,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAH,EACpB2kB,KAAYM,IACD,KAAXtkB,EACFrP,KAAK8hB,OAAO1Q,KAAKhC,GAAOzB,QAAQ,SAASyD,GAAM,GAAAwiB,GAAAjU,EAC9BvO,EAD8B,GACxC7D,EADwCqmB,EAAA,EAEzCrmB,wBACF8lB,EAAMpjB,KAAK1C,GACFA,YAAgBzE,GAAApH,QAAU8K,MACnCmnB,EAAO1jB,KAAK1C,MAIhB8lB,EAAQrzB,KAAK8hB,OAAOuR,MAAMjkB,EAAOC,GACjCskB,EAAS3zB,KAAK8hB,OAAOjS,YAAY/G,EAAApH,QAAU8K,KAAM4C,EAAOC,GAE1D,IAAIwkB,IAAcR,EAAOM,GAAQxf,IAAI,SAAS2f,GAC5C,GAAqB,IAAjBA,EAAMzkB,OAAc,QAExB,KADA,GAAIwI,IAAU,EAAA5O,EAAAgqB,eAAca,EAAMnW,SAC3B/c,OAAO2X,KAAKV,GAASxI,OAAS,GAAG,CACtC,GAAI9B,GAAOumB,EAAMnW,OACjB,IAAY,MAARpQ,EAAc,MAAOsK,EACzBA,GAAUia,GAAe,EAAA7oB,EAAAgqB,eAAc1lB,GAAOsK,GAEhD,MAAOA,IAET,OAAOyE,GAAA5a,QAAOL,MAAPib,EAAA5a,QAAqBmyB,M5Bs3H3B9a,IAAK,UACL3L,MAAO,S4Bp3HFgC,EAAOC,GACb,MAAOrP,MAAK2kB,YAAYvV,EAAOC,GAAQuD,OAAO,SAASyV,GACrD,MAA4B,gBAAdA,GAAG/B,SAChBnS,IAAI,SAASkU,GACd,MAAOA,GAAG/B,SACTpN,KAAK,O5Bu3HPH,IAAK,cACL3L,MAAO,S4Br3HEgC,EAAO8V,EAAO9X,GAExB,MADApN,MAAK8hB,OAAOzR,SAASjB,EAAO8V,EAAO9X,GAC5BpN,KAAKiS,QAAO,GAAAgM,GAAAvc,SAAYgnB,OAAOtZ,GAAOkX,OAA1BzK,KAAoCqJ,EAAQ9X,Q5Bw3H9D2L,IAAK,aACL3L,MAAO,S4Bt3HCgC,EAAOqM,GAAoB,GAAAqI,GAAA9jB,KAAd6X,EAAcnJ,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,KAMpC,OALA+M,GAAOA,EAAKjK,QAAQ,QAAS,MAAMA,QAAQ,MAAO,MAClDxR,KAAK8hB,OAAOzR,SAASjB,EAAOqM,GAC5B7a,OAAO2X,KAAKV,GAASlK,QAAQ,SAACgI,GAC5BmO,EAAKhC,OAAO3R,SAASf,EAAOqM,EAAKpM,OAAQsG,EAAQkC,EAAQlC,MAEpD3V,KAAKiS,QAAO,GAAAgM,GAAAvc,SAAYgnB,OAAOtZ,GAAOkX,OAAO7K,GAAM,EAAAyW,EAAAxwB,SAAMmW,Q5B63H/DkB,IAAK,UACL3L,MAAO,W4B13HR,GAAmC,GAA/BpN,KAAK8hB,OAAOhT,SAASO,OAAa,OAAO,CAC7C,IAAIrP,KAAK8hB,OAAOhT,SAASO,OAAS,EAAG,OAAO,CAC5C,IAAIzB,GAAQ5N,KAAK8hB,OAAOhT,SAASE,IACjC,OAAOpB,GAAMyB,UAAY,GAA4C,GAAvCzO,OAAO2X,KAAK3K,EAAMiK,WAAWxI,U5B83H1D0J,IAAK,eACL3L,MAAO,S4B53HGgC,EAAOC,GAClB,GAAIoM,GAAOzb,KAAKglB,QAAQ5V,EAAOC,GADL0kB,EAEL/zB,KAAK8hB,OAAOyI,KAAKnb,EAAQC,GAFpB2kB,EAAArU,EAAAoU,EAAA,GAErBxJ,EAFqByJ,EAAA,GAEfxkB,EAFewkB,EAAA,GAGtB3E,EAAe,EAAGoB,EAAS,GAAAxS,GAAAvc,OACnB,OAAR6oB,IAIA8E,EAHI9E,uBAGWA,EAAKmJ,aAAalkB,GAAUA,EAAS,EAFrC+a,EAAKlb,SAAWG,EAIjCihB,EAASlG,EAAKjM,QAAQrd,MAAMuO,EAAQA,EAAS6f,EAAe,GAAG/I,OAAO,MAExE,IAAI/D,GAAWviB,KAAK2kB,YAAYvV,EAAOC,EAASggB,GAC5CnH,EAAO3F,EAAS2F,MAAK,GAAAjK,GAAAvc,SAAY4kB,OAAO7K,GAAMna,OAAOmvB,IACrDnS,GAAQ,GAAAL,GAAAvc,SAAYgnB,OAAOtZ,GAAO9N,OAAO4mB,EAC7C,OAAOloB,MAAKmmB,WAAW7H,M5Bq4HtBvF,IAAK,SACL3L,MAAO,S4Bn4HHmR,GAAiD,GAAA0F,GAAAjkB,KAAzCkS,EAAyCxD,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,MAAzBulB,EAAyBvlB,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAXwE,OACvCkL,EAAWpe,KAAKse,KA0BpB,OAzByB,KAArBpM,EAAU7C,QACY,kBAAtB6C,EAAU,GAAGI,MACbxJ,EAAApH,QAAU0K,KAAK8F,EAAU,GAAGT,SAAS,WAEvC,GAAIyiB,GAAWprB,EAAApH,QAAU0K,KAAK8F,EAAU,GAAGT,QACvCoG,GAAU,EAAA5O,EAAAgqB,eAAciB,GACxB9kB,EAAQ8kB,EAAS1kB,OAAOyU,EAAKnC,QAC7BqS,EAAWjiB,EAAU,GAAGiiB,SAAS3iB,QAAQhI,EAAA9H,QAAW0yB,SAAU,IAC9DC,GAAU,GAAApW,GAAAvc,SAAY4kB,OAAO6N,GAC7BG,GAAU,GAAArW,GAAAvc,SAAY4kB,OAAO4N,EAAS9mB,SACtCmnB,GAAY,GAAAtW,GAAAvc,SAAYgnB,OAAOtZ,GAAO9N,OAAO+yB,EAAQnM,KAAKoM,EAASL,GACvE1V,GAASgW,EAAU1jB,OAAO,SAASyN,EAAO+J,GACxC,MAAIA,GAAG/B,OACEhI,EAAMgI,OAAO+B,EAAG/B,OAAQzO,GAExByG,EAAMrO,KAAKoY,IAEnB,GAAApK,GAAAvc,SACHuiB,EAAK3F,MAAQF,EAASoI,QAAQjI,OAE9Bve,KAAKse,MAAQte,KAAK2yB,WACbpU,IAAW,EAAAkU,EAAA/wB,SAAM0c,EAASoI,QAAQjI,GAASve,KAAKse,SACnDC,EAASH,EAAS8J,KAAKloB,KAAKse,MAAO2V,KAGhC1V,M5B44HDmU,IA2CT9yB,GAAQ8B,Q4Bz4HMgxB,G5B64HT,SAAS7yB,EAAQD,EAASM,GAE/B,YAiCA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GArCjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQ8B,QAAU9B,EAAQ6H,KAAOyL,MAEjC,IAAIyM,GAAiB,WAAc,QAASO,GAAcxG,EAAK/Y,GAAK,GAAIwf,MAAeC,GAAK,EAAUC,GAAK,EAAWC,EAAKpN,MAAW,KAAM,IAAK,GAAiCqN,GAA7BlN,EAAKqG,EAAIuG,OAAOzM,cAAmB4M,GAAMG,EAAKlN,EAAGzB,QAAQ4O,QAAoBL,EAAKlQ,KAAKsQ,EAAGnT,QAAYzM,GAAKwf,EAAK9Q,SAAW1O,GAA3Dyf,GAAK,IAAoE,MAAOnR,GAAOoR,GAAK,EAAMC,EAAKrR,EAAO,QAAU,KAAWmR,GAAM/M,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIgN,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUzG,EAAK/Y,GAAK,GAAI8T,MAAMC,QAAQgF,GAAQ,MAAOA,EAAY,IAAIuG,OAAOzM,WAAY5S,QAAO8Y,GAAQ,MAAOwG,GAAcxG,EAAK/Y,EAAa,MAAM,IAAIub,WAAU,4DAEllBuE,EAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,I6B7pI7dnU,EAAA7gB,EAAA,I7BiqIK+d,EAAe1c,EAAuBwf,G6BhqI3ClY,EAAA3I,EAAA,G7BoqIK4I,EAAcvH,EAAuBsH,G6BnqI1CI,EAAA/I,EAAA,I7BuqIKgJ,EAAU3H,EAAuB0H,G6BtqItCU,EAAAzJ,EAAA,I7B0qIK0J,EAAWrI,EAAuBoI,G6BzqIvCI,EAAA7J,EAAA,I7B6qIK8J,EAASzI,EAAuBwI,G6B1qI/BtC,E7BorIM,SAAU+tB,GAGnB,QAAS/tB,KAGP,MAFAsU,GAAgB/b,KAAMyH,GAEf+sB,EAA2Bx0B,MAAOyH,EAAKstB,WAAan0B,OAAO00B,eAAe7tB,IAAOpG,MAAMrB,KAAM0O,YAGtG,MARAimB,GAAUltB,EAAM+tB,GAQT/tB,GACPmC,EAASlI,Q6B7rIZ+F,GAAKmI,SAAW,OAChBnI,EAAK+M,QAAU,M7BisId,I6B9rIKihB,G7B8rIW,SAAUC,GAGxB,QAASD,KAGP,MAFA1Z,GAAgB/b,KAAMy1B,GAEfjB,EAA2Bx0B,MAAOy1B,EAAUV,WAAan0B,OAAO00B,eAAeG,IAAYp0B,MAAMrB,KAAM0O,YA6HhH,MAlIAimB,GAAUc,EAAWC,GAQrBjV,EAAagV,IACX1c,IAAK,QACL3L,MAAO,W6B9rIF,GAAAiW,GAAArjB,KACFyb,EAAOzb,KAAK6N,QAAQ8nB,WAIxB,OAHIla,GAAK+L,SAAS,QAChB/L,EAAOA,EAAKxa,MAAM,GAAG,IAEhBwa,EAAK/J,MAAM,MAAMb,OAAO,SAACyN,EAAOsX,GACrC,MAAOtX,GAAMgI,OAAOsP,GAAMtP,OAAO,KAAMjD,EAAKxL,YAC3C,GAAAoG,GAAAvc,Y7BosIFqX,IAAK,SACL3L,MAAO,S6BlsIHgD,EAAMhD,GACX,GAAIgD,IAASpQ,KAAKyQ,QAAQb,WAAYxC,EAAtC,CADkB,GAAAyoB,GAEH71B,KAAKyP,WAALzF,EAAAtI,QAA0B1B,KAAKqP,SAAW,GAFvCymB,EAAAnW,EAAAkW,EAAA,GAEbpa,EAFaqa,EAAA,EAGN,OAARra,GACFA,EAAKtM,SAASsM,EAAKpM,SAAW,EAAG,GAEnC2lB,EAAAS,EAAA50B,UAAAk0B,WAAAn0B,OAAA00B,eAAAG,EAAA50B,WAAA,SAAAb,MAAAO,KAAAP,KAAaoQ,EAAMhD,O7BysIlB2L,IAAK,WACL3L,MAAO,S6BvsIDgC,EAAOC,EAAQe,EAAMhD,GAC5B,GAAe,IAAXiC,GACgD,MAAhDvG,EAAApH,QAAU2K,MAAM+D,EAAMtH,EAAApH,QAAUwK,MAAMwK,SACrCtG,IAASpQ,KAAKyQ,QAAQb,UAAYxC,IAAUpN,KAAKyQ,QAAQoH,QAAQ7X,KAAK6N,UAD3E,CAIA,GAAIkoB,GAAc/1B,KAAK0zB,aAAatkB,EACpC,MAAI2mB,EAAc,GAAKA,GAAe3mB,EAAQC,GAA9C,CACA,GAAI2mB,GAAch2B,KAAK0zB,aAAatkB,GAAO,GAAQ,EAC/C6mB,EAAgBF,EAAcC,EAAc,EAC5CzoB,EAAOvN,KAAKqV,QAAQ2gB,EAAaC,GACjCrkB,EAAOrE,EAAKqE,IAChBrE,GAAKoI,OAAOvF,EAAMhD,GACdwE,YAAgB6jB,IAClB7jB,EAAKzB,SAAS,EAAGf,EAAQ4mB,EAAc3mB,EAAS4mB,EAAe7lB,EAAMhD,Q7B0sItE2L,IAAK,WACL3L,MAAO,S6BvsIDgC,EAAOhC,EAAOkD,GACrB,GAAW,MAAPA,EAAJ,CAD0B,GAAA4lB,GAELl2B,KAAKyP,WAALzF,EAAAtI,QAA0B0N,GAFrB+mB,EAAAxW,EAAAuW,EAAA,GAErBza,EAFqB0a,EAAA,GAEf3mB,EAFe2mB,EAAA,EAG1B1a,GAAKpL,SAASb,EAAQpC,O7B+sIrB2L,IAAK,SACL3L,MAAO,QAASiC,K6B5sIjB,GAAIA,GAASrP,KAAK6N,QAAQ8nB,YAAYtmB,MACtC,OAAKrP,MAAK6N,QAAQ8nB,YAAYnO,SAAS,MAGhCnY,EAFEA,EAAS,K7BktIjB0J,IAAK,eACL3L,MAAO,S6B9sIGgpB,GAA8B,GAAjBrnB,GAAiBL,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,IAAAA,UAAA,EACzC,IAAKK,EAIH,MAAO/O,MAAK6N,QAAQ8nB,YAAY10B,MAAM,EAAGm1B,GAAaC,YAAY,KAHlE,IAAI7mB,GAASxP,KAAK6N,QAAQ8nB,YAAY10B,MAAMm1B,GAAarhB,QAAQ,KACjE,OAAOvF,IAAS,EAAK4mB,EAAc5mB,GAAS,K7BstI7CuJ,IAAK,WACL3L,MAAO,W6BhtIHpN,KAAK6N,QAAQ8nB,YAAYnO,SAAS,OACrCxnB,KAAK8N,YAAYhF,EAAApH,QAAUyK,OAAO,OAAQ,OAE5C6oB,EAAAS,EAAA50B,UAAAk0B,WAAAn0B,OAAA00B,eAAAG,EAAA50B,WAAA,WAAAb,MAAAO,KAAAP,KACA,IAAI4R,GAAO5R,KAAK4R,IACJ,OAARA,GAAgBA,EAAK6B,OAASzT,MAC9B4R,EAAKnB,QAAQb,WAAa5P,KAAKyQ,QAAQb,UACvC5P,KAAKyQ,QAAQoH,QAAQ7X,KAAK6N,WAAa+D,EAAKnB,QAAQoH,QAAQjG,EAAK/D,WACnE+D,EAAKV,WACLU,EAAKb,aAAa/Q,MAClB4R,EAAKtC,a7BmtINyJ,IAAK,UACL3L,MAAO,S6BhtIFqE,GACNujB,EAAAS,EAAA50B,UAAAk0B,WAAAn0B,OAAA00B,eAAAG,EAAA50B,WAAA,UAAAb,MAAAO,KAAAP,KAAcyR,MACXxQ,MAAMV,KAAKP,KAAK6N,QAAQyoB,iBAAiB,MAAM3oB,QAAQ,SAASL,GACjE,GAAIC,GAAOzE,EAAApH,QAAU0K,KAAKkB,EACd,OAARC,EACFD,EAAKS,WAAWwD,YAAYjE,GACnBC,YAAgBzE,GAAApH,QAAU+K,MACnCc,EAAK+B,SAEL/B,EAAKyE,gB7BqtIR+G,IAAK,SACL3L,MAAO,S6BpzIIA,GACZ,GAAIS,oEAAuBT;AAE3B,MADAS,GAAQ6K,aAAa,cAAc,GAC5B7K,K7BuzINkL,IAAK,UACL3L,MAAO,W6BpzIR,OAAO,M7ByzIDqoB,GACPvsB,EAAQxH,Q6B9tIX+zB,GAAU7lB,SAAW,aACrB6lB,EAAUjhB,QAAU,MACpBihB,EAAUc,IAAM,K7BkuIf32B,E6B/tIQ6H,O7BguIR7H,E6BhuI2B8B,QAAb+zB,G7BouIT,SAAS51B,EAAQD,EAASM,GAE/B,YAuCA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,G8BtuIle,QAAS5B,GAAc1lB,GAAoB,GAAdsK,GAAcnJ,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,KACzC,OAAY,OAARnB,EAAqBsK,GACG,kBAAjBtK,GAAKsK,UACdA,GAAU,EAAAyE,EAAA5a,SAAOmW,EAAStK,EAAKsK,YAEd,MAAftK,EAAKwE,QAA0C,UAAxBxE,EAAKwE,OAAOnC,UAAwBrC,EAAKwE,OAAOtB,QAAQiF,QAAUnI,EAAKkD,QAAQiF,MACjGmC,EAEFob,EAAc1lB,EAAKwE,OAAQ8F,I9BmrInCjX,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQ8B,QAAU9B,EAAQ6K,WAAa7K,EAAQqzB,cAAgB/f,MAE/D,IAAIuN,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,I8Bp2I7d5T,EAAAphB,EAAA,I9Bw2IKoc,EAAW/a,EAAuB+f,G8Bv2IvCP,EAAA7gB,EAAA,I9B22IK+d,EAAe1c,EAAuBwf,G8B12I3ClY,EAAA3I,EAAA,G9B82IK4I,EAAcvH,EAAuBsH,G8B72I1CM,EAAAjJ,EAAA,I9Bi3IKkJ,EAAU7H,EAAuB4H,G8Bh3ItCM,EAAAvJ,EAAA,I9Bo3IKwJ,EAAUnI,EAAuBkI,G8Bn3ItCE,EAAAzJ,EAAA,I9Bu3IK0J,EAAWrI,EAAuBoI,G8Bt3IvCI,EAAA7J,EAAA,I9B03IK8J,EAASzI,EAAuBwI,G8Bv3I/BysB,EAAiB,EAGjB/rB,E9Bg4IY,SAAUgsB,GAGzB,QAAShsB,KAGP,MAFAsR,GAAgB/b,KAAMyK,GAEf+pB,EAA2Bx0B,MAAOyK,EAAWsqB,WAAan0B,OAAO00B,eAAe7qB,IAAapJ,MAAMrB,KAAM0O,YAwClH,MA7CAimB,GAAUlqB,EAAYgsB,GAQtBhW,EAAahW,IACXsO,IAAK,SACL3L,MAAO,W8Bz4IR4nB,EAAAvqB,EAAA5J,UAAAk0B,WAAAn0B,OAAA00B,eAAA7qB,EAAA5J,WAAA,SAAAb,MAAAO,KAAAP,MACAA,KAAKwW,WAAa,GAAI1N,GAAApH,QAAUoL,WAAWI,MAAMlN,KAAK6N,Y9B64IrDkL,IAAK,QACL3L,MAAO,W8B14IR,OAAO,GAAA6Q,GAAAvc,SAAY4kB,OAAOtmB,KAAKoN,SAAS,EAAAkP,EAAA5a,SAAO1B,KAAK6X,UAAW7X,KAAKwW,WAAWwB,c9B84I9Ee,IAAK,SACL3L,MAAO,S8B54IHgD,EAAMhD,GACX,GAAI2K,GAAYjP,EAAApH,QAAU2K,MAAM+D,EAAMtH,EAAApH,QAAUwK,MAAMwqB,gBACrC,OAAb3e,GACF/X,KAAKwW,WAAWuB,UAAUA,EAAW3K,M9Bg5ItC2L,IAAK,WACL3L,MAAO,S8B74IDgC,EAAOC,EAAQe,EAAMhD,GAC5BpN,KAAK2V,OAAOvF,EAAMhD,M9Bg5IjB2L,IAAK,WACL3L,MAAO,S8B94IDgC,EAAOhC,EAAOkD,GACrB,GAAqB,gBAAVlD,IAAsBA,EAAMoa,SAAS,MAAO,CACrD,GAAImP,GAAQ7tB,EAAApH,QAAUyK,OAAOQ,EAAMiD,SACnC5P,MAAK+R,OAAOnD,aAAa+nB,EAAiB,IAAVvnB,EAAcpP,KAAOA,KAAK4R,MAC1D+kB,EAAMtmB,SAAS,EAAGjD,EAAMnM,MAAM,GAAG,QAEjC+zB,GAAAvqB,EAAA5J,UAAAk0B,WAAAn0B,OAAA00B,eAAA7qB,EAAA5J,WAAA,WAAAb,MAAAO,KAAAP,KAAeoP,EAAOhC,EAAOkD,O9Bm5IzB7F,GACPf,EAAQhI,Q8Bh5IX+I,GAAWiL,MAAQ5M,EAAApH,QAAUwK,MAAM8O,U9Bs5IlC,I8Bl5IKrO,G9Bk5IO,SAAUiqB,G8Bj5IrB,QAAAjqB,GAAYkB,GAASkO,EAAA/b,KAAA2M,EAAA,IAAA+U,GAAA8S,EAAAx0B,MAAA2M,EAAAooB,WAAAn0B,OAAA00B,eAAA3oB,IAAApM,KAAAP,KACb6N,GADa,OAEnB6T,GAAKmV,SAFcnV,E9BmhJpB,MAjIAiT,GAAUhoB,EAAOiqB,GAWjBnW,EAAa9T,IACXoM,IAAK,QACL3L,MAAO,W8Bh5IR,MATwB,OAApBpN,KAAK62B,MAAMvY,QACbte,KAAK62B,MAAMvY,MAAQte,KAAK6P,YAAY/G,EAAApH,QAAU8K,MAAMqE,OAAO,SAACyN,EAAO8U,GACjE,MAAsB,KAAlBA,EAAK/jB,SACAiP,EAEAA,EAAMgI,OAAO8M,EAAKhmB,QAAS6lB,EAAcG,KAEjD,GAAAnV,GAAAvc,SAAa4kB,OAAO,KAAM2M,EAAcjzB,QAEtCA,KAAK62B,MAAMvY,S9B65IjBvF,IAAK,WACL3L,MAAO,S8B35IDgC,EAAOC,GACd2lB,EAAAroB,EAAA9L,UAAAk0B,WAAAn0B,OAAA00B,eAAA3oB,EAAA9L,WAAA,WAAAb,MAAAO,KAAAP,KAAeoP,EAAOC,GACtBrP,KAAK62B,Y9B85IJ9d,IAAK,WACL3L,MAAO,S8B55IDgC,EAAOC,EAAQe,EAAMhD,GACxBiC,GAAU,IACVvG,EAAApH,QAAU2K,MAAM+D,EAAMtH,EAAApH,QAAUwK,MAAMwK,OACpCtH,EAAQC,IAAWrP,KAAKqP,UAC1BrP,KAAK2V,OAAOvF,EAAMhD,GAGpB4nB,EAAAroB,EAAA9L,UAAAk0B,WAAAn0B,OAAA00B,eAAA3oB,EAAA9L,WAAA,WAAAb,MAAAO,KAAAP,KAAeoP,EAAO6E,KAAKC,IAAI7E,EAAQrP,KAAKqP,SAAWD,EAAQ,GAAIgB,EAAMhD,GAE3EpN,KAAK62B,a9B+5IJ9d,IAAK,WACL3L,MAAO,S8B75IDgC,EAAOhC,EAAOkD,GACrB,GAAW,MAAPA,EAAa,MAAA0kB,GAAAroB,EAAA9L,UAAAk0B,WAAAn0B,OAAA00B,eAAA3oB,EAAA9L,WAAA,WAAAb,MAAAO,KAAAP,KAAsBoP,EAAOhC,EAAOkD,EACrD,IAAqB,IAAjBlD,EAAMiC,OAAV,CACA,GAAIgkB,GAAQjmB,EAAMsE,MAAM,MACpB+J,EAAO4X,EAAM1V,OACblC,GAAKpM,OAAS,IACZD,EAAQpP,KAAKqP,SAAW,GAA2B,MAAtBrP,KAAK8O,SAASmE,KAC7C+hB,EAAAroB,EAAA9L,UAAAk0B,WAAAn0B,OAAA00B,eAAA3oB,EAAA9L,WAAA,WAAAb,MAAAO,KAAAP,KAAeiU,KAAKC,IAAI9E,EAAOpP,KAAKqP,SAAW,GAAIoM,GAEnDzb,KAAK8O,SAASmE,KAAK5C,SAASrQ,KAAK8O,SAASmE,KAAK5D,SAAUoM,GAE3Dzb,KAAK62B,SAEP,IAAIF,GAAQ32B,IACZqzB,GAAMxiB,OAAO,SAASzB,EAAOmb,GAG3B,MAFAoM,GAAQA,EAAMjlB,MAAMtC,GAAO,GAC3BunB,EAAMtmB,SAAS,EAAGka,GACXA,EAAKlb,QACXD,EAAQqM,EAAKpM,Y9Bg6If0J,IAAK,eACL3L,MAAO,S8B95IGG,EAAMqI,GACjB,GAAI5G,GAAOhP,KAAK8O,SAASE,IACzBgmB,GAAAroB,EAAA9L,UAAAk0B,WAAAn0B,OAAA00B,eAAA3oB,EAAA9L,WAAA,eAAAb,MAAAO,KAAAP,KAAmBuN,EAAMqI,GACrB5G,wBACFA,EAAKM,SAEPtP,KAAK62B,Y9Bi6IJ9d,IAAK,SACL3L,MAAO,W8B35IR,MAHyB,OAArBpN,KAAK62B,MAAMxnB,SACbrP,KAAK62B,MAAMxnB,OAAS2lB,EAAAroB,EAAA9L,UAAAk0B,WAAAn0B,OAAA00B,eAAA3oB,EAAA9L,WAAA,SAAAb,MAAAO,KAAAP,MAAiBw2B,GAEhCx2B,KAAK62B,MAAMxnB,U9Bk6IjB0J,IAAK,eACL3L,MAAO,S8Bh6IGqE,EAAQmE,GACnBof,EAAAroB,EAAA9L,UAAAk0B,WAAAn0B,OAAA00B,eAAA3oB,EAAA9L,WAAA,eAAAb,MAAAO,KAAAP,KAAmByR,EAAQmE,GAC3B5V,KAAK62B,Y9Bm6IJ9d,IAAK,WACL3L,MAAO,W8Bh6IR4nB,EAAAroB,EAAA9L,UAAAk0B,WAAAn0B,OAAA00B,eAAA3oB,EAAA9L,WAAA,WAAAb,MAAAO,KAAAP,MACAA,KAAK62B,Y9Bo6IJ9d,IAAK,OACL3L,MAAO,S8Bl6ILgC,GACH,MAAA4lB,GAAAroB,EAAA9L,UAAAk0B,WAAAn0B,OAAA00B,eAAA3oB,EAAA9L,WAAA,OAAAb,MAAAO,KAAAP,KAAkBoP,GAAO,M9Bq6IxB2J,IAAK,cACL3L,MAAO,S8Bn6IEQ,GACVonB,EAAAroB,EAAA9L,UAAAk0B,WAAAn0B,OAAA00B,eAAA3oB,EAAA9L,WAAA,cAAAb,MAAAO,KAAAP,KAAkB4N,GAClB5N,KAAK62B,Y9Bs6IJ9d,IAAK,QACL3L,MAAO,S8Bp6IJgC,GAAsB,GAAfuC,GAAejD,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,IAAAA,UAAA,EAC1B,IAAIiD,IAAoB,IAAVvC,GAAeA,GAASpP,KAAKqP,SAAWmnB,GAAiB,CACrE,GAAI1kB,GAAQ9R,KAAK8R,OACjB,OAAc,KAAV1C,GACFpP,KAAK+R,OAAOnD,aAAakD,EAAO9R,MACzBA,OAEPA,KAAK+R,OAAOnD,aAAakD,EAAO9R,KAAK4R,MAC9BE,GAGT,GAAIF,uFAAmBxC,EAAOuC,EAE9B,OADA3R,MAAK62B,SACEjlB,M9B26IHjF,G8BphJU7D,EAAApH,QAAUiL,MA6G9BA,GAAMiD,SAAW,QACjBjD,EAAM6H,QAAU,IAChB7H,EAAMwE,aAAe,QACrBxE,EAAM+D,iBAAkB9G,EAAAlI,QAAAgI,EAAAhI,QAAAsI,EAAAtI,S9By7IvB9B,E8B16IQqzB,gB9B26IRrzB,E8B36IuB6K,a9B46IvB7K,E8B56I4C8B,QAATiL,G9Bg7IpC,GAEM,SAAS9M,EAAQD,EAASM,GAE/B,YAcA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAlBjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAIqT,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,I+B1mJ7dzrB,EAAAvJ,EAAA,I/B8mJKwJ,EAAUnI,EAAuBkI,G+B3mJhCqtB,E/BqnJO,SAAUL,GAGpB,QAASK,KAGP,MAFA/a,GAAgB/b,KAAM82B,GAEftC,EAA2Bx0B,MAAO82B,EAAM/B,WAAan0B,OAAO00B,eAAewB,IAAQz1B,MAAMrB,KAAM0O,YA6BxG,MAlCAimB,GAAUmC,EAAOL,GAQjBhW,EAAaqW,IACX/d,IAAK,aACL3L,MAAO,S+B3nJC2E,EAAQ6D,GACc,IAA3B7D,EAAOjD,SAASO,OAClB2lB,EAAA8B,EAAAj2B,UAAAk0B,WAAAn0B,OAAA00B,eAAAwB,EAAAj2B,WAAA,aAAAb,MAAAO,KAAAP,KAAiB+R,EAAQ6D,GAEzB5V,KAAKsP,Y/B+nJNyJ,IAAK,SACL3L,MAAO,W+B3nJR,MAAO,M/B+nJN2L,IAAK,QACL3L,MAAO,W+B5nJR,MAAO,Q/BgoJN2L,IAAK,QACL3L,MAAO,gBAKF0pB,GACPptB,EAAQhI,Q+BpoJXo1B,GAAMlnB,SAAW,QACjBknB,EAAMtiB,QAAU,K/BwoJf5U,EAAQ8B,Q+BroJMo1B,G/ByoJT,SAASj3B,EAAQD,EAASM,GAE/B,YAUA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAdjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GgC1qJV,IAAAvE,GAAA3I,EAAA,GhC+qJK4I,EAAcvH,EAAuBsH,GgC7qJpC4D,EhCurJO,SAAUsqB,GAGpB,QAAStqB,KAGP,MAFAsP,GAAgB/b,KAAMyM,GAEf+nB,EAA2Bx0B,MAAOyM,EAAMsoB,WAAan0B,OAAO00B,eAAe7oB,IAAQpL,MAAMrB,KAAM0O,YAGxG,MARAimB,GAAUloB,EAAOsqB,GAQVtqB,GgChsJU3D,EAAApH,QAAU+K,MhCmsJ7B7M,GAAQ8B,QgCjsJM+K,GhCqsJT,SAAS5M,EAAQD,EAASM,GAE/B,YAsBA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GA1Bjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAIqT,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,IiCntJ7dzrB,EAAAvJ,EAAA,IjCutJKwJ,EAAUnI,EAAuBkI,GiCttJtCM,EAAA7J,EAAA,IjC0tJK8J,EAASzI,EAAuBwI,GiCztJrClB,EAAA3I,EAAA,GjC6tJK4I,EAAcvH,EAAuBsH,GiC1tJpC+D,EjCouJQ,SAAUoqB,GAGrB,QAASpqB,KAGP,MAFAmP,GAAgB/b,KAAM4M,GAEf4nB,EAA2Bx0B,MAAO4M,EAAOmoB,WAAan0B,OAAO00B,eAAe1oB,IAASvL,MAAMrB,KAAM0O,YA0C1G,MA/CAimB,GAAU/nB,EAAQoqB,GAQlBvW,EAAa7T,IACXmM,IAAK,WACL3L,MAAO,SiChuJDgC,EAAOC,EAAQe,EAAMhD,GAC5B,GAAIR,EAAOqqB,QAAQj3B,KAAKyQ,QAAQb,SAAUQ,GAAQ,GAAKtH,EAAApH,QAAU2K,MAAM+D,EAAMtH,EAAApH,QAAUwK,MAAMoJ,MAAO,CAClG,GAAI/H,GAAOvN,KAAKqV,QAAQjG,EAAOC,EAC3BjC,IACFG,EAAKgI,KAAKnF,EAAMhD,OAGlB4nB,GAAApoB,EAAA/L,UAAAk0B,WAAAn0B,OAAA00B,eAAA1oB,EAAA/L,WAAA,WAAAb,MAAAO,KAAAP,KAAeoP,EAAOC,EAAQe,EAAMhD,MjCouJrC2L,IAAK,WACL3L,MAAO,WiC/tJR,GADA4nB,EAAApoB,EAAA/L,UAAAk0B,WAAAn0B,OAAA00B,eAAA1oB,EAAA/L,WAAA,WAAAb,MAAAO,KAAAP,MACIA,KAAK+R,iBAAkBnF,IACvBA,EAAOqqB,QAAQj3B,KAAKyQ,QAAQb,SAAU5P,KAAK+R,OAAOtB,QAAQb,UAAY,EAAG,CAC3E,GAAImC,GAAS/R,KAAK+R,OAAOsD,QAAQrV,KAAKwP,SAAUxP,KAAKqP,SACrDrP,MAAK+Q,aAAagB,GAClBA,EAAOwD,KAAKvV,YjCouJb+Y,IAAK,UACL3L,MAAO,SiCpwJKqnB,EAAM9lB,GACnB,GAAIuoB,GAAYtqB,EAAOuqB,MAAMpiB,QAAQ0f,GACjC2C,EAAaxqB,EAAOuqB,MAAMpiB,QAAQpG,EACtC,OAAIuoB,IAAa,GAAKE,GAAc,EAC3BF,EAAYE,EACV3C,IAAS9lB,EACX,EACE8lB,EAAO9lB,GACT,EAEA,MjCywJH/B,GiCpxJW9D,EAAApH,QAAUkL,OAoC/BA,GAAO8D,iBAAmB9D,EAADlD,EAAAhI,QAAAsI,EAAAtI,SAEzBkL,EAAOuqB,OACL,SAAU,SACV,OAAQ,YAAa,SAAU,SAAU,OAAQ,SACjD,QjCovJDv3B,EAAQ8B,QiChvJMkL,GjCovJT,SAAS/M,EAAQD,EAASM,GAE/B,YAUA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAdjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GkC3yJV,IAAAvE,GAAA3I,EAAA,GlCgzJK4I,EAAcvH,EAAuBsH,GkC9yJpC2S,ElCwzJU,SAAU6b,GAGvB,QAAS7b,KAGP,MAFAO,GAAgB/b,KAAMwb,GAEfgZ,EAA2Bx0B,MAAOwb,EAASuZ,WAAan0B,OAAO00B,eAAe9Z,IAAWna,MAAMrB,KAAM0O,YAG9G,MARAimB,GAAUnZ,EAAU6b,GAQb7b,GkCj0Ja1S,EAAApH,QAAUmL,KlCo0JhCjN,GAAQ8B,QkCl0JM8Z,GlCs0JT,SAAS3b,EAAQD,EAASM,GAE/B,YA4BA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhCjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAIuS,GAAiB,WAAc,QAASO,GAAcxG,EAAK/Y,GAAK,GAAIwf,MAAeC,GAAK,EAAUC,GAAK,EAAWC,EAAKpN,MAAW,KAAM,IAAK,GAAiCqN,GAA7BlN,EAAKqG,EAAIuG,OAAOzM,cAAmB4M,GAAMG,EAAKlN,EAAGzB,QAAQ4O,QAAoBL,EAAKlQ,KAAKsQ,EAAGnT,QAAYzM,GAAKwf,EAAK9Q,SAAW1O,GAA3Dyf,GAAK,IAAoE,MAAOnR,GAAOoR,GAAK,EAAMC,EAAKrR,EAAO,QAAU,KAAWmR,GAAM/M,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIgN,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUzG,EAAK/Y,GAAK,GAAI8T,MAAMC,QAAQgF,GAAQ,MAAOA,EAAY,IAAIuG,OAAOzM,WAAY5S,QAAO8Y,GAAQ,MAAOwG,GAAcxG,EAAK/Y,EAAa,MAAM,IAAIub,WAAU,4DAEllB8Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,IAExdzU,EAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MmCt1JjiBpT,EAAA3I,EAAA,GnC01JK4I,EAAcvH,EAAuBsH,GmCz1J1CY,EAAAvJ,EAAA,InC61JKwJ,EAAUnI,EAAuBkI,GmC51JtCM,EAAA7J,EAAA,InCg2JK8J,EAASzI,EAAuBwI,GmC/1JrC4U,EAAAze,EAAA,InCm2JK+e,EAAY1d,EAAuBod,GmCh2JlC2Y,EnC02JQ,SAAUb,GmCr2JtB,QAAAa,GAAYzpB,EAASkU,GAAWhG,EAAA/b,KAAAs3B,EAAA,IAAAzoB,GAAA2lB,EAAAx0B,MAAAs3B,EAAAvC,WAAAn0B,OAAA00B,eAAAgC,IAAA/2B,KAAAP,KACxB6N,GADwB,OAE9BgB,GAAKkT,UAAYA,EACjBlT,EAAK0oB,SAAWhlB,SAASmJ,eAAe4b,EAAOlD,UAC/CvlB,EAAKhB,QAAQC,YAAYe,EAAK0oB,UAC9B1oB,EAAK2oB,QAAU,EALe3oB,EnC8+J/B,MAxIA8lB,GAAU2C,EAAQb,GAElBhW,EAAa6W,EAAQ,OACnBve,IAAK,QACL3L,MAAO,gBAiBTqT,EAAa6W,IACXve,IAAK,SACL3L,MAAO,WmCn3JW,MAAfpN,KAAK+R,QAAgB/R,KAAK+R,OAAOR,YAAYvR,SnCw3JhD+Y,IAAK,SACL3L,MAAO,SmCt3JHgD,EAAMhD,GACX,GAAqB,IAAjBpN,KAAKw3B,QACP,MAAAxC,GAAAsC,EAAAz2B,UAAAk0B,WAAAn0B,OAAA00B,eAAAgC,EAAAz2B,WAAA,SAAAb,MAAAO,KAAAP,KAAoBoQ,EAAMhD,EAG5B,KADA,GAAIqE,GAASzR,KAAMoP,EAAQ,EACV,MAAVqC,GAAkBA,EAAOhB,QAAQiF,QAAU5M,EAAApH,QAAUwK,MAAM8O,YAChE5L,GAASqC,EAAOjC,OAAOiC,EAAOM,QAC9BN,EAASA,EAAOM,MAEJ,OAAVN,IACFzR,KAAKw3B,QAAUF,EAAOlD,SAAS/kB,OAC/BoC,EAAOP,WACPO,EAAOtB,SAASf,EAAOkoB,EAAOlD,SAAS/kB,OAAQe,EAAMhD,GACrDpN,KAAKw3B,QAAU,MnC23JhBze,IAAK,QACL3L,MAAO,SmCx3JJE,EAAMkC,GACV,MAAIlC,KAAStN,KAAKu3B,SAAiB,EACnCvC,EAAAsC,EAAAz2B,UAAAk0B,WAAAn0B,OAAA00B,eAAAgC,EAAAz2B,WAAA,QAAAb,MAAAO,KAAAP,KAAmBsN,EAAMkC,MnC23JxBuJ,IAAK,SACL3L,MAAO,WmCx3JR,MAAOpN,MAAKw3B,WnC43JXze,IAAK,WACL3L,MAAO,WmCz3JR,OAAQpN,KAAKu3B,SAAUv3B,KAAKu3B,SAAS5b,KAAKtM,WnC63JzC0J,IAAK,SACL3L,MAAO,WmC13JR4nB,EAAAsC,EAAAz2B,UAAAk0B,WAAAn0B,OAAA00B,eAAAgC,EAAAz2B,WAAA,SAAAb,MAAAO,KAAAP,MACAA,KAAK+R,OAAS,QnC83JbgH,IAAK,UACL3L,MAAO,WmC53JA,GAAAsU,GAAA1hB,IACR,KAAIA,KAAK+hB,UAAU0V,WACA,MAAfz3B,KAAK+R,OAAT,CACA,GAAIwlB,GAAWv3B,KAAKu3B,SAChBrZ,EAAQle,KAAK+hB,UAAU2V,iBACvBC,SAAatY,SAAOC,QACxB,IAAa,MAATpB,GAAiBA,EAAMmB,MAAM/R,OAASiqB,GAAYrZ,EAAMoB,IAAIhS,OAASiqB,EAAU,IAAAK,IACpDL,EAAUrZ,EAAMmB,MAAM7P,OAAQ0O,EAAMoB,IAAI9P,OAApEmoB,GADgFC,EAAA,GACnEvY,EADmEuY,EAAA,GAC5DtY,EAD4DsY,EAAA,GAInF,KAAiC,MAA1B53B,KAAK6N,QAAQgqB,WAAqB73B,KAAK6N,QAAQgqB,YAAc73B,KAAKu3B,UACvEv3B,KAAK6N,QAAQE,WAAWa,aAAa5O,KAAK6N,QAAQgqB,UAAW73B,KAAK6N,QAEpE,IAAI7N,KAAKu3B,SAAS5b,OAAS2b,EAAOlD,SAAU,CAC1C,GAAI3Y,GAAOzb,KAAKu3B,SAAS5b,KAAKjK,MAAM4lB,EAAOlD,UAAUlb,KAAK,GACtDlZ,MAAK4R,eAAL5H,GAAAtI,SACFi2B,EAAc33B,KAAK4R,KAAK/D,QACxB7N,KAAK4R,KAAKvB,SAAS,EAAGoL,GACtBzb,KAAKu3B,SAAS5b,KAAO2b,EAAOlD,WAE5Bp0B,KAAKu3B,SAAS5b,KAAOF,EACrBzb,KAAK+R,OAAOnD,aAAa9F,EAAApH,QAAUyK,OAAOnM,KAAKu3B,UAAWv3B,MAC1DA,KAAKu3B,SAAWhlB,SAASmJ,eAAe4b,EAAOlD,UAC/Cp0B,KAAK6N,QAAQC,YAAY9N,KAAKu3B,WAGlCv3B,KAAKsP,SACQ,MAAT+P,GACJrf,KAAK+hB,UAAUjD,QAAQ4G,KAAKzG,EAAAvd,QAAQkd,OAAOkZ,gBAAiB,WAAM,GAAAvY,IAChDF,EAAOC,GAAKnL,IAAI,SAAS3E,GACvC,MAAOyE,MAAK4L,IAAI,EAAG5L,KAAKC,IAAIyjB,EAAYhc,KAAKtM,OAAQG,EAAS,MAFAkQ,EAAAC,EAAAJ,EAAA,EAC/DF,GAD+DK,EAAA,GACxDJ,EADwDI,EAAA,GAIhEgC,EAAKK,UAAUgW,eAAeJ,EAAatY,EAAOsY,EAAarY,SnC64JhEvG,IAAK,SACL3L,MAAO,SmC14JH8E,GAAW,GAAAmR,GAAArjB,IAChBkS,GAAUvE,QAAQ,SAAC0E,GACK,kBAAlBA,EAASC,MAA4BD,EAASZ,SAAW4R,EAAKkU,UAChElU,EAAK2U,enCi5JRjf,IAAK,QACL3L,MAAO,WmC54JR,MAAO,OnCi5JDkqB,GACP5tB,EAAQhI,QmC/4JX41B,GAAO1nB,SAAW,SAClB0nB,EAAOtiB,UAAY,YACnBsiB,EAAO9iB,QAAU,OACjB8iB,EAAOlD,SAAW,SnCo5JjBx0B,EAAQ8B,QmCj5JM41B,GnCq5JT,SAASz3B,EAAQD,EAASM,GAE/B,YAkBA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAtBjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAIqT,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,IoChhK7d+C,EAAA/3B,EAAA,IpCohKKg4B,EAAiB32B,EAAuB02B,GoCnhK7C1W,EAAArhB,EAAA,IpCuhKKshB,EAAWjgB,EAAuBggB,GoCrhKnCnE,GAAQ,EAAAoE,EAAA9f,SAAO,gBAGby2B,EpC8hKS,SAAUC,GoC7hKvB,QAAAD,KAAcpc,EAAA/b,KAAAm4B,EAAA,IAAAtpB,GAAA2lB,EAAAx0B,MAAAm4B,EAAApD,WAAAn0B,OAAA00B,eAAA6C,IAAA53B,KAAAP,MAAA,OAEZ6O,GAAKqT,GAAG,QAAS9E,EAAMC,OAFXxO,EpCijKb,MAnBA8lB,GAAUwD,EAASC,GAWnB3X,EAAa0X,IACXpf,IAAK,OACL3L,MAAO,WoCriKRgQ,EAAMnG,IAAI5V,MAAM+b,EAAO1O,WACvBsmB,EAAAmD,EAAAt3B,UAAAk0B,WAAAn0B,OAAA00B,eAAA6C,EAAAt3B,WAAA,OAAAb,MAAWqB,MAAMrB,KAAM0O,epC0iKjBypB,GACPD,EAAex2B,QoCviKlBy2B,GAAQvZ,QACNI,cAAuB,gBACvBqZ,qBAAuB,uBACvBP,gBAAuB,kBACvBzV,cAAuB,gBACvBiW,iBAAuB,mBACvBzZ,YAAuB,eAEzBsZ,EAAQpa,SACNqB,IAAS,MACTV,OAAS,SACTV,KAAS,QpC4iKVpe,EAAQ8B,QoCxiKMy2B,GpC4iKT,SAASt4B,EAAQD,GqC7kKvB,YAYA,SAAA24B,MA4BA,QAAAC,GAAAt3B,EAAAu3B,EAAA/S,GACA1lB,KAAAkB,KACAlB,KAAAy4B,UACAz4B,KAAA0lB,SAAA,EAUA,QAAAgT,KACA14B,KAAA24B,QAAA,GAAAJ,GACAv4B,KAAA44B,aAAA,EArDA,GAAAC,GAAAj4B,OAAAC,UAAAC,eACAkY,EAAA,GAkBApY,QAAAuL,SACAosB,EAAA13B,UAAAD,OAAAuL,OAAA,OAMA,GAAAosB,IAAAxD,YAAA/b,GAAA,IAqCA0f,EAAA73B,UAAAi4B,WAAA,WACA,GACAla,GACAxO,EAFAwG,IAIA,QAAA5W,KAAA44B,aAAA,MAAAhiB,EAEA,KAAAxG,IAAAwO,GAAA5e,KAAA24B,QACAE,EAAAt4B,KAAAqe,EAAAxO,IAAAwG,EAAA3G,KAAA+I,EAAA5I,EAAAnP,MAAA,GAAAmP,EAGA,OAAAxP,QAAAm4B,sBACAniB,EAAAtV,OAAAV,OAAAm4B,sBAAAna,IAGAhI,GAWA8hB,EAAA73B,UAAAm4B,UAAA,SAAAC,EAAAC,GACA,GAAAC,GAAAngB,IAAAigB,IACAG,EAAAp5B,KAAA24B,QAAAQ,EAEA,IAAAD,EAAA,QAAAE,CACA,KAAAA,EAAA,QACA,IAAAA,EAAAl4B,GAAA,OAAAk4B,EAAAl4B,GAEA,QAAAP,GAAA,EAAA04B,EAAAD,EAAA/pB,OAAAiqB,EAAA,GAAA7kB,OAAA4kB,GAA0D14B,EAAA04B,EAAO14B,IACjE24B,EAAA34B,GAAAy4B,EAAAz4B,GAAAO,EAGA,OAAAo4B,IAUAZ,EAAA73B,UAAAke,KAAA,SAAAka,EAAAM,EAAAC,EAAAC,EAAAC,EAAAC,GACA,GAAAR,GAAAngB,IAAAigB,GAEA,KAAAj5B,KAAA24B,QAAAQ,GAAA,QAEA,IAEAn4B,GACAL,EAHAq4B,EAAAh5B,KAAA24B,QAAAQ,GACAS,EAAAlrB,UAAAW,MAIA,IAAA2pB,EAAA93B,GAAA,CAGA,OAFA83B,EAAAtT,MAAA1lB,KAAA65B,eAAAZ,EAAAD,EAAA93B,GAAAgS,QAAA,GAEA0mB,GACA,aAAAZ,GAAA93B,GAAAX,KAAAy4B,EAAAP,UAAA,CACA,cAAAO,GAAA93B,GAAAX,KAAAy4B,EAAAP,QAAAc,IAAA,CACA,cAAAP,GAAA93B,GAAAX,KAAAy4B,EAAAP,QAAAc,EAAAC,IAAA,CACA,cAAAR,GAAA93B,GAAAX,KAAAy4B,EAAAP,QAAAc,EAAAC,EAAAC,IAAA,CACA,cAAAT,GAAA93B,GAAAX,KAAAy4B,EAAAP,QAAAc,EAAAC,EAAAC,EAAAC,IAAA,CACA,cAAAV,GAAA93B,GAAAX,KAAAy4B,EAAAP,QAAAc,EAAAC,EAAAC,EAAAC,EAAAC,IAAA,EAGA,IAAAh5B,EAAA,EAAAK,EAAA,GAAAyT,OAAAmlB,EAAA,GAAyCj5B,EAAAi5B,EAASj5B,IAClDK,EAAAL,EAAA,GAAA+N,UAAA/N,EAGAq4B,GAAA93B,GAAAG,MAAA23B,EAAAP,QAAAz3B,OACG,CACH,GACAkuB,GADA7f,EAAA2pB,EAAA3pB,MAGA,KAAA1O,EAAA,EAAeA,EAAA0O,EAAY1O,IAG3B,OAFAq4B,EAAAr4B,GAAA+kB,MAAA1lB,KAAA65B,eAAAZ,EAAAD,EAAAr4B,GAAAO,GAAAgS,QAAA,GAEA0mB,GACA,OAAAZ,EAAAr4B,GAAAO,GAAAX,KAAAy4B,EAAAr4B,GAAA83B,QAA2D,MAC3D,QAAAO,EAAAr4B,GAAAO,GAAAX,KAAAy4B,EAAAr4B,GAAA83B,QAAAc,EAA+D,MAC/D,QAAAP,EAAAr4B,GAAAO,GAAAX,KAAAy4B,EAAAr4B,GAAA83B,QAAAc,EAAAC,EAAmE,MACnE,QAAAR,EAAAr4B,GAAAO,GAAAX,KAAAy4B,EAAAr4B,GAAA83B,QAAAc,EAAAC,EAAAC,EAAuE,MACvE,SACA,IAAAz4B,EAAA,IAAAkuB,EAAA,EAAAluB,EAAA,GAAAyT,OAAAmlB,EAAA,GAA0D1K,EAAA0K,EAAS1K,IACnEluB,EAAAkuB,EAAA,GAAAxgB,UAAAwgB,EAGA8J,GAAAr4B,GAAAO,GAAAG,MAAA23B,EAAAr4B,GAAA83B,QAAAz3B,IAKA,UAYA03B,EAAA73B,UAAAqhB,GAAA,SAAA+W,EAAA/3B,EAAAu3B,GACA,GAAAqB,GAAA,GAAAtB,GAAAt3B,EAAAu3B,GAAAz4B,MACAm5B,EAAAngB,IAAAigB,GAMA,OAJAj5B,MAAA24B,QAAAQ,GACAn5B,KAAA24B,QAAAQ,GAAAj4B,GACAlB,KAAA24B,QAAAQ,IAAAn5B,KAAA24B,QAAAQ,GAAAW,GADA95B,KAAA24B,QAAAQ,GAAAlpB,KAAA6pB,IADA95B,KAAA24B,QAAAQ,GAAAW,EAAA95B,KAAA44B,gBAIA54B,MAYA04B,EAAA73B,UAAA6kB,KAAA,SAAAuT,EAAA/3B,EAAAu3B,GACA,GAAAqB,GAAA,GAAAtB,GAAAt3B,EAAAu3B,GAAAz4B,MAAA,GACAm5B,EAAAngB,IAAAigB,GAMA,OAJAj5B,MAAA24B,QAAAQ,GACAn5B,KAAA24B,QAAAQ,GAAAj4B,GACAlB,KAAA24B,QAAAQ,IAAAn5B,KAAA24B,QAAAQ,GAAAW,GADA95B,KAAA24B,QAAAQ,GAAAlpB,KAAA6pB,IADA95B,KAAA24B,QAAAQ,GAAAW,EAAA95B,KAAA44B,gBAIA54B,MAaA04B,EAAA73B,UAAAg5B,eAAA,SAAAZ,EAAA/3B,EAAAu3B,EAAA/S,GACA,GAAAyT,GAAAngB,IAAAigB,GAEA,KAAAj5B,KAAA24B,QAAAQ,GAAA,MAAAn5B,KACA,KAAAkB,EAGA,MAFA,OAAAlB,KAAA44B,aAAA54B,KAAA24B,QAAA,GAAAJ,SACAv4B,MAAA24B,QAAAQ,GACAn5B,IAGA,IAAAg5B,GAAAh5B,KAAA24B,QAAAQ,EAEA,IAAAH,EAAA93B,GAEA83B,EAAA93B,QACAwkB,IAAAsT,EAAAtT,MACA+S,GAAAO,EAAAP,cAEA,MAAAz4B,KAAA44B,aAAA54B,KAAA24B,QAAA,GAAAJ,SACAv4B,MAAA24B,QAAAQ,QAEG,CACH,OAAAx4B,GAAA,EAAAie,KAAAvP,EAAA2pB,EAAA3pB,OAA2D1O,EAAA0O,EAAY1O,KAEvEq4B,EAAAr4B,GAAAO,QACAwkB,IAAAsT,EAAAr4B,GAAA+kB,MACA+S,GAAAO,EAAAr4B,GAAA83B,cAEA7Z,EAAA3O,KAAA+oB,EAAAr4B,GAOAie,GAAAvP,OAAArP,KAAA24B,QAAAQ,GAAA,IAAAva,EAAAvP,OAAAuP,EAAA,GAAAA,EACA,MAAA5e,KAAA44B,aAAA54B,KAAA24B,QAAA,GAAAJ,SACAv4B,MAAA24B,QAAAQ,GAGA,MAAAn5B,OAUA04B,EAAA73B,UAAAk5B,mBAAA,SAAAd,GACA,GAAAE,EAaA,OAXAF,IACAE,EAAAngB,IAAAigB,IACAj5B,KAAA24B,QAAAQ,KACA,MAAAn5B,KAAA44B,aAAA54B,KAAA24B,QAAA,GAAAJ,SACAv4B,MAAA24B,QAAAQ,MAGAn5B,KAAA24B,QAAA,GAAAJ,GACAv4B,KAAA44B,aAAA,GAGA54B,MAMA04B,EAAA73B,UAAA4kB,IAAAiT,EAAA73B,UAAAg5B,eACAnB,EAAA73B,UAAAm5B,YAAAtB,EAAA73B,UAAAqhB,GAKAwW,EAAA73B,UAAAo5B,gBAAA,WACA,MAAAj6B,OAMA04B,EAAAwB,SAAAlhB,EAKA0f,iBAKA,mBAAA74B,KACAA,EAAAD,QAAA84B,IrCqlKM,SAAS74B,EAAQD,GAEtB,YsCz4KD,SAASwd,GAAM+c,GACb,GAAIC,EAAOrlB,QAAQolB,IAAWC,EAAOrlB,QAAQgO,GAAQ,QAAAsX,GAAA3rB,UAAAW,OAD7BrO,EAC6ByT,MAAA4lB,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAD7Bt5B,EAC6Bs5B,EAAA,GAAA5rB,UAAA4rB,EACnDtjB,SAAQmjB,GAAQ94B,MAAM2V,QAAShW,IAInC,QAASu5B,GAAUC,GACjB,MAAOJ,GAAOvpB,OAAO,SAAS4pB,EAAQN,GAEpC,MADAM,GAAON,GAAU/c,EAAMsd,KAAK1jB,QAASmjB,EAAQK,GACtCC,OtCk4KV75B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GsC/4KV,IAAIgtB,IAAU,QAAS,OAAQ,MAAO,QAClCrX,EAAQ,MAeZ3F,GAAM2F,MAAQwX,EAAUxX,MAAQ,SAAS4X,GACvC5X,EAAQ4X,GtCw5KT/6B,EAAQ8B,QsCp5KM64B,GtCw5KT,SAAS16B,EAAQD,GuC76KvB,GAAAkS,GAAA,WACA,YA2CA,SAAAA,GAAAC,EAAA6oB,EAAAC,EAAAh6B,GAsBA,QAAA0xB,GAAAxgB,EAAA8oB,GAEA,UAAA9oB,EACA,WAEA,QAAA8oB,EACA,MAAA9oB,EAEA,IAAAnE,GACAktB,CACA,oBAAA/oB,GACA,MAAAA,EAGA,IAAAA,YAAAgpB,GACAntB,EAAA,GAAAmtB,OACK,IAAAhpB,YAAAipB,GACLptB,EAAA,GAAAotB,OACK,IAAAjpB,YAAAkpB,GACLrtB,EAAA,GAAAqtB,GAAA,SAAAC,EAAAC,GACAppB,EAAAqpB,KAAA,SAAAhuB,GACA8tB,EAAA3I,EAAAnlB,EAAAytB,EAAA,KACS,SAAA5rB,GACTksB,EAAA5I,EAAAtjB,EAAA4rB,EAAA,YAGK,IAAA/oB,EAAAupB,UAAAtpB,GACLnE,SACK,IAAAkE,EAAAwpB,WAAAvpB,GACLnE,EAAA,GAAA2tB,QAAAxpB,EAAA2L,OAAA8d,EAAAzpB,IACAA,EAAA6V,YAAAha,EAAAga,UAAA7V,EAAA6V,eACK,IAAA9V,EAAA2pB,SAAA1pB,GACLnE,EAAA,GAAA8tB,MAAA3pB,EAAA4pB,eACK,IAAAC,GAAAC,OAAAC,SAAA/pB,GAGL,MAFAnE,GAAA,GAAAiuB,QAAA9pB,EAAA1C,QACA0C,EAAAkG,KAAArK,GACAA,CAEA,oBAAA/M,IACAi6B,EAAAl6B,OAAA00B,eAAAvjB,GACAnE,EAAAhN,OAAAuL,OAAA2uB,KAGAltB,EAAAhN,OAAAuL,OAAAtL,GACAi6B,EAAAj6B,GAIA,GAAA+5B,EAAA,CACA,GAAAxrB,GAAA2sB,EAAAhnB,QAAAhD,EAEA,IAAA3C,IAAA,EACA,MAAA4sB,GAAA5sB,EAEA2sB,GAAA9rB,KAAA8B,GACAiqB,EAAA/rB,KAAArC,GAGA,GAAAmE,YAAAgpB,GAEA,IADA,GAAAkB,GAAAlqB,EAAAwG,SACA,CACA,GAAA3G,GAAAqqB,EAAArqB,MACA,IAAAA,EAAA4O,KACA,KAEA,IAAA0b,GAAA3J,EAAA3gB,EAAAxE,MAAAytB,EAAA,GACAsB,EAAA5J,EAAAxgB,EAAAsC,IAAAzC,EAAAxE,OAAAytB,EAAA,EACAjtB,GAAAwuB,IAAAF,EAAAC,GAGA,GAAApqB,YAAAipB,GAEA,IADA,GAAAxnB,GAAAzB,EAAAwG,SACA,CACA,GAAA3G,GAAA4B,EAAA5B,MACA,IAAAA,EAAA4O,KACA,KAEA,IAAA6b,GAAA9J,EAAA3gB,EAAAxE,MAAAytB,EAAA,EACAjtB,GAAAsH,IAAAmnB,GAIA,OAAA17B,KAAAoR,GAAA,CACA,GAAAuqB,EACAxB,KACAwB,EAAA17B,OAAAy0B,yBAAAyF,EAAAn6B,IAGA27B,GAAA,MAAAA,EAAAF,MAGAxuB,EAAAjN,GAAA4xB,EAAAxgB,EAAApR,GAAAk6B,EAAA,IAGA,GAAAj6B,OAAAm4B,sBAEA,OADAwD,GAAA37B,OAAAm4B,sBAAAhnB,GACApR,EAAA,EAAqBA,EAAA47B,EAAAltB,OAAoB1O,IAAA,CAGzC,GAAA67B,GAAAD,EAAA57B,EACAiN,GAAA4uB,GAAAjK,EAAAxgB,EAAAyqB,GAAA3B,EAAA,GAIA,MAAAjtB,GA7HA,GAAAgF,EACA,iBAAAgoB,KACAC,EAAAD,EAAAC,MACAh6B,EAAA+5B,EAAA/5B,UACA+R,EAAAgoB,EAAAhoB,OACAgoB,aAIA,IAAAmB,MACAC,KAEAJ,EAAA,mBAAAC,OAoHA,OAlHA,mBAAAjB,KACAA,GAAA,GAEA,mBAAAC,KACAA,EAAA1R,KA8GAoJ,EAAAxgB,EAAA8oB,GAqBA,QAAA4B,GAAAC,GACA,MAAA97B,QAAAC,UAAAgU,SAAAtU,KAAAm8B,GAIA,QAAAjB,GAAAiB,GACA,sBAAAA,IAAA,kBAAAD,EAAAC,GAIA,QAAArB,GAAAqB,GACA,sBAAAA,IAAA,mBAAAD,EAAAC,GAIA,QAAApB,GAAAoB,GACA,sBAAAA,IAAA,oBAAAD,EAAAC,GAIA,QAAAlB,GAAAmB,GACA,GAAAC,GAAA,EAIA,OAHAD,GAAAE,SAAAD,GAAA,KACAD,EAAAG,aAAAF,GAAA,KACAD,EAAAI,YAAAH,GAAA,KACAA,EAxNA,GAAA7B,EACA,KACAA,EAAAiC,IACC,MAAAC,GAGDlC,EAAA,aAGA,GAAAC,EACA,KACAA,EAAAkC,IACC,MAAAD,GACDjC,EAAA,aAGA,GAAAC,EACA,KACAA,EAAAkC,QACC,MAAAF,GACDhC,EAAA,aAwMA,MAxCAnpB,GAAAsrB,eAAA,SAAArrB,GACA,UAAAA,EACA,WAEA,IAAAtR,GAAA,YAEA,OADAA,GAAAI,UAAAkR,EACA,GAAAtR,IAQAqR,EAAA2qB,aAKA3qB,EAAA2pB,WAKA3pB,EAAAupB,YAKAvpB,EAAAwpB,aASAxpB,EAAA0pB,mBAEA1pB,IAGA,iBAAAjS,MAAAD,UACAC,EAAAD,QAAAkS,KvCq7KC,IAAK,GAAI,IAEV,GAEA,GAEM,SAASjS,EAAQD,GAEtB,YAMA,SAASmc,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAJhHtb,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAKT,IwCxqLKiwB,GACJ,QAAAA,GAAYC,GAAqB,GAAdllB,GAAc1J,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,KAAAqN,GAAA/b,KAAAq9B,GAC/Br9B,KAAKs9B,MAAQA,EACbt9B,KAAKoY,QAAUA,EAGnBilB,GAAOzgB,YxC6qLNhd,EAAQ8B,QwC1qLM27B,GxC8qLT,SAASx9B,EAAQD,EAASM,GAE/B,YA+BA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAAS+7B,GAAmB7jB,GAAO,GAAIjF,MAAMC,QAAQgF,GAAM,CAAE,IAAK,GAAI/Y,GAAI,EAAG68B,EAAO/oB,MAAMiF,EAAIrK,QAAS1O,EAAI+Y,EAAIrK,OAAQ1O,IAAO68B,EAAK78B,GAAK+Y,EAAI/Y,EAAM,OAAO68B,GAAe,MAAO/oB,OAAMgpB,KAAK/jB,GAE1L,QAASqC,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCyCj8KjH,QAAS5I,GAASvB,EAAQtC,GACxB,IAEEA,EAAW1B,WACX,MAAOP,GACP,OAAO,EAOT,MAHIiC,aAAsB5C,QACxB4C,EAAaA,EAAW1B,YAEnBgE,EAAOuB,SAAS7D,GzCo5KxB7O,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQ8B,QAAU9B,EAAQogB,MAAQ9M,MAElC,IAAIyM,GAAiB,WAAc,QAASO,GAAcxG,EAAK/Y,GAAK,GAAIwf,MAAeC,GAAK,EAAUC,GAAK,EAAWC,EAAKpN,MAAW,KAAM,IAAK,GAAiCqN,GAA7BlN,EAAKqG,EAAIuG,OAAOzM,cAAmB4M,GAAMG,EAAKlN,EAAGzB,QAAQ4O,QAAoBL,EAAKlQ,KAAKsQ,EAAGnT,QAAYzM,GAAKwf,EAAK9Q,SAAW1O,GAA3Dyf,GAAK,IAAoE,MAAOnR,GAAOoR,GAAK,EAAMC,EAAKrR,EAAO,QAAU,KAAWmR,GAAM/M,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIgN,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUzG,EAAK/Y,GAAK,GAAI8T,MAAMC,QAAQgF,GAAQ,MAAOA,EAAY,IAAIuG,OAAOzM,WAAY5S,QAAO8Y,GAAQ,MAAOwG,GAAcxG,EAAK/Y,EAAa,MAAM,IAAIub,WAAU,4DAEllBuE,EAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MyClsLjiBpT,EAAA3I,EAAA,GzCssLK4I,EAAcvH,EAAuBsH,GyCrsL1C0pB,EAAAryB,EAAA,IzCysLKgyB,EAAU3wB,EAAuBgxB,GyCxsLtCC,EAAAtyB,EAAA,IzC4sLKuyB,EAAclxB,EAAuBixB,GyC3sL1CtR,EAAAhhB,EAAA,IzC+sLK4d,EAAYvc,EAAuB2f,GyC9sLxCK,EAAArhB,EAAA,IzCktLKshB,EAAWjgB,EAAuBggB,GyChtLnCnE,GAAQ,EAAAoE,EAAA9f,SAAO,mBAGbse,EACJ,QAAAA,GAAY5Q,GAAmB,GAAZC,GAAYX,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAH,CAAGqN,GAAA/b,KAAAggB,GAC7BhgB,KAAKoP,MAAQA,EACbpP,KAAKqP,OAASA,GAKZquB,EzCwtLW,WyCvtLf,QAAAA,GAAY5b,EAAQhD,GAAS,GAAAjQ,GAAA7O,IAAA+b,GAAA/b,KAAA09B,GAC3B19B,KAAK8e,QAAUA,EACf9e,KAAK8hB,OAASA,EACd9hB,KAAKy3B,WAAY,EACjBz3B,KAAKN,KAAOM,KAAK8hB,OAAOjU,QACxB7N,KAAKN,KAAKsoB,iBAAiB,mBAAoB,WAC7CnZ,EAAK4oB,WAAY,IAEnBz3B,KAAKN,KAAKsoB,iBAAiB,iBAAkB,WAC3CnZ,EAAK4oB,WAAY,IAEnBz3B,KAAK29B,OAAS70B,EAAApH,QAAUyK,OAAO,SAAUnM,MAEzCA,KAAKsiB,UAAYtiB,KAAK49B,WAAa,GAAI5d,GAAM,EAAG,IAC/C,QAAS,UAAW,aAAc,WAAY,aAAc,QAAS,QAAQrS,QAAQ,SAACkwB,GACrFhvB,EAAKnP,KAAKsoB,iBAAiB6V,EAAW,WAGpCC,WAAWjvB,EAAKoD,OAAOyoB,KAAZ7rB,EAAuBiP,EAAApc,QAAQqc,QAAQC,MAAO,SAG7Dhe,KAAK8e,QAAQoD,GAAGpE,EAAApc,QAAQkd,OAAOI,cAAe,SAAC1M,EAAMgM,GAC/ChM,IAASwL,EAAApc,QAAQkd,OAAOC,aAAeP,EAAMjP,SAAW,GAC1DR,EAAKoD,OAAO6L,EAAApc,QAAQqc,QAAQW,UAGhC1e,KAAK8e,QAAQoD,GAAGpE,EAAApc,QAAQkd,OAAOyZ,qBAAsB,WACnD,GAAI0F,GAASlvB,EAAK6oB,gBACJ,OAAVqG,GACAA,EAAO1e,MAAM/R,OAASuB,EAAK8uB,OAAOpG,UAEtC1oB,EAAKiQ,QAAQ4G,KAAK5H,EAAApc,QAAQkd,OAAOyD,cAAe,WAC9C,IACExT,EAAKkpB,eAAegG,EAAO1e,MAAM/R,KAAMywB,EAAO1e,MAAM7P,OAAQuuB,EAAOze,IAAIhS,KAAMywB,EAAOze,IAAI9P,QACxF,MAAOwuB,SAGbh+B,KAAKiS,OAAO6L,EAAApc,QAAQqc,QAAQW,QzCqhM7B,MAtTA+B,GAAaid,IACX3kB,IAAK,QACL3L,MAAO,WyC7tLR,IAAIpN,KAAKilB,WAAT,CACA,GAAIgZ,GAAU1rB,SAASC,KAAK0rB,SAC5Bl+B,MAAKN,KAAKkkB,QACVrR,SAASC,KAAK0rB,UAAYD,EAC1Bj+B,KAAKojB,SAASpjB,KAAK49B,gBzCiuLlB7kB,IAAK,SACL3L,MAAO,SyC/tLHuI,EAAQvI,GACbpN,KAAK8hB,OAAO7P,QACZ,IAAIksB,GAAcn+B,KAAK03B,gBACvB,IAAmB,MAAfyG,GAAwBA,EAAYJ,OAAOK,YAAat1B,EAAApH,QAAU2K,MAAMsJ,EAAQ7M,EAAApH,QAAUwK,MAAMwK,OAApG,CACA,GAAIynB,EAAY9e,MAAM/R,OAAStN,KAAK29B,OAAOpG,SAAU,CACnD,GAAIhqB,GAAOzE,EAAApH,QAAU0K,KAAK+xB,EAAY9e,MAAM/R,MAAM,EAClD,IAAY,MAARC,EAAc,MAElB,IAAIA,YAAgBzE,GAAApH,QAAU8K,KAAM,CAClC,GAAIqF,GAAQtE,EAAKmE,MAAMysB,EAAY9e,MAAM7P,OACzCjC,GAAKwE,OAAOnD,aAAa5O,KAAK29B,OAAQ9rB,OAEtCtE,GAAKqB,aAAa5O,KAAK29B,OAAQQ,EAAY9e,MAAM/R,KAEnDtN,MAAK29B,OAAO1vB,SAEdjO,KAAK29B,OAAOhoB,OAAOA,EAAQvI,GAC3BpN,KAAK8hB,OAAO5Q,WACZlR,KAAK+3B,eAAe/3B,KAAK29B,OAAOpG,SAAUv3B,KAAK29B,OAAOpG,SAAS5b,KAAKtM,QACpErP,KAAKiS,azCkuLJ8G,IAAK,YACL3L,MAAO,SyChuLAgC,GAAmB,GAAZC,GAAYX,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAH,EACpBmkB,EAAe7yB,KAAK8hB,OAAOzS,QAC/BD,GAAQ6E,KAAKC,IAAI9E,EAAOyjB,EAAe,GACvCxjB,EAAS4E,KAAKC,IAAI9E,EAAQC,EAAQwjB,EAAe,GAAKzjB,CAClD,IAAAwX,GAAA,OAAQtZ,EAAR,OAAA+wB,EAA+Br+B,KAAK8hB,OAAOsR,KAAKhkB,GAAhDkvB,EAAA3e,EAAA0e,EAAA,GAAejL,EAAfkL,EAAA,GAAqB9uB,EAArB8uB,EAAA,EACJ,IAAY,MAARlL,EAAc,MAAO,KALE,IAAAmL,GAMVnL,EAAK9hB,SAAS9B,GAAQ,GANZgvB,EAAA7e,EAAA4e,EAAA,EAM1BjxB,GAN0BkxB,EAAA,GAMpBhvB,EANoBgvB,EAAA,EAO3B,IAAItgB,GAAQ3L,SAASksB,aACrB,IAAIpvB,EAAS,EAAG,CACd6O,EAAMwgB,SAASpxB,EAAMkC,EADP,IAAAmvB,GAEG3+B,KAAK8hB,OAAOsR,KAAKhkB,EAAQC,GAF5BuvB,EAAAjf,EAAAgf,EAAA,EAGd,IADCvL,EAFawL,EAAA,GAEPpvB,EAFOovB,EAAA,GAGF,MAARxL,EAAc,MAAO,KAHX,IAAAyL,GAIGzL,EAAK9hB,SAAS9B,GAAQ,GAJzBsvB,EAAAnf,EAAAkf,EAAA,EAIbvxB,GAJawxB,EAAA,GAIPtvB,EAJOsvB,EAAA,GAKd5gB,EAAM6gB,OAAOzxB,EAAMkC,GACnBoX,EAAS1I,EAAM8gB,4BACV,CACL,GAAIC,GAAO,OACPC,QACA5xB,aAAgBT,OACd2C,EAASlC,EAAKqO,KAAKtM,QACrB6O,EAAMwgB,SAASpxB,EAAMkC,GACrB0O,EAAM6gB,OAAOzxB,EAAMkC,EAAS,KAE5B0O,EAAMwgB,SAASpxB,EAAMkC,EAAS,GAC9B0O,EAAM6gB,OAAOzxB,EAAMkC,GACnByvB,EAAO,SAETC,EAAOhhB,EAAM8gB,0BAEbE,EAAO9L,EAAKvlB,QAAQmxB,wBAChBxvB,EAAS,IAAGyvB,EAAO,UAEzBrY,GACEuY,OAAQD,EAAKC,OACbC,KAAMF,EAAKD,GACXI,MAAO,EACPC,IAAKJ,EAAKI,KAGd,GAAIC,GAAkBv/B,KAAKN,KAAKqO,WAAWixB,uBAC3C,QACEI,KAAMxY,EAAOwY,KAAOG,EAAgBH,KACpCI,MAAO5Y,EAAOwY,KAAOxY,EAAOyY,MAAQE,EAAgBH,KACpDE,IAAK1Y,EAAO0Y,IAAMC,EAAgBD,IAClCG,OAAQ7Y,EAAO0Y,IAAM1Y,EAAOuY,OAASI,EAAgBD,IACrDH,OAAQvY,EAAOuY,OACfE,MAAOzY,EAAOyY,UzCgwLftmB,IAAK,iBACL3L,MAAO,WyC5vLR,GAAI2U,GAAYxP,SAAS4L,cACzB,IAAiB,MAAb4D,GAAqBA,EAAU2d,YAAc,EAAG,MAAO,KAC3D,IAAIvB,GAAcpc,EAAU4d,WAAW,EACvC,IAAmB,MAAfxB,EAAqB,MAAO,KAChC,KAAK7qB,EAAStT,KAAKN,KAAMy+B,EAAYyB,kBAC/BzB,EAAYC,YAAc9qB,EAAStT,KAAKN,KAAMy+B,EAAY0B,cAC9D,MAAO,KAET,IAAI3hB,IACFmB,OAAS/R,KAAM6wB,EAAYyB,eAAgBpwB,OAAQ2uB,EAAY2B,aAC/DxgB,KAAOhS,KAAM6wB,EAAY0B,aAAcrwB,OAAQ2uB,EAAY4B,WAC3DhC,OAAQI,EAkBV,QAhBCjgB,EAAMmB,MAAOnB,EAAMoB,KAAK3R,QAAQ,SAAS2D,GAExC,IADA,GAAIhE,GAAOgE,EAAShE,KAAMkC,EAAS8B,EAAS9B,SACnClC,YAAgBT,QAASS,EAAKI,WAAW2B,OAAS,GACzD,GAAI/B,EAAKI,WAAW2B,OAASG,EAC3BlC,EAAOA,EAAKI,WAAW8B,GACvBA,EAAS,MACJ,IAAIlC,EAAKI,WAAW2B,SAAWG,EAIpC,KAHAlC,GAAOA,EAAKuqB,UACZroB,EAASlC,YAAgBT,MAAOS,EAAKqO,KAAKtM,OAAS/B,EAAKI,WAAW2B,OAAS,EAKhFiC,EAAShE,KAAOA,EAAMgE,EAAS9B,OAASA,IAE1C4N,EAAM4iB,KAAK,iBAAkB9hB,GACtBA,KzCgwLNnF,IAAK,WACL3L,MAAO,WyC9vLC,GAAAsU,GAAA1hB,KACLke,EAAQle,KAAK03B,gBACjB,IAAa,MAATxZ,EAAe,OAAQ,KAAM,KACjC,IAAI+hB,KAAc/hB,EAAMmB,MAAM/R,KAAM4Q,EAAMmB,MAAM7P,QAC3C0O,GAAM6f,OAAOK,WAChB6B,EAAUhwB,MAAMiO,EAAMoB,IAAIhS,KAAM4Q,EAAMoB,IAAI9P,QAE5C,IAAI0wB,GAAUD,EAAU9rB,IAAI,SAAC7C,GAAa,GAAA6uB,GAAAxgB,EACnBrO,EADmB,GACnChE,EADmC6yB,EAAA,GAC7B3wB,EAD6B2wB,EAAA,GAEpC5yB,EAAOzE,EAAApH,QAAU0K,KAAKkB,GAAM,GAC5B8B,EAAQ7B,EAAKiC,OAAOkS,EAAKI,OAC7B,OAAe,KAAXtS,EACKJ,EACE7B,YAAgBzE,GAAApH,QAAU4K,UAC5B8C,EAAQ7B,EAAK8B,SAEbD,EAAQ7B,EAAK6B,MAAM9B,EAAMkC,KAGhC6P,EAAQpL,KAAKC,IAAL7S,MAAA4S,KAAAspB,EAAY2C,IAAU5gB,EAAMrL,KAAK4L,IAALxe,MAAA4S,KAAAspB,EAAY2C,GACpD,QAAQ,GAAIlgB,GAAMX,EAAOC,EAAID,GAAQnB,MzCuwLpCnF,IAAK,WACL3L,MAAO,WyCpwLR,MAAOmF,UAAS6tB,gBAAkBpgC,KAAKN,QzCwwLtCqZ,IAAK,iBACL3L,MAAO,WyCtwL6B,GAAxB8Q,GAAwBxP,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAhB1O,KAAKsiB,SAC1B,IAAa,MAATpE,EAAJ,CACA,GAAI0I,GAAS5mB,KAAKukB,UAAUrG,EAAM9O,MAAO8O,EAAM7O,OAC/C,IAAc,MAAVuX,EACJ,GAAI5mB,KAAKN,KAAK2gC,aAAezZ,EAAO6Y,OAAQ,IAAA1M,GAC3B/yB,KAAK8hB,OAAOyI,KAAKtW,KAAKC,IAAIgK,EAAM9O,MAAQ8O,EAAM7O,OAAQrP,KAAK8hB,OAAOzS,SAAS,IADhD2jB,EAAArT,EAAAoT,EAAA,GACrCxI,EADqCyI,EAAA,EAE1ChzB,MAAKN,KAAKw+B,UAAY3T,EAAK1c,QAAQyyB,UAAY/V,EAAK1c,QAAQwyB,aAAergC,KAAKN,KAAK2gC,iBAChF,IAAIzZ,EAAO0Y,IAAM,EAAG,IAAAvL,GACV/zB,KAAK8hB,OAAOyI,KAAKtW,KAAKC,IAAIgK,EAAM9O,MAAOpP,KAAK8hB,OAAOzS,SAAS,IADlD2kB,EAAArU,EAAAoU,EAAA,GACpBxJ,EADoByJ,EAAA,EAEzBh0B,MAAKN,KAAKw+B,UAAY3T,EAAK1c,QAAQyyB,ezCkxLpCvnB,IAAK,iBACL3L,MAAO,SyC/wLK0G,EAAWgsB,GAA0E,GAA7DS,GAA6D7xB,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAnDoF,EAAWisB,EAAwCrxB,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAA5BoxB,EAAanuB,EAAejD,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,IAAAA,UAAA,EAElG,IADA0O,EAAM4iB,KAAK,iBAAkBlsB,EAAWgsB,EAAaS,EAASR,GAC7C,MAAbjsB,GAA8C,MAAxB9T,KAAKN,KAAKqO,YAA8C,MAAxB+F,EAAU/F,YAA4C,MAAtBwyB,EAAQxyB,WAAlG,CAGA,GAAIgU,GAAYxP,SAAS4L,cACzB,IAAiB,MAAb4D,EACJ,GAAiB,MAAbjO,EAAmB,CAChB9T,KAAKilB,YAAYjlB,KAAKN,KAAKkkB,OAChC,IAAIua,GAAcn+B,KAAK03B,gBACvB,IAAmB,MAAfyG,GAAuBxsB,GACvBmC,IAAcqqB,EAAY9e,MAAM/R,MAAQwyB,IAAgB3B,EAAY9e,MAAM7P,QAC1E+wB,IAAYpC,EAAY7e,IAAIhS,MAAQyyB,IAAc5B,EAAY7e,IAAI9P,OAAQ,CAC5E,GAAI0O,GAAQ3L,SAASksB,aACrBvgB,GAAMwgB,SAAS5qB,EAAWgsB,GAC1B5hB,EAAM6gB,OAAOwB,EAASR,GACtBhe,EAAUye,kBACVze,EAAU0e,SAASviB,QAGrB6D,GAAUye,kBACVxgC,KAAKN,KAAKikB,OACVpR,SAASC,KAAKoR,YzCqxLf7K,IAAK,WACL3L,MAAO,SyClxLD8Q,GAAoD,GAAAmF,GAAArjB,KAA7C2R,EAA6CjD,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,IAAAA,UAAA,GAA9BgP,EAA8BhP,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAArBoP,EAAApc,QAAQqc,QAAQqB,GACjC,iBAAVzN,KACT+L,EAAS/L,EACTA,GAAQ,GAEVyL,EAAM4iB,KAAK,WAAY9hB,GACV,MAATA,GAAe,WACjB,GAAIgiB,GAAUhiB,EAAMkgB,WAAalgB,EAAM9O,QAAU8O,EAAM9O,MAAO8O,EAAM9O,MAAQ8O,EAAM7O,QAC9ErO,KACA6xB,EAAexP,EAAKvB,OAAOzS,QAC/B6wB,GAAQvyB,QAAQ,SAACyB,EAAOzO,GACtByO,EAAQ6E,KAAKC,IAAI2e,EAAe,EAAGzjB,EAC/B,IAAA9B,GAAA,OAAAozB,EAAuBrd,EAAKvB,OAAOsR,KAAKhkB,GAAxCuxB,EAAAhhB,EAAA+gB,EAAA,GAAOtN,EAAPuN,EAAA,GAAanxB,EAAbmxB,EAAA,GAFwBC,EAGXxN,EAAK9hB,SAAS9B,EAAc,IAAN7O,GAHXkgC,EAAAlhB,EAAAihB,EAAA,EAG3BtzB,GAH2BuzB,EAAA,GAGrBrxB,EAHqBqxB,EAAA,GAI5B7/B,EAAKiP,KAAK3C,EAAMkC,KAEdxO,EAAKqO,OAAS,IAChBrO,EAAOA,EAAKM,OAAON,IAErBqiB,EAAK0U,eAAL12B,MAAAgiB,EAAAka,EAAuBv8B,GAAvBM,QAA6BqQ,QAE7B3R,KAAK+3B,eAAe,MAEtB/3B,KAAKiS,OAAOyL,MzCsyLX3E,IAAK,SACL3L,MAAO,WyCpyL4B,GAA/BsQ,GAA+BhP,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAtBoP,EAAApc,QAAQqc,QAAQC,KAC1BmgB,SAAa2C,EAAW9gC,KAAKsiB,UADGye,EAEJ/gC,KAAK6kB,WAFDmc,EAAArhB,EAAAohB,EAAA,EAMpC,IAJC/gC,KAAKsiB,UAF8B0e,EAAA,GAEnB7C,EAFmB6C,EAAA,GAGd,MAAlBhhC,KAAKsiB,YACPtiB,KAAK49B,WAAa59B,KAAKsiB,aAEpB,EAAAmQ,EAAA/wB,SAAMo/B,EAAU9gC,KAAKsiB,WAAY,IAAA3D,IAC/B3e,KAAKy3B,WAA4B,MAAf0G,GAAuBA,EAAYJ,OAAOK,WAAaD,EAAY9e,MAAM/R,OAAStN,KAAK29B,OAAOpG,UACnHv3B,KAAK29B,OAAO3F,SAEd,IAAIh3B,IAAQ8c,EAAApc,QAAQkd,OAAO0Z,kBAAkB,EAAApG,EAAAxwB,SAAM1B,KAAKsiB,YAAY,EAAA4P,EAAAxwB,SAAMo/B,GAAWpjB,EAErF,KADAiB,EAAA3e,KAAK8e,SAAQC,KAAb1d,MAAAsd,GAAkBb,EAAApc,QAAQkd,OAAOI,eAAjC1d,OAAmDN,IAC/C0c,IAAWI,EAAApc,QAAQqc,QAAQW,OAAQ,IAAAO,IACrCA,EAAAjf,KAAK8e,SAAQC,KAAb1d,MAAA4d,EAAqBje,SzCwzLnB08B,IAkBT99B,GyCnzLQogB,QzCozLRpgB,EyCpzL4B8B,QAAbg8B,GzCwzLV,SAAS79B,EAAQD,GAEtB,YAQA,SAASmc,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCANhHtb,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAIqT,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,M0C3mM3hBglB,E1C+mMO,W0C9mMX,QAAAA,GAAY3D,EAAOllB,GAAS2D,EAAA/b,KAAAihC,GAC1BjhC,KAAKs9B,MAAQA,EACbt9B,KAAKoY,QAAUA,EACfpY,KAAKC,W1CwoMN,MApBAwgB,GAAawgB,IACXloB,IAAK,OACL3L,MAAO,W0CnnMH,GAAAyB,GAAA7O,IACLY,QAAO2X,KAAKvY,KAAKoY,QAAQnY,SAAS0N,QAAQ,SAACyC,GACf,MAAtBvB,EAAK5O,QAAQmQ,IACfvB,EAAKmT,UAAU5R,Q1C0nMlB2I,IAAK,YACL3L,MAAO,S0CtnMAgD,GACR,GAAI+M,GAAcnd,KAAKs9B,MAAMjvB,YAAYwO,OAAvB,WAAyCzM,EAE3D,OADApQ,MAAKC,QAAQmQ,GAAQ,GAAI+M,GAAYnd,KAAKs9B,MAAOt9B,KAAKoY,QAAQnY,QAAQmQ,QAC/DpQ,KAAKC,QAAQmQ,O1C0nMd6wB,I0CvnMVA,GAAMrkB,UACJ3c,YAEFghC,EAAMC,QACJx/B,QAAWu/B,G1C6nMZrhC,EAAQ8B,Q0CznMMu/B,G1C6nMT,SAASphC,EAAQD,EAASM,GAE/B,YAcA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe;AAAgE,OAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAlBjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,G2C/pMV,IAAAvE,GAAA3I,EAAA,G3CoqMK4I,EAAcvH,EAAuBsH,G2CnqM1CI,EAAA/I,EAAA,I3CuqMKgJ,EAAU3H,EAAuB0H,G2CpqMhCqD,E3C8qMW,SAAU60B,GAGxB,QAAS70B,KAGP,MAFAyP,GAAgB/b,KAAMsM,GAEfkoB,EAA2Bx0B,MAAOsM,EAAUyoB,WAAan0B,OAAO00B,eAAehpB,IAAYjL,MAAMrB,KAAM0O,YAGhH,MARAimB,GAAUroB,EAAW60B,GAQd70B,G2CvrMcxD,EAAApH,QAAU4K,UAClCA,GAAUoE,iBAAkBxH,EAAAxH,QAAAuH,EAAAwB,WAAoB6B,G3C2rM/C1M,EAAQ8B,Q2CxrMM4K,G3C4rMT,SAASzM,EAAQD,EAASM,GAE/B,YAoCA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,G4CxuMle,QAASuM,GAAO7zB,GACd,MAAQA,yBAAyBA,0B5C+rMlC3M,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAIuS,GAAiB,WAAc,QAASO,GAAcxG,EAAK/Y,GAAK,GAAIwf,MAAeC,GAAK,EAAUC,GAAK,EAAWC,EAAKpN,MAAW,KAAM,IAAK,GAAiCqN,GAA7BlN,EAAKqG,EAAIuG,OAAOzM,cAAmB4M,GAAMG,EAAKlN,EAAGzB,QAAQ4O,QAAoBL,EAAKlQ,KAAKsQ,EAAGnT,QAAYzM,GAAKwf,EAAK9Q,SAAW1O,GAA3Dyf,GAAK,IAAoE,MAAOnR,GAAOoR,GAAK,EAAMC,EAAKrR,EAAO,QAAU,KAAWmR,GAAM/M,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIgN,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUzG,EAAK/Y,GAAK,GAAI8T,MAAMC,QAAQgF,GAAQ,MAAOA,EAAY,IAAIuG,OAAOzM,WAAY5S,QAAO8Y,GAAQ,MAAOwG,GAAcxG,EAAK/Y,EAAa,MAAM,IAAIub,WAAU,4DAEllBuE,EAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,I4ChtM7drsB,EAAA3I,EAAA,G5CotMK4I,EAAcvH,EAAuBsH,G4CntM1C8V,EAAAze,EAAA,I5CutMK+e,EAAY1d,EAAuBod,G4CttMxC1V,EAAA/I,EAAA,I5C0tMKgJ,EAAU3H,EAAuB0H,G4CztMtCE,EAAAjJ,EAAA,I5C6tMKkJ,EAAU7H,EAAuB4H,G4C5tMtCE,EAAAnJ,EAAA,I5CguMKoJ,EAAc/H,EAAuB8H,G4C/tM1C3F,EAAAxD,EAAA,I5CmuMKyD,EAASpC,EAAuBmC,G4C3tM/BgJ,E5CyuMQ,SAAU20B,G4CxuMtB,QAAA30B,GAAYmB,EAASmP,GAAQjB,EAAA/b,KAAA0M,EAAA,IAAAmC,GAAA2lB,EAAAx0B,MAAA0M,EAAAqoB,WAAAn0B,OAAA00B,eAAA5oB,IAAAnM,KAAAP,KACrB6N,GADqB,OAE3BgB,GAAKiQ,QAAU9B,EAAO8B,QAClBrK,MAAMC,QAAQsI,EAAO1E,aACvBzJ,EAAKyJ,UAAY0E,EAAO1E,UAAUzH,OAAO,SAASyH,EAAW3C,GAE3D,MADA2C,GAAU3C,IAAU,EACb2C,QAGXzJ,EAAKqC,WACLrC,EAAK4U,SAVsB5U,E5Cu4M5B,MA9JA8lB,GAAUjoB,EAAQ20B,GAmBlB5gB,EAAa/T,IACXqM,IAAK,WACL3L,MAAO,S4CjvMDgC,EAAOC,GAAQ,GAAAiyB,GACAthC,KAAKuqB,KAAKnb,GADVmyB,EAAA5hB,EAAA2hB,EAAA,GACjBE,EADiBD,EAAA,GACV/xB,EADU+xB,EAAA,GAAAE,EAEPzhC,KAAKuqB,KAAKnb,EAAQC,GAFXqyB,EAAA/hB,EAAA8hB,EAAA,GAEjBE,EAFiBD,EAAA,EAItB,IADA1M,EAAAtoB,EAAA7L,UAAAk0B,WAAAn0B,OAAA00B,eAAA5oB,EAAA7L,WAAA,WAAAb,MAAAO,KAAAP,KAAeoP,EAAOC,GACV,MAARsyB,GAAgBH,IAAUG,GAAQnyB,EAAS,KACzCgyB,8BAAkCG,2BAA6B,CAC/DA,wBACFA,EAAKxyB,SAASwyB,EAAKtyB,SAAW,EAAG,EAEnC,IAAIuG,GAAM+rB,EAAK7yB,SAASE,eAAd5F,GAAA1H,QAAsC,KAAOigC,EAAK7yB,SAASE,IACrEwyB,GAAMzwB,aAAa4wB,EAAM/rB,GACzB4rB,EAAMlyB,SAERtP,KAAKkR,c5C0vMJ6H,IAAK,SACL3L,MAAO,W4CxvMa,GAAhBsW,KAAgBhV,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,KAAAA,UAAA,EACrB1O,MAAK6N,QAAQ6K,aAAa,kBAAmBgL,M5C6vM5C3K,IAAK,WACL3L,MAAO,S4C3vMDgC,EAAOC,EAAQsG,EAAQvI,IACR,MAAlBpN,KAAKsY,WAAsBtY,KAAKsY,UAAU3C,MAC9Cqf,EAAAtoB,EAAA7L,UAAAk0B,WAAAn0B,OAAA00B,eAAA5oB,EAAA7L,WAAA,WAAAb,MAAAO,KAAAP,KAAeoP,EAAOC,EAAQsG,EAAQvI,GACtCpN,KAAKkR,e5C8vMJ6H,IAAK,WACL3L,MAAO,S4C5vMDgC,EAAOhC,EAAOkD,GACrB,GAAW,MAAPA,GAAiC,MAAlBtQ,KAAKsY,WAAsBtY,KAAKsY,UAAUlL,GAA7D,CACA,GAAIgC,GAASpP,KAAKqP,SAChB,GAAW,MAAPiB,GAAgE,MAAjDxH,EAAApH,QAAU2K,MAAMe,EAAOtE,EAAApH,QAAUwK,MAAMwK,OAAgB,CACxE,GAAInJ,GAAOzE,EAAApH,QAAUyK,OAAOnM,KAAKyQ,QAAQU,aACzCnR,MAAK8N,YAAYP,GACN,MAAP+C,GAAelD,EAAMoa,SAAS,QAChCpa,EAAQA,EAAMnM,MAAM,GAAG,IAEzBsM,EAAK8C,SAAS,EAAGjD,EAAOkD,OACnB,CACL,GAAI4U,GAAQpc,EAAApH,QAAUyK,OAAOiB,EAAOkD,EACpCtQ,MAAK8N,YAAYoX,OAGnB8P,GAAAtoB,EAAA7L,UAAAk0B,WAAAn0B,OAAA00B,eAAA5oB,EAAA7L,WAAA,WAAAb,MAAAO,KAAAP,KAAeoP,EAAOhC,EAAOkD,EAE/BtQ,MAAKkR,e5C+vMJ6H,IAAK,eACL3L,MAAO,S4C7vMGG,EAAMqI,GACjB,GAAIrI,EAAKkD,QAAQiF,QAAU5M,EAAApH,QAAUwK,MAAM4N,YAAa,CACtD,GAAI7D,GAAUnN,EAAApH,QAAUyK,OAAOnM,KAAKyQ,QAAQU,aAC5C8E,GAAQnI,YAAYP,GACpBA,EAAO0I,EAET+e,EAAAtoB,EAAA7L,UAAAk0B,WAAAn0B,OAAA00B,eAAA5oB,EAAA7L,WAAA,eAAAb,MAAAO,KAAAP,KAAmBuN,EAAMqI,M5CgwMxBmD,IAAK,OACL3L,MAAO,S4C9vMLgC,GACH,MAAOpP,MAAKoR,KAAKhC,GAAO8Z,QAAU,MAAM,M5CiwMvCnQ,IAAK,OACL3L,MAAO,S4C/vMLgC,GACH,MAAIA,KAAUpP,KAAKqP,SACVrP,KAAKuqB,KAAKnb,EAAQ,GAEpBpP,KAAKyP,WAAW2xB,EAAQhyB,M5CkwM9B2J,IAAK,QACL3L,MAAO,W4ChwMkC,GAAtCgC,GAAsCV,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAA9B,EAAGW,EAA2BX,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAlBoB,OAAOC,UAC3B6xB,EAAW,QAAXA,GAAYr0B,EAAM6B,EAAOC,GAC3B,GAAIgkB,MAAYrjB,EAAaX,CAS7B,OARA9B,GAAKuB,SAASS,UAAUH,EAAOC,EAAQ,SAASzB,EAAOwB,EAAOC,GACxD+xB,EAAOxzB,GACTylB,EAAMpjB,KAAKrC,GACFA,YAAiB9E,GAAApH,QAAU4K,YACpC+mB,EAAQA,EAAM/xB,OAAOsgC,EAASh0B,EAAOwB,EAAOY,KAE9CA,GAAcX,IAETgkB,EAET,OAAOuO,GAAS5hC,KAAMoP,EAAOC,M5CuwM5B0J,IAAK,WACL3L,MAAO,W4CrwMe,GAAhB8E,GAAgBxD,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,KACnB1O,MAAK8yB,SAAU,IACnBkC,EAAAtoB,EAAA7L,UAAAk0B,WAAAn0B,OAAA00B,eAAA5oB,EAAA7L,WAAA,WAAAb,MAAAO,KAAAP,KAAekS,GACXA,EAAU7C,OAAS,GACrBrP,KAAK8e,QAAQC,KAAKE,EAAAvd,QAAQkd,OAAOkZ,gBAAiB5lB,O5C2wMnD6G,IAAK,OACL3L,MAAO,S4CxwMLgC,GACH,MAAO4lB,GAAAtoB,EAAA7L,UAAAk0B,WAAAn0B,OAAA00B,eAAA5oB,EAAA7L,WAAA,OAAAb,MAAAO,KAAAP,KAAWoP,GAAOnO,MAAM,M5C2wM9B8X,IAAK,SACL3L,MAAO,S4CzwMH8E,GACL,GAAIlS,KAAK8yB,SAAU,EAAnB,CACA,GAAIpV,GAASuB,EAAAvd,QAAQqc,QAAQC,IACJ,iBAAd9L,KACTwL,EAASxL,GAENuC,MAAMC,QAAQxC,KACjBA,EAAYlS,KAAKsa,SAASI,eAExBxI,EAAU7C,OAAS,GACrBrP,KAAK8e,QAAQC,KAAKE,EAAAvd,QAAQkd,OAAOyZ,qBAAsB3a,EAAQxL,GAEjE8iB,EAAAtoB,EAAA7L,UAAAk0B,WAAAn0B,OAAA00B,eAAA5oB,EAAA7L,WAAA,SAAAb,MAAAO,KAAAP,KAAakS,EAAU5Q,YACnB4Q,EAAU7C,OAAS,GACrBrP,KAAK8e,QAAQC,KAAKE,EAAAvd,QAAQkd,OAAOyD,cAAe3E,EAAQxL,Q5C8wMpDxF,G4Cx4MW5D,EAAApH,QAAUgL,OA8H/BA,GAAOkD,SAAW,SAClBlD,EAAOsI,UAAY,YACnBtI,EAAO8H,QAAU,MACjB9H,EAAOyE,aAAe,QACtBzE,EAAOgE,iBAAkBxH,EAAAxH,QAAAuH,EAAAwB,WAAAnB,EAAA5H,S5C+wMxB9B,EAAQ8B,Q4C5wMMgL,G5CgxMT,SAAS7M,EAAQD,EAASM,GAE/B,YA2CA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASqa,GAAgBra,EAAKuX,EAAK3L,GAAiK,MAApJ2L,KAAOvX,GAAOZ,OAAOuM,eAAe3L,EAAKuX,GAAO3L,MAAOA,EAAOkH,YAAY,EAAMC,cAAc,EAAMuH,UAAU,IAAkBta,EAAIuX,GAAO3L,EAAgB5L,EAE3M,QAAS+7B,GAAmB7jB,GAAO,GAAIjF,MAAMC,QAAQgF,GAAM,CAAE,IAAK,GAAI/Y,GAAI,EAAG68B,EAAO/oB,MAAMiF,EAAIrK,QAAS1O,EAAI+Y,EAAIrK,OAAQ1O,IAAO68B,EAAK78B,GAAK+Y,EAAI/Y,EAAM,OAAO68B,GAAe,MAAO/oB,OAAMgpB,KAAK/jB,GAE1L,QAASqC,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,G6Ch0Mle,QAASgN,GAAav0B,GACpB,GAAIA,EAAK4J,WAAaxE,KAAKovB,aAAc,QACzC,IAAMC,GAAU,qBAChB,OAAOz0B,GAAKy0B,KAAaz0B,EAAKy0B,GAAWC,OAAOC,iBAAiB30B,IAGnE,QAAS40B,GAAc5jB,EAAO7C,GAE5B,IAAK,GADD0mB,GAAU,GACLxhC,EAAI2d,EAAM+H,IAAIhX,OAAS,EAAG1O,GAAK,GAAKwhC,EAAQ9yB,OAASoM,EAAKpM,SAAU1O,EAAG,CAC9E,GAAI0nB,GAAM/J,EAAM+H,IAAI1lB,EACpB,IAAyB,gBAAd0nB,GAAG/B,OAAqB,KACnC6b,GAAU9Z,EAAG/B,OAAS6b,EAExB,MAAOA,GAAQlhC,OAAM,EAAGwa,EAAKpM,UAAYoM,EAG3C,QAAS2lB,GAAO9zB,GACd,GAA+B,IAA3BA,EAAKI,WAAW2B,OAAc,OAAO,CACzC,IAAIuK,GAAQioB,EAAav0B,EACzB,QAAQ,QAAS,aAAayH,QAAQ6E,EAAMwoB,UAAW,EAGzD,QAASC,GAAW1sB,EAAQrI,EAAMgR,GAChC,MAAOA,GAAMkI,SAAQ,GAAAvI,GAAAvc,SAAYgnB,OAAOpK,EAAMjP,SAAzBwM,KAAsClG,GAAS,KAGtE,QAAS2sB,GAAgBh1B,EAAMgR,GAC7B,GAAI9H,GAAa1N,EAAApH,QAAUoL,WAAWC,UAAUwL,KAAKjL,GACjDwJ,EAAUhO,EAAApH,QAAUoL,WAAWE,MAAMuL,KAAKjL,GAC1CuL,EAAS/P,EAAApH,QAAUoL,WAAWG,MAAMsL,KAAKjL,GACzCuK,IAmBJ,OAlBArB,GAAWlV,OAAOwV,GAASxV,OAAOuX,GAAQlL,QAAQ,SAACyC,GACjD,GAAI0I,GAAOhQ,EAAApH,QAAU2K,MAAM+D,EAAMtH,EAAApH,QAAUwK,MAAMsJ,UACrC,OAARsD,IACFjB,EAAQiB,EAAKxB,UAAYwB,EAAK1L,MAAME,GAChCuK,EAAQiB,EAAKxB,aAEgB,MAA/BirB,EAAsBnyB,KACxB0I,EAAOypB,EAAsBnyB,GAC7ByH,EAAQiB,EAAKxB,UAAYwB,EAAK1L,MAAME,IAEP,MAA3Bk1B,EAAkBpyB,KACpB0I,EAAO0pB,EAAkBpyB,GACzByH,EAAQiB,EAAKxB,UAAYwB,EAAK1L,MAAME,OAGpC1M,OAAO2X,KAAKV,GAASxI,OAAS,IAChCiP,EAAQA,EAAMkI,SAAQ,GAAAvI,GAAAvc,SAAYgnB,OAAOpK,EAAMjP,SAAUwI,KAEpDyG,EAGT,QAASmkB,GAAUn1B,EAAMgR,GACvB,GAAInI,GAAQrN,EAAApH,QAAU2K,MAAMiB,EAC5B,IAAa,MAAT6I,EAAe,MAAOmI,EAC1B,IAAInI,EAAMtV,oBAAqBiI,GAAApH,QAAU+K,MAAO,CAC9C,GAAIyY,MACA9X,EAAQ+I,EAAM/I,MAAME,EACX,OAATF,IACF8X,EAAM/O,EAAMvG,UAAYxC,EACxBkR,GAAQ,GAAAL,GAAAvc,SAAY4kB,OAAOpB,EAAO/O,EAAM0B,QAAQvK,SAE7C,IAA6B,kBAAlB6I,GAAM0B,QAAwB,CAC9C,GAAIA,QAAa1B,EAAMvG,SAAWuG,EAAM0B,QAAQvK,GAChDgR,GAAQA,EAAMkI,SAAQ,GAAAvI,GAAAvc,SAAYgnB,OAAOpK,EAAMjP,SAAUwI,IAE3D,MAAOyG,GAGT,QAASokB,GAAWp1B,EAAMgR,GAIxB,MAHK4jB,GAAc5jB,EAAO,OACxBA,EAAMgI,OAAO,MAERhI,EAGT,QAASqkB,KACP,MAAO,IAAA1kB,GAAAvc,QAGT,QAASkhC,GAAat1B,EAAMgR,GAI1B,MAHI8iB,GAAO9zB,KAAU40B,EAAc5jB,EAAO,OACxCA,EAAMgI,OAAO,MAERhI,EAGT,QAASukB,GAAav1B,EAAMgR,GAC1B,GAAI8iB,EAAO9zB,IAAoC,MAA3BA,EAAKw1B,qBAA+BZ,EAAc5jB,EAAO,QAAS,CACpF,GAAIykB,GAAaz1B,EAAK+yB,aAAe2C,WAAWnB,EAAav0B,GAAM21B,WAAaD,WAAWnB,EAAav0B,GAAM41B,aAC1G51B,GAAKw1B,mBAAmBxC,UAAYhzB,EAAKgzB,UAAuB,IAAXyC,GACvDzkB,EAAMgI,OAAO,MAGjB,MAAOhI,GAGT,QAAS6kB,GAAY71B,EAAMgR,GACzB,GAAIzG,MACA+B,EAAQtM,EAAKsM,SAUjB,OATIA,GAAMwpB,YAAgD,SAAlCvB,EAAav0B,GAAM81B,aACzCvrB,EAAQwrB,MAAO,GAEbziC,OAAO2X,KAAKV,GAASxI,OAAS,IAChCiP,EAAQA,EAAMkI,SAAQ,GAAAvI,GAAAvc,SAAYgnB,OAAOpK,EAAMjP,SAAUwI,KAEvDmrB,WAAWppB,EAAM0pB,YAAc,GAAK,IACtChlB,GAAQ,GAAAL,GAAAvc,SAAY4kB,OAAO,MAAMhlB,OAAOgd,IAEnCA,EAGT,QAASilB,GAAUj2B,EAAMgR,GACvB,GAAI7C,GAAOnO,EAAKqO,IAEhB,IAAgC,QAA5BrO,EAAKS,WAAWyG,QAClB,MAAO8J,GAAMgI,OAAO7K,EAAK9B,OAE3B,KAAKkoB,EAAav0B,EAAKS,YAAYy1B,WAAWrgB,WAAW,OAAQ,CAE/D,GAAIsgB,GAAW,SAASC,EAAUvtB,GAEhC,MADAA,GAAQA,EAAM3E,QAAQ,aAAc,IAC7B2E,EAAM9G,OAAS,GAAKq0B,EAAW,IAAMvtB,EAE9CsF,GAAOA,EAAKjK,QAAQ,QAAS,KAAKA,QAAQ,MAAO,KACjDiK,EAAOA,EAAKjK,QAAQ,SAAUiyB,EAAS/I,KAAK+I,GAAU,KACzB,MAAxBn2B,EAAKwN,iBAA2BsmB,EAAO9zB,EAAKS,aACpB,MAAxBT,EAAKwN,iBAA2BsmB,EAAO9zB,EAAKwN,oBAC/CW,EAAOA,EAAKjK,QAAQ,OAAQiyB,EAAS/I,KAAK+I,GAAU,MAE7B,MAApBn2B,EAAKyF,aAAuBquB,EAAO9zB,EAAKS,aACpB,MAApBT,EAAKyF,aAAuBquB,EAAO9zB,EAAKyF,gBAC3C0I,EAAOA,EAAKjK,QAAQ,OAAQiyB,EAAS/I,KAAK+I,GAAU,KAGxD,MAAOnlB,GAAMgI,OAAO7K,G7CsoMrB7a,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQ2jC,UAAY3jC,EAAQijC,aAAejjC,EAAQgjC,aAAehjC,EAAQ6iC,UAAY7iC,EAAQ0iC,gBAAkB1iC,EAAQ8B,QAAUwR,MAElI,IAAIyM,GAAiB,WAAc,QAASO,GAAcxG,EAAK/Y,GAAK,GAAIwf,MAAeC,GAAK,EAAUC,GAAK,EAAWC,EAAKpN,MAAW,KAAM,IAAK,GAAiCqN,GAA7BlN,EAAKqG,EAAIuG,OAAOzM,cAAmB4M,GAAMG,EAAKlN,EAAGzB,QAAQ4O,QAAoBL,EAAKlQ,KAAKsQ,EAAGnT,QAAYzM,GAAKwf,EAAK9Q,SAAW1O,GAA3Dyf,GAAK,IAAoE,MAAOnR,GAAOoR,GAAK,EAAMC,EAAKrR,EAAO,QAAU,KAAWmR,GAAM/M,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIgN,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUzG,EAAK/Y,GAAK,GAAI8T,MAAMC,QAAQgF,GAAQ,MAAOA,EAAY,IAAIuG,OAAOzM,WAAY5S,QAAO8Y,GAAQ,MAAOwG,GAAcxG,EAAK/Y,EAAa,MAAM,IAAIub,WAAU,4DAEllBuE,EAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,M6C76MjiB8E,EAAA7gB,EAAA,I7Ci7MK+d,EAAe1c,EAAuBwf,G6Ch7M3ClY,EAAA3I,EAAA,G7Co7MK4I,EAAcvH,EAAuBsH,G6Cn7M1CE,EAAA7I,EAAA,I7Cu7MK8I,EAAUzH,EAAuBwH,G6Ct7MtCwY,EAAArhB,EAAA,I7C07MKshB,EAAWjgB,EAAuBggB,G6Cz7MvCJ,EAAAjhB,EAAA,I7C67MKkhB,EAAW7f,EAAuB4f,G6C37MvCtf,EAAA3B,EAAA,IACAoC,EAAApC,EAAA,IACAqC,EAAArC,EAAA,IACA4B,EAAA5B,EAAA,IACAsC,EAAAtC,EAAA,IACAuC,EAAAvC,EAAA,IAEIkd,GAAQ,EAAAoE,EAAA9f,SAAO,mBAEbiiC,IACHjxB,KAAKkxB,UAAWL,IAChB,KAAMb,IACNhwB,KAAKovB,aAAcc,IACnBlwB,KAAKovB,aAAcW,IACnB/vB,KAAKovB,aAAce,IACnBnwB,KAAKovB,aAAcQ,IACnB5vB,KAAKovB,aAAcqB,IACnB,IAAKd,EAAW3H,KAAK2H,EAAY,UACjC,IAAKA,EAAW3H,KAAK2H,EAAY,YACjC,QAASM,IAGNJ,GAAwB1gC,EAAAgiC,eAAA/hC,EAAAoD,oBAG5B2L,OAAO,SAASC,EAAMgI,GAEtB,MADAhI,GAAKgI,EAAKvB,SAAWuB,EACdhI,OAGH0xB,GAAoB3gC,EAAAmE,WAAA1D,EAAA4D,gBAAA3D,EAAA6D,WAAAtE,EAAAwE,eAAA9D,EAAAgE,UAAA/D,EAAAiE,WAOxBmK,OAAO,SAASC,EAAMgI,GAEtB,MADAhI,GAAKgI,EAAKvB,SAAWuB,EACdhI,OAIHgzB,E7Cw7MW,SAAUC,G6Cv7MzB,QAAAD,GAAYxG,EAAOllB,GAAS2D,EAAA/b,KAAA8jC,EAAA,IAAAj1B,GAAA2lB,EAAAx0B,MAAA8jC,EAAA/O,WAAAn0B,OAAA00B,eAAAwO,IAAAvjC,KAAAP,KACpBs9B,EAAOllB,GADa,OAE1BvJ,GAAKyuB,MAAM59B,KAAKsoB,iBAAiB,QAASnZ,EAAKm1B,QAAQtJ,KAAb7rB,IAC1CA,EAAKuN,UAAYvN,EAAKyuB,MAAMzb,aAAa,gBACzChT,EAAKuN,UAAU1D,aAAa,mBAAmB,GAC/C7J,EAAKuN,UAAU1D,aAAa,YAAY,GACxC7J,EAAKo1B,YACLN,EAAiBriC,OAAOuN,EAAKuJ,QAAQ6rB,UAAUt2B,QAAQ,SAACu2B,GACtDr1B,EAAKs1B,WAAL9iC,MAAAwN,EAAA0uB,EAAmB2G,MARKr1B,E7CijN3B,MAzHA8lB,GAAUmP,EAAWC,GAkBrBtjB,EAAaqjB,IACX/qB,IAAK,aACL3L,MAAO,S6Ch8MCg3B,EAAUC,GACnBrkC,KAAKikC,SAASh0B,MAAMm0B,EAAUC,O7Cm8M7BtrB,IAAK,UACL3L,MAAO,S6Cj8MFuU,GAAM,GAAAD,GAAA1hB,KACN+hC,EAAU,cACI,iBAATpgB,KACT3hB,KAAKoc,UAAUwF,UAAYD,EAE7B,IAAI2iB,MAAmBC,IACvBvkC,MAAKikC,SAASt2B,QAAQ,SAACu2B,GAAS,GAAAM,GAAA7kB,EACJukB,EADI,GACzBE,EADyBI,EAAA,GACfH,EADeG,EAAA,EAE9B,QAAQJ,GACN,IAAK1xB,MAAKkxB,UACRU,EAAar0B,KAAKo0B,EAClB,MACF,KAAK3xB,MAAKovB,aACRyC,EAAgBt0B,KAAKo0B,EACrB,MACF,YACK12B,QAAQpN,KAAKmhB,EAAKtF,UAAUka,iBAAiB8N,GAAW,SAAC92B,GAE1DA,EAAKy0B,GAAWz0B,EAAKy0B,OACrBz0B,EAAKy0B,GAAS9xB,KAAKo0B,OAK3B,IAAII,GAAW,QAAXA,GAAYn3B,GACd,MAAIA,GAAK4J,WAAa5J,EAAKs2B,UAClBU,EAAazzB,OAAO,SAASyN,EAAO+lB,GACzC,MAAOA,GAAQ/2B,EAAMgR,IACpB,GAAAL,GAAAvc,SACM4L,EAAK4J,WAAa5J,EAAKw0B,gBACtBjxB,OAAOtQ,KAAK+M,EAAKI,eAAkB,SAAC4Q,EAAOomB,GACnD,GAAIC,GAAgBF,EAASC,EAS7B,OARIA,GAAUxtB,WAAa5J,EAAKw0B,eAC9B6C,EAAgBJ,EAAgB1zB,OAAO,SAAS8zB,EAAeN,GAC7D,MAAOA,GAAQK,EAAWC,IACzBA,GACHA,GAAiBD,EAAU3C,QAAgBlxB,OAAO,SAAS8zB,EAAeN,GACxE,MAAOA,GAAQK,EAAWC,IACzBA,IAEErmB,EAAMhd,OAAOqjC,IACnB,GAAA1mB,GAAAvc,SAEI,GAAAuc,GAAAvc,SAGP4c,EAAQmmB,EAASzkC,KAAKoc,UAO1B,OALI8lB,GAAc5jB,EAAO,OAAuD,MAA9CA,EAAM+H,IAAI/H,EAAM+H,IAAIhX,OAAS,GAAGmH,aAChE8H,EAAQA,EAAMkI,SAAQ,GAAAvI,GAAAvc,SAAYgnB,OAAOpK,EAAMjP,SAAW,GAAGkX,OAAO,KAEtEnJ,EAAMnG,IAAI,UAAWjX,KAAKoc,UAAUwF,UAAWtD,GAC/Cte,KAAKoc,UAAUwF,UAAY,GACpBtD,K7C28MNvF,IAAK,uBACL3L,MAAO,S6Cz8MWgC,EAAOuS,GAAkC,GAA5BjE,GAA4BhP,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,GAAnB1F,EAAAtH,QAAMqc,QAAQqB,GACvD,IAAqB,gBAAVhQ,GACT,MAAOpP,MAAKs9B,MAAM7a,YAAYziB,KAAKwiB,QAAQpT,GAAQuS,EAEnD,IAAIijB,GAAQ5kC,KAAKwiB,QAAQb,EACzB,OAAO3hB,MAAKs9B,MAAMuH,gBAAe,GAAA5mB,GAAAvc,SAAYgnB,OAAOtZ,GAAO9N,OAAOsjC,GAAQlnB,M7C+8M3E3E,IAAK,UACL3L,MAAO,S6C58MFI,GAAG,GAAA6V,GAAArjB,IACT,KAAIwN,EAAEs3B,kBAAqB9kC,KAAKs9B,MAAMzf,YAAtC,CACA,GAAIK,GAAQle,KAAKs9B,MAAMnf,eACnBG,GAAQ,GAAAL,GAAAvc,SAAYgnB,OAAOxK,EAAM9O,OAAOmX,OAAOrI,EAAM7O,QACrD4uB,EAAU1rB,SAASC,KAAK0rB,SAC5Bl+B,MAAKoc,UAAUwH,QACfka,WAAW,WACTza,EAAKia,MAAMvb,UAAU9P,OAAOjJ,EAAAtH,QAAMqc,QAAQW,QAC1CJ,EAAQA,EAAMhd,OAAO+hB,EAAKb,WAC1Ba,EAAKia,MAAMuH,eAAevmB,EAAOtV,EAAAtH,QAAMqc,QAAQC,MAE/CqF,EAAKia,MAAM7e,aAAaH,EAAMjP,SAAW6O,EAAM7O,OAAQrG,EAAAtH,QAAMqc,QAAQW,QACrEnM,SAASC,KAAK0rB,UAAYD,EAC1B5a,EAAKia,MAAMvb,UAAU8B,kBACpB,Q7Ck9MGigB,GACP1iB,EAAS1f,Q6Ch9MZoiC,GAAUlnB,UACRqnB,a7C8lNDrkC,E6C/8MqB8B,QAAboiC,E7Cg9MRlkC,E6Ch9M8B0iC,kB7Ci9M9B1iC,E6Cj9M+C6iC,Y7Ck9M/C7iC,E6Cl9M0DgjC,e7Cm9M1DhjC,E6Cn9MwEijC,e7Co9MxEjjC,E6Cp9MsF2jC,a7Cw9MjF,SAAS1jC,EAAQD,EAASM,GAE/B,YAWA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GATvFZ,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQoG,WAAapG,EAAQwF,WAAaxF,EAAQikC,eAAiB3wB,M8CnwNpE,IAAArK,GAAA3I,EAAA,G9CuwNK4I,EAAcvH,EAAuBsH,G8CrwNtCmU,GACFtH,MAAO5M,EAAApH,QAAUwK,MAAMwK,MACvB4B,WAAY,QAAS,SAAU,YAG7BurB,EAAiB,GAAI/6B,GAAApH,QAAUoL,WAAWC,UAAU,QAAS,QAASiQ,GACtE5X,EAAa,GAAI0D,GAAApH,QAAUoL,WAAWE,MAAM,QAAS,WAAYgQ,GACjEhX,EAAa,GAAI8C,GAAApH,QAAUoL,WAAWG,MAAM,QAAS,aAAc+P,E9C2wNtEpd,G8CzwNQikC,iB9C0wNRjkC,E8C1wNwBwF,a9C2wNxBxF,E8C3wNoCoG,c9C+wN/B,SAASnG,EAAQD,EAASM,GAE/B,YAaA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAXvFZ,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQsG,gBAAkBtG,EAAQ0F,gBAAkB4N,M+CjyNrD,IAAArK,GAAA3I,EAAA,G/CqyNK4I,EAAcvH,EAAuBsH,G+CpyN1CtG,EAAArC,EAAA,IAEIoF,EAAkB,GAAIwD,GAAApH,QAAUoL,WAAWE,MAAM,aAAc,SACjE0I,MAAO5M,EAAApH,QAAUwK,MAAMuB,SAErBvH,EAAkB,GAAA3D,GAAAwiC,gBAAoB,aAAc,oBACtDrvB,MAAO5M,EAAApH,QAAUwK,MAAMuB,Q/C2yNxB7N,G+CxyNQ0F,kB/CyyNR1F,E+CzyNyBsG,mB/C6yNpB,SAASrG,EAAQD,EAASM,GAE/B,YAeA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAnBjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQwG,WAAaxG,EAAQ4F,WAAa5F,EAAQmlC,gBAAkB7xB,MAEpE,IAAIuN,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,IgDl0N7drsB,EAAA3I,EAAA,GhDs0NK4I,EAAcvH,EAAuBsH,GgDp0NpCk8B,EhD80NiB,SAAUC,GAG9B,QAASD,KAGP,MAFAhpB,GAAgB/b,KAAM+kC,GAEfvQ,EAA2Bx0B,MAAO+kC,EAAgBhQ,WAAan0B,OAAO00B,eAAeyP,IAAkB1jC,MAAMrB,KAAM0O,YAe5H,MApBAimB,GAAUoQ,EAAiBC,GAQ3BvkB,EAAaskB,IACXhsB,IAAK,QACL3L,MAAO,QAASA,GgDx1NbS,GACJ,GAAIT,uFAAoBS,EACxB,OAAKT,GAAM+V,WAAW,SACtB/V,EAAQA,EAAMoE,QAAQ,UAAW,IAAIA,QAAQ,UAAW,IACjD,IAAMpE,EAAMsE,MAAM,KAAKyC,IAAI,SAAS6V,GACzC,OAAQ,KAAOpV,SAASoV,GAAWnV,SAAS,KAAK5T,OAAM,KACtDiY,KAAK,KAJ8B9L,MhDg2NhC23B,GgDn2NoBj8B,EAAApH,QAAUoL,WAAWG,OAW/CzH,EAAa,GAAIsD,GAAApH,QAAUoL,WAAWE,MAAM,QAAS,YACvD0I,MAAO5M,EAAApH,QAAUwK,MAAMuB,SAErBrH,EAAa,GAAI2+B,GAAgB,QAAS,SAC5CrvB,MAAO5M,EAAApH,QAAUwK,MAAMuB,QhD81NxB7N,GgD31NQmlC,kBhD41NRnlC,EgD51NyB4F,ahD61NzB5F,EgD71NqCwG,chDi2NhC,SAASvG,EAAQD,EAASM,GAE/B,YAWA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GATvFZ,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQ0G,eAAiB1G,EAAQ8F,eAAiB9F,EAAQsF,mBAAqBgO,MiD53NhF,IAAArK,GAAA3I,EAAA,GjDg4NK4I,EAAcvH,EAAuBsH,GiD93NtCmU,GACFtH,MAAO5M,EAAApH,QAAUwK,MAAMwK,MACvB4B,WAAY,QAGVpT,EAAqB,GAAI4D,GAAApH,QAAUoL,WAAWC,UAAU,YAAa,MAAOiQ,GAC5EtX,EAAiB,GAAIoD,GAAApH,QAAUoL,WAAWE,MAAM,YAAa,eAAgBgQ,GAC7E1W,EAAiB,GAAIwC,GAAApH,QAAUoL,WAAWG,MAAM,YAAa,YAAa+P,EjDo4N7Epd,GiDl4NQsF,qBjDm4NRtF,EiDn4N4B8F,iBjDo4N5B9F,EiDp4N4C0G,kBjDw4NvC,SAASzG,EAAQD,EAASM,GAE/B,YAeA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAnBjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQgG,UAAYhG,EAAQ4G,UAAY0M,MAExC,IAAIuN,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,IkD95N7drsB,EAAA3I,EAAA,GlDk6NK4I,EAAcvH,EAAuBsH,GkDh6NtCmU,GACFtH,MAAO5M,EAAApH,QAAUwK,MAAMuB,OACvB6K,WAAY,QAAS,cAGnB1S,EAAY,GAAIkD,GAAApH,QAAUoL,WAAWE,MAAM,OAAQ,UAAWgQ,GAE5DioB,ElD06NqB,SAAUD,GAGlC,QAASC,KAGP,MAFAlpB,GAAgB/b,KAAMilC,GAEfzQ,EAA2Bx0B,MAAOilC,EAAoBlQ,WAAan0B,OAAO00B,eAAe2P,IAAsB5jC,MAAMrB,KAAM0O,YAUpI,MAfAimB,GAAUsQ,EAAqBD,GAQ/BvkB,EAAawkB,IACXlsB,IAAK,QACL3L,MAAO,SkDp7NJE,GACJ,MAAO0nB,GAAAiQ,EAAApkC,UAAAk0B,WAAAn0B,OAAA00B,eAAA2P,EAAApkC,WAAA,QAAAb,MAAAO,KAAAP,KAAYsN,GAAMkE,QAAQ,QAAS,QlDw7NpCyzB,GkD17NwBn8B,EAAApH,QAAUoL,WAAWG,OAMnDzG,EAAY,GAAIy+B,GAAoB,OAAQ,cAAejoB,ElDy7N9Dpd,GkDv7NQ4G,YlDw7NR5G,EkDx7NmBgG,alD47Nd,SAAS/F,EAAQD,EAASM,GAE/B,YAWA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GATvFZ,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQ8G,UAAY9G,EAAQkG,UAAYoN,MmDp9NzC,IAAArK,GAAA3I,EAAA,GnDw9NK4I,EAAcvH,EAAuBsH,GmDt9NtC/C,EAAY,GAAIgD,GAAApH,QAAUoL,WAAWE,MAAM,OAAQ,WACrD0I,MAAO5M,EAAApH,QAAUwK,MAAMuB,OACvB6K,WAAY,QAAS,QAAS,UAE5B5R,EAAY,GAAIoC,GAAApH,QAAUoL,WAAWG,MAAM,OAAQ,aACrDyI,MAAO5M,EAAApH,QAAUwK,MAAMuB,OACvB6K,WAAY,OAAQ,OAAQ,SnD69N7B1Y,GmD19NQkG,YnD29NRlG,EmD39NmB8G,anD+9Nd,SAAS7G,EAAQD,EAASM,GAE/B,YAqBA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GoD96Nle,QAASqQ,GAAsB5mB,GAC7B,GAAI8H,GAAS9H,EAAM+H,IAAI/H,EAAM+H,IAAIhX,OAAS,EAC1C,OAAc,OAAV+W,IACiB,MAAjBA,EAAOE,OACuB,gBAAlBF,GAAOE,QAAuBF,EAAOE,OAAOkB,SAAS,MAE5C,MAArBpB,EAAO5P,YACF5V,OAAO2X,KAAK6N,EAAO5P,YAAY7F,KAAK,SAASmI,GAClD,MAAuD,OAAhDhQ,EAAApH,QAAU2K,MAAMyM,EAAMhQ,EAAApH,QAAUwK,MAAMwK,UAMnD,QAASyuB,GAAmB7mB,GAC1B,GAAI8mB,GAAe9mB,EAAMzN,OAAO,SAASxB,EAAQgZ,GAE/C,MADAhZ,IAAWgZ,EAAG9B,QAAU,GAEvB,GACC8e,EAAc/mB,EAAMjP,SAAW+1B,CAInC,OAHIF,GAAsB5mB,KACxB+mB,GAAe,GAEVA,EpD83NRzkC,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQulC,mBAAqBvlC,EAAQ8B,QAAUwR,MAE/C,IAAIuN,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MoDn/NjiBpT,EAAA3I,EAAA,GpDu/NK4I,EAAcvH,EAAuBsH,GoDt/N1CE,EAAA7I,EAAA,IpD0/NK8I,EAAUzH,EAAuBwH,GoDz/NtCoY,EAAAjhB,EAAA,IpD6/NKkhB,EAAW7f,EAAuB4f,GoD1/NjCmkB,EpDogOS,SAAUvB,GoDngOvB,QAAAuB,GAAYhI,EAAOllB,GAAS2D,EAAA/b,KAAAslC,EAAA,IAAAz2B,GAAA2lB,EAAAx0B,MAAAslC,EAAAvQ,WAAAn0B,OAAA00B,eAAAgQ,IAAA/kC,KAAAP,KACpBs9B,EAAOllB,GADa,OAE1BvJ,GAAK02B,aAAe,EACpB12B,EAAK22B,cAAe,EACpB32B,EAAK6T,QACL7T,EAAKyuB,MAAMpb,GAAGlZ,EAAAtH,QAAMkd,OAAOI,cAAe,SAAC6e,EAAWvf,EAAOF,EAAUV,GACjEmgB,IAAc70B,EAAAtH,QAAMkd,OAAOC,aAAehQ,EAAK22B,eAC9C32B,EAAKuJ,QAAQqtB,UAAY/nB,IAAW1U,EAAAtH,QAAMqc,QAAQC,KAGrDnP,EAAK4b,UAAUnM,GAFfzP,EAAK62B,OAAOpnB,EAAOF,MAKvBvP,EAAKyuB,MAAM9gB,SAASmpB,YAAa5sB,IAAK,IAAK6sB,UAAU,GAAQ/2B,EAAKg3B,KAAKnL,KAAV7rB,IAC7DA,EAAKyuB,MAAM9gB,SAASmpB,YAAa5sB,IAAK,IAAK6sB,UAAU,EAAME,UAAU,GAAQj3B,EAAKk3B,KAAKrL,KAAV7rB,IACzE,OAAOm3B,KAAKC,UAAUC,WACxBr3B,EAAKyuB,MAAM9gB,SAASmpB,YAAa5sB,IAAK,IAAK6sB,UAAU,GAAQ/2B,EAAKk3B,KAAKrL,KAAV7rB,IAhBrCA,EpD+lO3B,MA3FA8lB,GAAU2Q,EAASvB,GA0BnBtjB,EAAa6kB,IACXvsB,IAAK,SACL3L,MAAO,SoD5gOHsQ,EAAQyoB,GACb,GAAkC,IAA9BnmC,KAAKomC,MAAM1oB,GAAQrO,OAAvB,CACA,GAAIiP,GAAQte,KAAKomC,MAAM1oB,GAAQwL,KAC/BlpB,MAAKulC,aAAe,EACpBvlC,KAAKwlC,cAAe,EACpBxlC,KAAKs9B,MAAMuH,eAAevmB,EAAMZ,GAAS1U,EAAAtH,QAAMqc,QAAQC,MACvDhe,KAAKwlC,cAAe,CACpB,IAAIp2B,GAAQ+1B,EAAmB7mB,EAAMZ,GACrC1d,MAAKs9B,MAAM7e,aAAarP,GACxBpP,KAAKs9B,MAAMvb,UAAU8B,iBACrB7jB,KAAKomC,MAAMD,GAAMl2B,KAAKqO,OpD+gOrBvF,IAAK,QACL3L,MAAO,WoD5gORpN,KAAKomC,OAAUP,QAAUE,YpDghOxBhtB,IAAK,SACL3L,MAAO,SoD9gOHi5B,EAAajoB,GAClB,GAA+B,IAA3BioB,EAAYhgB,IAAIhX,OAApB,CACArP,KAAKomC,MAAML,OACX,IAAIO,GAAYtmC,KAAKs9B,MAAM3Y,cAAcuD,KAAK9J,GAC1CmoB,EAAY7K,KAAK8K,KACrB,IAAIxmC,KAAKulC,aAAevlC,KAAKoY,QAAQquB,MAAQF,GAAavmC,KAAKomC,MAAMP,KAAKx2B,OAAS,EAAG,CACpF,GAAIiP,GAAQte,KAAKomC,MAAMP,KAAK3c,KAC5Bod,GAAYA,EAAU9f,QAAQlI,EAAMunB,MACpCQ,EAAc/nB,EAAMynB,KAAKvf,QAAQ6f,OAEjCrmC,MAAKulC,aAAegB,CAEtBvmC,MAAKomC,MAAMP,KAAK51B,MACd81B,KAAMM,EACNR,KAAMS,IAEJtmC,KAAKomC,MAAMP,KAAKx2B,OAASrP,KAAKoY,QAAQsuB,UACxC1mC,KAAKomC,MAAMP,KAAKloB,YpDkhOjB5E,IAAK,OACL3L,MAAO,WoD9gORpN,KAAKue,OAAO,OAAQ,WpDkhOnBxF,IAAK,YACL3L,MAAO,SoDhhOAkR,GACRte,KAAKomC,MAAMP,KAAKl4B,QAAQ,SAAS4Q,GAC/BA,EAAOsnB,KAAOvnB,EAAMmM,UAAUlM,EAAOsnB,MAAM,GAC3CtnB,EAAOwnB,KAAOznB,EAAMmM,UAAUlM,EAAOwnB,MAAM,KAE7C/lC,KAAKomC,MAAML,KAAKp4B,QAAQ,SAAS4Q,GAC/BA,EAAOsnB,KAAOvnB,EAAMmM,UAAUlM,EAAOsnB,MAAM,GAC3CtnB,EAAOwnB,KAAOznB,EAAMmM,UAAUlM,EAAOwnB,MAAM,QpDohO5ChtB,IAAK,OACL3L,MAAO,WoDhhORpN,KAAKue,OAAO,OAAQ,YpDqhOd+mB,GACPlkB,EAAS1f,QoDnhOZ4jC,GAAQ1oB,UACN6pB,MAAO,IACPC,SAAU,IACVjB,UAAU,GpDkjOX7lC,EoDphOmB8B,QAAX4jC,EpDqhOR1lC,EoDrhO4BulC,sBpDyhOvB,SAAStlC,EAAQD,EAASM,GAE/B,YA4CA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GqD39Nle,QAAS8R,GAAgBzoB,EAAOua,GAC9B,GAAoB,IAAhBva,EAAM9O,MAAV,CADuC,GAAAw3B,GAExB5mC,KAAKs9B,MAAMxb,OAAOyI,KAAKrM,EAAM9O,OAFLy3B,EAAAlnB,EAAAinB,EAAA,GAElCrc,EAFkCsc,EAAA,GAGnChvB,IACJ,IAAuB,IAAnB4gB,EAAQjpB,OAAc,CACxB,GAAIs3B,GAAavc,EAAK1S,UAClBkvB,EAAc/mC,KAAKs9B,MAAM1Y,UAAU1G,EAAM9O,MAAM,EAAG,EACtDyI,GAAUya,EAAA5wB,QAAQ8U,WAAW0R,KAAK4e,EAAYC,OAEhD/mC,KAAKs9B,MAAM9Z,WAAWtF,EAAM9O,MAAM,EAAG,EAAGpG,EAAAtH,QAAMqc,QAAQC,MAClDpd,OAAO2X,KAAKV,GAASxI,OAAS,GAChCrP,KAAKs9B,MAAMvZ,WAAW7F,EAAM9O,MAAM,EAAG,EAAGyI,EAAS7O,EAAAtH,QAAMqc,QAAQC,MAEjEhe,KAAKs9B,MAAMvb,UAAU8B,kBAGvB,QAASmjB,GAAa9oB,GAChBA,EAAM9O,OAASpP,KAAKs9B,MAAM9Y,YAAc,GAC5CxkB,KAAKs9B,MAAM9Z,WAAWtF,EAAM9O,MAAO,EAAGpG,EAAAtH,QAAMqc,QAAQC,MAGtD,QAASipB,GAAkB/oB,GACzBle,KAAKs9B,MAAM9Z,WAAWtF,EAAOlV,EAAAtH,QAAMqc,QAAQC,MAC3Che,KAAKs9B,MAAM7e,aAAaP,EAAM9O,MAAOpG,EAAAtH,QAAMqc,QAAQW,QACnD1e,KAAKs9B,MAAMvb,UAAU8B,iBAGvB,QAASqjB,GAAYhpB,EAAOua,GAAS,GAAApV,GAAArjB,IAC/Bke,GAAM7O,OAAS,GACjBrP,KAAKs9B,MAAMxb,OAAO3S,SAAS+O,EAAM9O,MAAO8O,EAAM7O,OAEhD,IAAI83B,GAAcvmC,OAAO2X,KAAKkgB,EAAQ9iB,QAAQ9E,OAAO,SAASs2B,EAAaxxB,GAIzE,MAHI7M,GAAApH,QAAU2K,MAAMsJ,EAAQ7M,EAAApH,QAAUwK,MAAMwK,SAAWjC,MAAMC,QAAQ+jB,EAAQ9iB,OAAOA,MAClFwxB,EAAYxxB,GAAU8iB,EAAQ9iB,OAAOA,IAEhCwxB,MAETnnC,MAAKs9B,MAAM9X,WAAWtH,EAAM9O,MAAO,KAAM+3B,EAAan+B,EAAAtH,QAAMqc,QAAQC,MACpEhe,KAAKs9B,MAAMvb,UAAU8B,iBACrBjjB,OAAO2X,KAAKkgB,EAAQ9iB,QAAQhI,QAAQ,SAACyC,GACV,MAArB+2B,EAAY/2B,KACZqE,MAAMC,QAAQ+jB,EAAQ9iB,OAAOvF,KACpB,SAATA,GACJiT,EAAKia,MAAM3nB,OAAOvF,EAAMqoB,EAAQ9iB,OAAOvF,GAAOpH,EAAAtH,QAAMqc,QAAQC,SAIhE,QAASopB,GAAqBC,GAC5B,OACEtuB,IAAKuuB,EAAS/uB,KAAKge,IACnBuP,UAAWuB,EACX1xB,QAAS4xB,cAAc,GACvBC,QAAS,SAAStpB,GAChB,GAAIuX,GAAY3sB,EAAApH,QAAU2K,MAAM,cAC5B+C,EAAQ8O,EAAM9O,MAAOC,EAAS6O,EAAM7O,OAFjBo4B,EAGDznC,KAAKs9B,MAAMxb,OAAOrS,WAAWgmB,EAAWrmB,GAHvCs4B,EAAA/nB,EAAA8nB,EAAA,GAGlB9Q,EAHkB+Q,EAAA,GAGXl4B,EAHWk4B,EAAA,EAIvB,IAAa,MAAT/Q,EAAJ,CACA,GAAIgR,GAAe3nC,KAAKs9B,MAAMxb,OAAOtS,OAAOmnB,GACxCtX,EAAQsX,EAAMjD,aAAalkB,GAAQ,GAAQ,EAC3C8P,EAAMqX,EAAMjD,aAAaiU,EAAen4B,EAASH,GACjDgkB,EAAQsD,EAAM9oB,QAAQ8nB,YAAY10B,MAAMoe,EAAOC,GAAK5N,MAAM,KAC9DlC,GAAS,EACT6jB,EAAM1lB,QAAQ,SAAC4c,EAAM5pB,GACf0mC,GACF1Q,EAAMtmB,SAASgP,EAAQ7P,EAAQimB,EAAUc,KACzC/mB,GAAUimB,EAAUc,IAAIlnB,OACd,IAAN1O,EACFyO,GAASqmB,EAAUc,IAAIlnB,OAEvBA,GAAUomB,EAAUc,IAAIlnB,QAEjBkb,EAAKpH,WAAWsS,EAAUc,OACnCI,EAAMxnB,SAASkQ,EAAQ7P,EAAQimB,EAAUc,IAAIlnB,QAC7CG,GAAUimB,EAAUc,IAAIlnB,OACd,IAAN1O,EACFyO,GAASqmB,EAAUc,IAAIlnB,OAEvBA,GAAUomB,EAAUc,IAAIlnB,QAG5BG,GAAU+a,EAAKlb,OAAS,IAE1BrP,KAAKs9B,MAAMrrB,OAAOjJ,EAAAtH,QAAMqc,QAAQC,MAChChe,KAAKs9B,MAAM7e,aAAarP,EAAOC,EAAQrG,EAAAtH,QAAMqc,QAAQW,WAK3D,QAASkpB,GAAkBjyB,GACzB,OACEoD,IAAKpD,EAAO,GAAGhB,cACfixB,UAAU,EACV4B,QAAS,SAAStpB,EAAOua,GACvBz4B,KAAKs9B,MAAM3nB,OAAOA,GAAS8iB,EAAQ9iB,OAAOA,GAAS3M,EAAAtH,QAAMqc,QAAQC,QAKvE,QAAS6pB,GAAUC,GACjB,GAAuB,gBAAZA,IAA2C,gBAAZA,GACxC,MAAOD,IAAY9uB,IAAK+uB,GAK1B,IAHuB,YAAnB,mBAAOA,GAAP,YAAA3oB,EAAO2oB,MACTA,GAAU,EAAA5V,EAAAxwB,SAAMomC,GAAS,IAEA,gBAAhBA,GAAQ/uB,IACjB,GAAgD,MAA5CuuB,EAAS/uB,KAAKuvB,EAAQ/uB,IAAIpE,eAC5BmzB,EAAQ/uB,IAAMuuB,EAAS/uB,KAAKuvB,EAAQ/uB,IAAIpE,mBACnC,IAA2B,IAAvBmzB,EAAQ/uB,IAAI1J,OAGrB,MAAO,KAFPy4B,GAAQ/uB,IAAM+uB,EAAQ/uB,IAAIpE,cAAcozB,WAAW,GAKvD,MAAOD,GrDyzNRlnC,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAI+R,GAA4B,kBAAXc,SAAoD,gBAApBA,QAAOzM,SAAwB,SAAUhS,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXye,SAAyBze,EAAI6M,cAAgB4R,QAAUze,IAAQye,OAAOpf,UAAY,eAAkBW,IAElQme,EAAiB,WAAc,QAASO,GAAcxG,EAAK/Y,GAAK,GAAIwf,MAAeC,GAAK,EAAUC,GAAK,EAAWC,EAAKpN,MAAW,KAAM,IAAK,GAAiCqN,GAA7BlN,EAAKqG,EAAIuG,OAAOzM,cAAmB4M,GAAMG,EAAKlN,EAAGzB,QAAQ4O,QAAoBL,EAAKlQ,KAAKsQ,EAAGnT,QAAYzM,GAAKwf,EAAK9Q,SAAW1O,GAA3Dyf,GAAK,IAAoE,MAAOnR,GAAOoR,GAAK,EAAMC,EAAKrR,EAAO,QAAU,KAAWmR,GAAM/M,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIgN,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUzG,EAAK/Y,GAAK,GAAI8T,MAAMC,QAAQgF,GAAQ,MAAOA,EAAY,IAAIuG,OAAOzM,WAAY5S,QAAO8Y,GAAQ,MAAOwG,GAAcxG,EAAK/Y,EAAa,MAAM,IAAIub,WAAU,4DAEllBuE,EAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MqDzpOjiBsW,EAAAryB,EAAA,IrD6pOKgyB,EAAU3wB,EAAuBgxB,GqD5pOtCC,EAAAtyB,EAAA,IrDgqOKuyB,EAAclxB,EAAuBixB,GqD/pO1ClR,EAAAphB,EAAA,IrDmqOKoc,EAAW/a,EAAuB+f,GqDlqOvC+Q,EAAAnyB,EAAA,IrDsqOKoyB,EAAO/wB,EAAuB8wB,GqDrqOnCxpB,EAAA3I,EAAA,GrDyqOK4I,EAAcvH,EAAuBsH,GqDxqO1CE,EAAA7I,EAAA,IrD4qOK8I,EAAUzH,EAAuBwH,GqD3qOtCwY,EAAArhB,EAAA,IrD+qOKshB,EAAWjgB,EAAuBggB,GqD9qOvCJ,EAAAjhB,EAAA,IrDkrOKkhB,EAAW7f,EAAuB4f,GqDhrOnC/D,GAAQ,EAAAoE,EAAA9f,SAAO,kBAEbsmC,EAAW,OAAOhC,KAAKC,UAAUC,UAAY,UAAY,UAGzDoB,ErDyrOU,SAAUvD,GqD7qOxB,QAAAuD,GAAYhK,EAAOllB,GAAS2D,EAAA/b,KAAAsnC,EAAA,IAAAz4B,GAAA2lB,EAAAx0B,MAAAsnC,EAAAvS,WAAAn0B,OAAA00B,eAAAgS,IAAA/mC,KAAAP,KACpBs9B,EAAOllB,GADa,OAE1BvJ,GAAKo5B,YACLrnC,OAAO2X,KAAK1J,EAAKuJ,QAAQ6vB,UAAUt6B,QAAQ,SAACyC,GACtCvB,EAAKuJ,QAAQ6vB,SAAS73B,IACxBvB,EAAK82B,WAAW92B,EAAKuJ,QAAQ6vB,SAAS73B,MAG1CvB,EAAK82B,YAAa5sB,IAAKuuB,EAAS/uB,KAAK2vB,MAAOpC,SAAU,MAAQoB,GAC9Dr4B,EAAK82B,YAAa5sB,IAAKuuB,EAAS/uB,KAAK2vB,MAAOC,QAAS,KAAMC,QAAS,KAAMC,OAAQ,MAAQ,cAC1Fx5B,EAAK82B,YAAa5sB,IAAKuuB,EAAS/uB,KAAK+vB,YAAelK,WAAW,EAAMplB,OAAQ,QAAU2tB,GACvF93B,EAAK82B,YAAa5sB,IAAKuuB,EAAS/uB,KAAK4R,SAAYiU,WAAW,EAAM3N,OAAQ,MAAQuW,GAClFn4B,EAAK82B,YAAa5sB,IAAKuuB,EAAS/uB,KAAK+vB,YAAelK,WAAW,GAAS6I,GACxEp4B,EAAK82B,YAAa5sB,IAAKuuB,EAAS/uB,KAAK4R,SAAYiU,WAAW,GAAS6I,GACjE,WAAWjB,KAAKC,UAAUsC,aAC5B15B,EAAK82B,YAAa5sB,IAAKuuB,EAAS/uB,KAAK+vB,UAAW1C,UAAU,GAAQe,GAClE93B,EAAK82B,YAAa5sB,IAAKuuB,EAAS/uB,KAAK4R,OAAQyb,UAAU,GAAQoB,IAEjEn4B,EAAK25B,SAlBqB35B,ErDmzO3B,MArIA8lB,GAAU2S,EAAUvD,GAEpBtjB,EAAa6mB,EAAU,OACrBvuB,IAAK,QACL3L,MAAO,SqD7rOG+rB,EAAK2O,GAEhB,MADAA,GAAUD,EAAUC,MACdA,EAAQlC,WAAazM,EAAI6O,IAAkC,OAArBF,EAAQlC,cAC/C,SAAU,UAAW,UAAW,YAAYj1B,KAAK,SAASoI,GAC7D,MAAQA,IAAOivB,KAAcF,EAAQ/uB,KAASogB,EAAIpgB,IAAyB,OAAjB+uB,EAAQ/uB,MAI7D+uB,EAAQ/uB,OAASogB,EAAIsP,OAAStP,EAAIuP,crD0tO1CjoB,EAAa6mB,IACXvuB,IAAK,aACL3L,MAAO,SqDpsOC2L,GAAiC,GAA5B0f,GAA4B/pB,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,MAAd84B,EAAc94B,UAAAW,OAAA,GAAA6D,SAAAxE,UAAA,GAAAA,UAAA,MACtCo5B,EAAUD,EAAU9uB,EACxB,OAAe,OAAX+uB,GAAkC,MAAfA,EAAQ/uB,IACtBqE,EAAM8F,KAAK,4CAA6C4kB,IAE1C,kBAAZrP,KACTA,GAAY+O,QAAS/O,IAEA,kBAAZ+O,KACTA,GAAYA,QAASA,IAEvBM,GAAU,EAAAxrB,EAAA5a,SAAOomC,EAASrP,EAAS+O,GACnCxnC,KAAKioC,SAASH,EAAQ/uB,KAAO/Y,KAAKioC,SAASH,EAAQ/uB,aACnD/Y,MAAKioC,SAASH,EAAQ/uB,KAAK9I,KAAK63B,OrD0sO/B/uB,IAAK,SACL3L,MAAO,WqDxsOD,GAAAsU,GAAA1hB,IACPA,MAAKs9B,MAAM59B,KAAKsoB,iBAAiB,UAAW,SAACmR,GAC3C,IAAIA,EAAI2L,iBAAR,CACA,GAAI2D,GAAQtP,EAAIsP,OAAStP,EAAIuP,QACzBT,GAAYvmB,EAAKumB,SAASQ,QAAc71B,OAAO,SAASk1B,GAC1D,MAAOR,GAASnxB,MAAMgjB,EAAK2O,IAE7B,IAAwB,IAApBG,EAAS54B,OAAb,CACA,GAAI6O,GAAQwD,EAAK4b,MAAMnf,cACvB,IAAa,MAATD,GAAkBwD,EAAK4b,MAAMrY,WAAjC,CARmD,GAAA0jB,GAS9BjnB,EAAK4b,MAAMxb,OAAOyI,KAAKrM,EAAM9O,OATCw5B,EAAAjpB,EAAAgpB,EAAA,GAS9Cpe,EAT8Cqe,EAAA,GASxCp5B,EATwCo5B,EAAA,GAAAC,EAUpBnnB,EAAK4b,MAAMxb,OAAOsR,KAAKlV,EAAM9O,OAVT05B,EAAAnpB,EAAAkpB,EAAA,GAU9CE,EAV8CD,EAAA,GAUnCE,EAVmCF,EAAA,GAAAlR,EAWP,IAAjB1Z,EAAM7O,QAAgB05B,EAAWC,GAAetnB,EAAK4b,MAAMxb,OAAOsR,KAAKlV,EAAM9O,MAAQ8O,EAAM7O,QAXnE45B,EAAAtpB,EAAAiY,EAAA,GAW9CsR,EAX8CD,EAAA,GAWrCE,EAXqCF,EAAA,GAY/CG,EAAaL,YAAqBjgC,GAAApH,QAAUmL,KAAOk8B,EAAU37B,QAAQnM,MAAM,EAAG+nC,GAAe,GAC7FK,EAAaH,YAAmBpgC,GAAApH,QAAUmL,KAAOq8B,EAAQ97B,QAAQnM,MAAMkoC,GAAa,GACpFG,GACFlL,UAA4B,IAAjBlgB,EAAM7O,OACjBk6B,MAAwB,IAAjBrrB,EAAM7O,QAAgBkb,EAAKlb,UAAY,EAC9CsG,OAAQ+L,EAAK4b,MAAM1Y,UAAU1G,GAC7B1O,OAAQA,EACRwJ,OAAQowB,EACR3Y,OAAQ4Y,GAENG,EAAYvB,EAASt3B,KAAK,SAACm3B,GAC7B,GAAyB,MAArBA,EAAQ1J,WAAqB0J,EAAQ1J,YAAckL,EAAWlL,UAAW,OAAO,CACpF,IAAqB,MAAjB0J,EAAQyB,OAAiBzB,EAAQyB,QAAUD,EAAWC,MAAO,OAAO,CACxE,IAAsB,MAAlBzB,EAAQt4B,QAAkBs4B,EAAQt4B,SAAW85B,EAAW95B,OAAQ,OAAO,CAC3E,IAAIiF,MAAMC,QAAQozB,EAAQnyB,SAExB,GAAImyB,EAAQnyB,OAAO8zB,MAAM,SAASr5B,GAChC,MAAkC,OAA3Bk5B,EAAW3zB,OAAOvF,KAEzB,OAAO,MAEJ,IAA8B,WAA1B+O,EAAO2oB,EAAQnyB,UAEnB/U,OAAO2X,KAAKuvB,EAAQnyB,QAAQ8zB,MAAM,SAASr5B,GAC9C,MAAI03B,GAAQnyB,OAAOvF,MAAU,EAAwC,MAA3Bk5B,EAAW3zB,OAAOvF,GACxD03B,EAAQnyB,OAAOvF,MAAU,EAAyC,MAA3Bk5B,EAAW3zB,OAAOvF,IACtD,EAAAqiB,EAAA/wB,SAAMomC,EAAQnyB,OAAOvF,GAAOk5B,EAAW3zB,OAAOvF,MAErD,OAAO,CAGX,SAAsB,MAAlB03B,EAAQ9uB,SAAmB8uB,EAAQ9uB,OAAOgtB,KAAKsD,EAAWtwB,aACxC,MAAlB8uB,EAAQrX,SAAmBqX,EAAQrX,OAAOuV,KAAKsD,EAAW7Y,UACvDqX,EAAQN,QAAQjnC,KAAhBmhB,EAA2BxD,EAAOorB,MAAgB,IAEvDE,IACFrQ,EAAIuQ,0BrD6tOFpC,GACPlmB,EAAS1f,QqDxtOZ4lC,GAAS/uB,MACP+vB,UAAW,EACX/R,IAAK,EACL2R,MAAO,GACPyB,OAAQ,GACRC,KAAM,GACNC,GAAI,GACJC,MAAO,GACPC,KAAM,GACN5f,OAAQ,IAGVmd,EAAS1qB,UACPqrB,UACE5E,KAAcuE,EAAkB,QAChCoC,OAAcpC,EAAkB,UAChCqC,UAAcrC,EAAkB,aAChCP,QAEEtuB,IAAKuuB,EAAS/uB,KAAKge,IACnB5gB,QAAS,aAAc,SAAU,QACjC6xB,QAAS,SAAStpB,EAAOua,GACvB,SAAIA,EAAQ2F,WAAgC,IAAnB3F,EAAQjpB,aACjCxP,MAAKs9B,MAAM3nB,OAAO,SAAU,KAAM3M,EAAAtH,QAAMqc,QAAQC,QAGpDksB,SACEnxB,IAAKuuB,EAAS/uB,KAAKge,IACnBuP,UAAU,EACVnwB,QAAS,aAAc,SAAU,QAEjC6xB,QAAS,SAAStpB,EAAOua,GACvB,SAAIA,EAAQ2F,WAAgC,IAAnB3F,EAAQjpB,aACjCxP,MAAKs9B,MAAM3nB,OAAO,SAAU,KAAM3M,EAAAtH,QAAMqc,QAAQC,QAGpDmsB,qBACEpxB,IAAKuuB,EAAS/uB,KAAK+vB,UACnBlK,WAAW,EACXzoB,QAAS,aAAc,SAAU,QACjCnG,OAAQ,EACRg4B,QAAS,SAAStpB,EAAOua,GACM,MAAzBA,EAAQ9iB,OAAO0xB,OACjBrnC,KAAKs9B,MAAM3nB,OAAO,SAAU,KAAM3M,EAAAtH,QAAMqc,QAAQC,MACV,MAA7Bya,EAAQ9iB,OAAOy0B,WACxBpqC,KAAKs9B,MAAM3nB,OAAO,cAAc,EAAO3M,EAAAtH,QAAMqc,QAAQC,MACrB,MAAvBya,EAAQ9iB,OAAOmS,MACxB9nB,KAAKs9B,MAAM3nB,OAAO,QAAQ,EAAO3M,EAAAtH,QAAMqc,QAAQC,QAIrDqsB,oBAAqBjD,GAAqB,GAC1CkD,qBAAsBlD,GAAqB,GAC3CmD,cACExxB,IAAKuuB,EAAS/uB,KAAKge,IACnBuP,UAAU,EACV1H,WAAW,EACXplB,OAAQ,MACRwuB,QAAS,SAAStpB,GAChBle,KAAKs9B,MAAM9Z,WAAWtF,EAAM9O,MAAQ,EAAG,EAAGpG,EAAAtH,QAAMqc,QAAQC,QAG5DwsB,KACEzxB,IAAKuuB,EAAS/uB,KAAKge,IACnBiR,QAAS,SAAStpB,EAAOua,GAClBA,EAAQ2F,WACXp+B,KAAKs9B,MAAMxb,OAAO3S,SAAS+O,EAAM9O,MAAO8O,EAAM7O,QAEhDrP,KAAKs9B,MAAM9X,WAAWtH,EAAM9O,MAAO,KAAMpG,EAAAtH,QAAMqc,QAAQC,MACvDhe,KAAKs9B,MAAM7e,aAAaP,EAAM9O,MAAQ,EAAGpG,EAAAtH,QAAMqc,QAAQW,UAG3D+rB,oBACE1xB,IAAKuuB,EAAS/uB,KAAK2vB,MACnB9J,WAAW,EACXzoB,QAAS,QACT4zB,OAAO,EACP/B,QAAS,SAAStpB,EAAOua,GACvBz4B,KAAKs9B,MAAM3nB,OAAO,QAAQ,EAAO3M,EAAAtH,QAAMqc,QAAQC,MAC3Cya,EAAQ9iB,OAAO0xB,QACjBrnC,KAAKs9B,MAAM3nB,OAAO,UAAU,EAAO3M,EAAAtH,QAAMqc,QAAQC,QAIvD0sB,gBACE3xB,IAAKuuB,EAAS/uB,KAAK2vB,MACnB9J,WAAW,EACXzoB,QAAS,UACT8a,OAAQ,KACR+W,QAAS,SAAStpB,GAChBle,KAAKs9B,MAAMxb,OAAOzR,SAAS6N,EAAM9O,MAAO,MACxCpP,KAAKs9B,MAAMtZ,WAAW9F,EAAM9O,MAAQ,EAAG,EAAG,UAAU,EAAOpG,EAAAtH,QAAMqc,QAAQC,MACzEhe,KAAKs9B,MAAM7e,aAAaP,EAAM9O,MAAQ,EAAGpG,EAAAtH,QAAMqc,QAAQW,QACvD1e,KAAKs9B,MAAMvb,UAAU8B,mBAGzB8mB,iBACE5xB,IAAK,IACLqlB,WAAW,EACXzoB,QAAUmS,MAAM,GAChB9O,OAAQ,YACRwuB,QAAS,SAAStpB,EAAOua,GACvB,GAAIppB,GAASopB,EAAQzf,OAAO3J,MAC5BrP,MAAKs9B,MAAMxb,OAAO3S,SAAS+O,EAAM9O,MAAQC,EAAQA,GACjDrP,KAAKs9B,MAAMvZ,WAAW7F,EAAM9O,MAAQC,EAAQ,EAAG,OAAmB,IAAXA,EAAe,SAAW,UAAWrG,EAAAtH,QAAMqc,QAAQC,MAC1Ghe,KAAKs9B,MAAM7e,aAAaP,EAAM9O,MAAQC,EAAQrG,EAAAtH,QAAMqc,QAAQW,YrDi2OnE9e,EAAQ8B,QqDpuOM4lC,GrDwuOT,SAASznC,EAAQD,EAASM,GAE/B,YAeA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAnBjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQkH,YAAcoM,MAEtB,IAAIuN,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,IsD/kP7drsB,EAAA3I,EAAA,GtDmlPK4I,EAAcvH,EAAuBsH,GsDjlPpC+hC,EtD2lPiB,SAAU5F,GAG9B,QAAS4F,KAGP,MAFA7uB,GAAgB/b,KAAM4qC,GAEfpW,EAA2Bx0B,MAAO4qC,EAAgB7V,WAAan0B,OAAO00B,eAAesV,IAAkBvpC,MAAMrB,KAAM0O,YAwB5H,MA7BAimB,GAAUiW,EAAiB5F,GAQ3BvkB,EAAamqB,IACX7xB,IAAK,MACL3L,MAAO,SsDrmPNE,EAAMF;AACR,GAAc,OAAVA,GAA4B,OAAVA,EAAgB,CACpC,GAAIi6B,GAASrnC,KAAKoN,MAAME,IAAS,CACjCF,GAAmB,OAAVA,EAAkBi6B,EAAS,EAAMA,EAAS,EAErD,MAAc,KAAVj6B,GACFpN,KAAKsP,OAAOhC,IACL,GAEP0nB,EAAA4V,EAAA/pC,UAAAk0B,WAAAn0B,OAAA00B,eAAAsV,EAAA/pC,WAAA,MAAAb,MAAAO,KAAAP,KAAiBsN,EAAMF,MtDymPxB2L,IAAK,QACL3L,MAAO,SsDtmPJE,GACJ,MAAOsH,8FAAqBtH,KAAU4F,WtD0mPhC03B,GsDznPoB9hC,EAAApH,QAAUoL,WAAWE,OAmB/ClG,EAAc,GAAI8jC,GAAgB,SAAU,aAC9Cl1B,MAAO5M,EAAApH,QAAUwK,MAAMwK,MACvB4B,WAAY,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,ItD4mPlC1Y,GsDzmPQkH,etD6mPH,SAASjH,EAAQD,EAASM,GAE/B,YAUA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAdjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GuD5oPV,IAAAnE,GAAA/I,EAAA,IvDipPKgJ,EAAU3H,EAAuB0H,GuD9oPhC4hC,EvDwpPY,SAAUnV,GAGzB,QAASmV,KAGP,MAFA9uB,GAAgB/b,KAAM6qC,GAEfrW,EAA2Bx0B,MAAO6qC,EAAW9V,WAAan0B,OAAO00B,eAAeuV,IAAaxpC,MAAMrB,KAAM0O,YAGlH,MARAimB,GAAUkW,EAAYnV,GAQfmV,GACP3hC,EAAQxH,QuDjqPXmpC,GAAWj7B,SAAW,aACtBi7B,EAAWr2B,QAAU,avDqqPpB5U,EAAQ8B,QuDlqPMmpC,GvDsqPT,SAAShrC,EAAQD,EAASM,GAE/B,YAYA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAhBjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAIqT,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MwDtrPjiBhT,EAAA/I,EAAA,IxD0rPKgJ,EAAU3H,EAAuB0H,GwDvrPhC6hC,ExDisPQ,SAAUpV,GAGrB,QAASoV,KAGP,MAFA/uB,GAAgB/b,KAAM8qC,GAEftW,EAA2Bx0B,MAAO8qC,EAAO/V,WAAan0B,OAAO00B,eAAewV,IAASzpC,MAAMrB,KAAM0O,YAU1G,MAfAimB,GAAUmW,EAAQpV,GAQlBjV,EAAaqqB,EAAQ,OACnB/xB,IAAK,UACL3L,MAAO,SwD3sPKS,GACb,MAAO7N,MAAKwU,QAAQO,QAAQlH,EAAQ2G,SAAW,MxD+sPzCs2B,GACP5hC,EAAQxH,QwD7sPXopC,GAAOl7B,SAAW,SAClBk7B,EAAOt2B,SAAW,KAAM,KAAM,KAAM,KAAM,KAAM,MxDitP/C5U,EAAQ8B,QwD9sPMopC,GxDktPT,SAASjrC,EAAQD,EAASM,GAE/B,YAuBA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASqa,GAAgBra,EAAKuX,EAAK3L,GAAiK,MAApJ2L,KAAOvX,GAAOZ,OAAOuM,eAAe3L,EAAKuX,GAAO3L,MAAOA,EAAOkH,YAAY,EAAMC,cAAc,EAAMuH,UAAU,IAAkBta,EAAIuX,GAAO3L,EAAgB5L,EAE3M,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GA7Bjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQ8B,QAAU9B,EAAQsI,SAAWgL,MAErC,IAAIuN,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,IyDzuP7drsB,EAAA3I,EAAA,GzD6uPK4I,EAAcvH,EAAuBsH,GyD5uP1CI,EAAA/I,EAAA,IzDgvPKgJ,EAAU3H,EAAuB0H,GyD/uPtCI,EAAAnJ,EAAA,IzDmvPKoJ,EAAc/H,EAAuB8H,GyDhvPpCnB,EzD4vPU,SAAUwtB,GAGvB,QAASxtB,KAGP,MAFA6T,GAAgB/b,KAAMkI,GAEfssB,EAA2Bx0B,MAAOkI,EAAS6sB,WAAan0B,OAAO00B,eAAeptB,IAAW7G,MAAMrB,KAAM0O,YAwC9G,MA7CAimB,GAAUzsB,EAAUwtB,GAQpBjV,EAAavY,IACX6Q,IAAK,SACL3L,MAAO,SyDlwPHgD,EAAMhD,GACPgD,IAAS26B,EAAKn7B,UAAaxC,EAG7B4nB,EAAA9sB,EAAArH,UAAAk0B,WAAAn0B,OAAA00B,eAAAptB,EAAArH,WAAA,SAAAb,MAAAO,KAAAP,KAAaoQ,EAAMhD,GAFnBpN,KAAK+V,YAAYjN,EAAApH,QAAUyK,OAAOnM,KAAKyQ,QAAQiF,WzDwwPhDqD,IAAK,SACL3L,MAAO,WyDlwPS,MAAbpN,KAAKyT,MAA6B,MAAbzT,KAAK4R,KAC5B5R,KAAK+R,OAAOzC,SAEZ0lB,EAAA9sB,EAAArH,UAAAk0B,WAAAn0B,OAAA00B,eAAAptB,EAAArH,WAAA,SAAAb,MAAAO,KAAAP,SzDuwPD+Y,IAAK,cACL3L,MAAO,SyDpwPEgD,EAAMhD,GAEhB,MADApN,MAAK+R,OAAOsD,QAAQrV,KAAKwP,OAAOxP,KAAK+R,QAAS/R,KAAKqP,UAC/Ce,IAASpQ,KAAK+R,OAAOtB,QAAQb,UAC/B5P,KAAK+R,OAAOgE,YAAY3F,EAAMhD,GACvBpN,OAEPA,KAAK+R,OAAOC,SACZgjB,EAAA9sB,EAAArH,UAAAk0B,WAAAn0B,OAAA00B,eAAAptB,EAAArH,WAAA,cAAAb,MAAAO,KAAAP,KAAyBoQ,EAAMhD,SzDwwPhC2L,IAAK,UACL3L,MAAO,SyDpyPKS,GACb,MAAOA,GAAQ2G,UAAYxU,KAAKwU,QAAUtB,OAAnC8hB,EAAA9sB,EAAA6sB,WAAAn0B,OAAA00B,eAAAptB,GAAA,UAAAlI,MAAAO,KAAAP,KAA6D6N,OzDwyP9D3F,GACPgB,EAAQxH,QyD3wPXwG,GAAS0H,SAAW,YACpB1H,EAASsM,QAAU,IzD+wPlB,IyD5wPKu2B,GzD4wPM,SAAUC,GAGnB,QAASD,KAGP,MAFAhvB,GAAgB/b,KAAM+qC,GAEfvW,EAA2Bx0B,MAAO+qC,EAAKhW,WAAan0B,OAAO00B,eAAeyV,IAAO1pC,MAAMrB,KAAM0O,YAkEtG,MAvEAimB,GAAUoW,EAAMC,GAQhBvqB,EAAasqB,IACXhyB,IAAK,SACL3L,MAAO,SyDvwPHgD,EAAMhD,GACPpN,KAAK8O,SAASO,OAAS,GACzBrP,KAAK8O,SAASmE,KAAK0C,OAAOvF,EAAMhD,MzD2wPjC2L,IAAK,UACL3L,MAAO,WyDtwPR,MAAAyO,MAAU7b,KAAKyQ,QAAQb,SAAW5P,KAAKyQ,QAAQoH,QAAQ7X,KAAK6N,azD2wP3DkL,IAAK,eACL3L,MAAO,SyDzwPGG,EAAMqI,GACjB,GAAIrI,YAAgBrF,GAClB8sB,EAAA+V,EAAAlqC,UAAAk0B,WAAAn0B,OAAA00B,eAAAyV,EAAAlqC,WAAA,eAAAb,MAAAO,KAAAP,KAAmBuN,EAAMqI,OACpB,CACL,GAAIxG,GAAe,MAAPwG,EAAc5V,KAAKqP,SAAWuG,EAAIpG,OAAOxP,MACjD6R,EAAQ7R,KAAK0R,MAAMtC,EACvByC,GAAME,OAAOnD,aAAarB,EAAMsE,OzD6wPjCkH,IAAK,WACL3L,MAAO,WyDzwPR4nB,EAAA+V,EAAAlqC,UAAAk0B,WAAAn0B,OAAA00B,eAAAyV,EAAAlqC,WAAA,WAAAb,MAAAO,KAAAP,KACA,IAAI4R,GAAO5R,KAAK4R,IACJ,OAARA,GAAgBA,EAAK6B,OAASzT,MAC9B4R,EAAKnB,QAAQb,WAAa5P,KAAKyQ,QAAQb,UACvCgC,EAAK/D,QAAQ2G,UAAYxU,KAAK6N,QAAQ2G,UACxC5C,EAAKb,aAAa/Q,MAClB4R,EAAKtC,azD4wPNyJ,IAAK,UACL3L,MAAO,SyDzwPFqE,GACN,GAAIA,EAAOhB,QAAQb,WAAa5P,KAAKyQ,QAAQb,SAAU,CACrD,GAAI4I,GAAO1P,EAAApH,QAAUyK,OAAOnM,KAAKyQ,QAAQU,aACzCM,GAAOV,aAAayH,GACpBxY,KAAK8N,YAAY0K,GAEnBwc,EAAA+V,EAAAlqC,UAAAk0B,WAAAn0B,OAAA00B,eAAAyV,EAAAlqC,WAAA,UAAAb,MAAAO,KAAAP,KAAcyR,QzD4wPbsH,IAAK,SACL3L,MAAO,SyDl0PIA,GAMZ,MALc,YAAVA,EACFA,EAAQ,KACW,WAAVA,IACTA,EAAQ,MAEV4nB,EAAA+V,EAAAhW,WAAAn0B,OAAA00B,eAAAyV,GAAA,SAAA/qC,MAAAO,KAAAP,KAAoBoN,MzDq0PnB2L,IAAK,UACL3L,MAAO,SyDn0PKS,GACb,MAAwB,OAApBA,EAAQ2G,QAAyB,UACb,OAApB3G,EAAQ2G,QAAyB,SAArC,WzDw0PMu2B,GACPzhC,EAAY5H,QyD5xPfqpC,GAAKn7B,SAAW,OAChBm7B,EAAKr1B,MAAQ5M,EAAApH,QAAUwK,MAAM8O,WAC7B+vB,EAAKv2B,SAAW,KAAM,MACtBu2B,EAAK55B,aAAe,YACpB45B,EAAKr6B,iBAAmBxI,GzDgyPvBtI,EyD7xPQsI,WzD8xPRtI,EyD9xP0B8B,QAARqpC,GzDkyPb,SAASlrC,EAAQD,EAASM,GAE/B,YAcA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAlBjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAIqT,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,I0Dr5P7dvrB,EAAAzJ,EAAA,I1Dy5PK0J,EAAWrI,EAAuBoI,G0Dv5PjCshC,E1Di6PM,SAAUzV,GAGnB,QAASyV,KAGP,MAFAlvB,GAAgB/b,KAAMirC,GAEfzW,EAA2Bx0B,MAAOirC,EAAKlW,WAAan0B,OAAO00B,eAAe2V,IAAO5pC,MAAMrB,KAAM0O,YAuBtG,MA5BAimB,GAAUsW,EAAMzV,GAQhB/U,EAAawqB,IACXlyB,IAAK,WACL3L,MAAO,W0Dl6PR4nB,EAAAiW,EAAApqC,UAAAk0B,WAAAn0B,OAAA00B,eAAA2V,EAAApqC,WAAA,WAAAb,MAAAO,KAAAP,MACIA,KAAK6N,QAAQ2G,UAAYxU,KAAKyQ,QAAQ+D,QAAQ,IAChDxU,KAAK+V,YAAY/V,KAAKyQ,QAAQb,e1Du6P/BmJ,IAAK,SACL3L,MAAO,W0Dl7PR,MAAA4nB,GAAAiW,EAAAlW,WAAAn0B,OAAA00B,eAAA2V,GAAA,SAAAjrC,MAAAO,KAAAP,S1Ds7PC+Y,IAAK,UACL3L,MAAO,W0Dn7PR,OAAO,M1Dw7PD69B,GACPrhC,EAASlI,Q0D/6PZupC,GAAKr7B,SAAW,OAChBq7B,EAAKz2B,SAAW,SAAU,K1Dm7PzB5U,EAAQ8B,Q0Dj7PMupC,G1Dq7PT,SAASprC,EAAQD,EAASM,GAE/B,YAUA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAdjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,G2D/8PV,IAAA1K,GAAAxC,EAAA,I3Do9PKyC,EAASpB,EAAuBmB,G2Dl9P/BwoC,E3D49PQ,SAAUC,GAGrB,QAASD,KAGP,MAFAnvB,GAAgB/b,KAAMkrC,GAEf1W,EAA2Bx0B,MAAOkrC,EAAOnW,WAAan0B,OAAO00B,eAAe4V,IAAS7pC,MAAMrB,KAAM0O,YAG1G,MARAimB,GAAUuW,EAAQC,GAQXD,GACPvoC,EAAOjB,Q2Dr+PVwpC,GAAOt7B,SAAW,SAClBs7B,EAAO12B,SAAW,KAAM,K3Dy+PvB5U,EAAQ8B,Q2Dv+PMwpC,G3D2+PT,SAASrrC,EAAQD,EAASM,GAE/B,YAeA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,G4Dz+Ple,QAASuW,GAASC,EAAKC,GACrB,GAAIC,GAASh5B,SAASuC,cAAc,IACpCy2B,GAAOC,KAAOH,CACd,IAAII,GAAWF,EAAOC,KAAKvqC,MAAM,EAAGsqC,EAAOC,KAAKz2B,QAAQ,KACxD,OAAOu2B,GAAUv2B,QAAQ02B,IAAY,E5Dk9PtC7qC,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQwrC,SAAWxrC,EAAQ8B,QAAUwR,MAErC,IAAIuN,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,I4D5/P7dvrB,EAAAzJ,EAAA,I5DggQK0J,EAAWrI,EAAuBoI,G4D7/PjC+hC,E5DugQM,SAAUlW,GAGnB,QAASkW,KAGP,MAFA3vB,GAAgB/b,KAAM0rC,GAEflX,EAA2Bx0B,MAAO0rC,EAAK3W,WAAan0B,OAAO00B,eAAeoW,IAAOrqC,MAAMrB,KAAM0O,YA+BtG,MApCAimB,GAAU+W,EAAMlW,GAQhB/U,EAAairB,IACX3yB,IAAK,SACL3L,MAAO,S4DjgQHgD,EAAMhD,GACX,MAAIgD,KAASpQ,KAAKyQ,QAAQb,UAAaxC,GACvCA,EAAQpN,KAAKqO,YAAY+8B,SAASh+B,OAClCpN,MAAK6N,QAAQ6K,aAAa,OAAQtL,IAFY4nB,EAAA0W,EAAA7qC,UAAAk0B,WAAAn0B,OAAA00B,eAAAoW,EAAA7qC,WAAA,SAAAb,MAAAO,KAAAP,KAAoBoQ,EAAMhD,Q5DsgQvE2L,IAAK,SACL3L,MAAO,S4DxhQIA,GACZ,GAAIE,oEAAoBF,EAIxB,OAHAA,GAAQpN,KAAKorC,SAASh+B,GACtBE,EAAKoL,aAAa,OAAQtL,GAC1BE,EAAKoL,aAAa,SAAU,UACrBpL,K5D2hQNyL,IAAK,UACL3L,MAAO,S4DzhQKS,GACb,MAAOA,GAAQgJ,aAAa,W5D4hQ3BkC,IAAK,WACL3L,MAAO,S4D1hQMi+B,GACd,MAAOD,GAASC,GAAM,OAAQ,QAAS,WAAaA,EAAMrrC,KAAK2rC,kB5D8hQzDD,GACP9hC,EAASlI,Q4DthQZgqC,GAAK97B,SAAW,OAChB87B,EAAKl3B,QAAU,IACfk3B,EAAKC,cAAgB,c5DiiQpB/rC,E4DthQgB8B,QAARgqC,E5DuhQR9rC,E4DvhQyBwrC,Y5D2hQpB,SAASvrC,EAAQD,EAASM,GAE/B,YAcA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAlBjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAIqT,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,I6D5kQ7dvrB,EAAAzJ,EAAA,I7DglQK0J,EAAWrI,EAAuBoI,G6D9kQjCiiC,E7DwlQQ,SAAUpW,GAGrB,QAASoW,KAGP,MAFA7vB,GAAgB/b,KAAM4rC,GAEfpX,EAA2Bx0B,MAAO4rC,EAAO7W,WAAan0B,OAAO00B,eAAesW,IAASvqC,MAAMrB,KAAM0O,YAuB1G,MA5BAimB,GAAUiX,EAAQpW,GAQlB/U,EAAamrB,EAAQ,OACnB7yB,IAAK,SACL3L,MAAO,S6DlmQIA,GACZ,MAAc,UAAVA,EACKmF,SAASuC,cAAc,OACX,QAAV1H,EACFmF,SAASuC,cAAc,OAE9BkgB,EAAA4W,EAAA7W,WAAAn0B,OAAA00B,eAAAsW,GAAA,SAAA5rC,MAAAO,KAAAP,KAAoBoN,M7DsmQrB2L,IAAK,UACL3L,MAAO,S6DnmQKS,GACb,MAAwB,QAApBA,EAAQ2G,QAA0B,MACd,QAApB3G,EAAQ2G,QAA0B,QAAtC,W7DwmQMo3B,GACPhiC,EAASlI,Q6DrmQZkqC,GAAOh8B,SAAW,SAClBg8B,EAAOp3B,SAAW,MAAO,O7DymQxB5U,EAAQ8B,Q6DvmQMkqC,G7D2mQT,SAAS/rC,EAAQD,EAASM,GAE/B,YAUA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAdjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,G8DtoQV,IAAAzD,GAAAzJ,EAAA,I9D2oQK0J,EAAWrI,EAAuBoI,G8DzoQjCkiC,E9DmpQQ,SAAUrW,GAGrB,QAASqW,KAGP,MAFA9vB,GAAgB/b,KAAM6rC,GAEfrX,EAA2Bx0B,MAAO6rC,EAAO9W,WAAan0B,OAAO00B,eAAeuW,IAASxqC,MAAMrB,KAAM0O,YAG1G,MARAimB,GAAUkX,EAAQrW,GAQXqW,GACPjiC,EAASlI,Q8D5pQZmqC,GAAOj8B,SAAW,SAClBi8B,EAAOr3B,QAAU,I9DgqQhB5U,EAAQ8B,Q8D9pQMmqC,G9DkqQT,SAAShsC,EAAQD,EAASM,GAE/B,YAUA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAdjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,G+D7qQV,IAAAzD,GAAAzJ,EAAA,I/DkrQK0J,EAAWrI,EAAuBoI,G+DhrQjCmiC,E/D0rQW,SAAUtW,GAGxB,QAASsW,KAGP,MAFA/vB,GAAgB/b,KAAM8rC,GAEftX,EAA2Bx0B,MAAO8rC,EAAU/W,WAAan0B,OAAO00B,eAAewW,IAAYzqC,MAAMrB,KAAM0O,YAGhH,MARAimB,GAAUmX,EAAWtW,GAQdsW,GACPliC,EAASlI,Q+DnsQZoqC,GAAUl8B,SAAW,YACrBk8B,EAAUt3B,QAAU,I/DusQnB5U,EAAQ8B,Q+DrsQMoqC,G/DysQT,SAASjsC,EAAQD,EAASM,GAE/B,YAgBA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GApBjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAIqT,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,IgEztQ7dzrB,EAAAvJ,EAAA,IhE6tQKwJ,EAAUnI,EAAuBkI,GgE5tQtC3G,EAAA5C,EAAA,IAEM6rC,GACJ,MACA,SACA,SAIIC,EhEiuQO,SAAUvV,GAGpB,QAASuV,KAGP,MAFAjwB,GAAgB/b,KAAMgsC,GAEfxX,EAA2Bx0B,MAAOgsC,EAAMjX,WAAan0B,OAAO00B,eAAe0W,IAAQ3qC,MAAMrB,KAAM0O,YAqDxG,MA1DAimB,GAAUqX,EAAOvV,GAQjBhW,EAAaurB,IACXjzB,IAAK,SACL3L,MAAO,SgE9sQHgD,EAAMhD,GACP2+B,EAAWh3B,QAAQ3E,IAAQ,EACzBhD,EACFpN,KAAK6N,QAAQ6K,aAAatI,EAAMhD,GAEhCpN,KAAK6N,QAAQ8K,gBAAgBvI,GAG/B4kB,EAAAgX,EAAAnrC,UAAAk0B,WAAAn0B,OAAA00B,eAAA0W,EAAAnrC,WAAA,SAAAb,MAAAO,KAAAP,KAAaoQ,EAAMhD,QhEktQpB2L,IAAK,SACL3L,MAAO,SgExvQIA,GACZ,GAAIE,oEAAoBF,EAIxB,OAHqB,gBAAVA,IACTE,EAAKoL,aAAa,MAAO1Y,KAAKorC,SAASh+B,IAElCE,KhE2vQNyL,IAAK,UACL3L,MAAO,SgEzvQKS,GACb,MAAOk+B,GAAWl7B,OAAO,SAASgH,EAASE,GAIzC,MAHIlK,GAAQo+B,aAAal0B,KACvBF,EAAQE,GAAalK,EAAQgJ,aAAakB,IAErCF,UhE6vQRkB,IAAK,QACL3L,MAAO,SgE1vQGi+B,GACX,MAAO,qBAAqBrF,KAAKqF,IAAQ,yBAAyBrF,KAAKqF,MhE8vQtEtyB,IAAK,WACL3L,MAAO,SgE5vQMi+B,GACd,OAAO,EAAAvoC,EAAAsoC,UAASC,GAAM,OAAQ,QAAS,SAAWA,EAAM,UhE+vQvDtyB,IAAK,QACL3L,MAAO,SgE7vQGS,GACX,MAAOA,GAAQgJ,aAAa,WhEiwQtBm1B,GACPtiC,EAAQhI,QgEnvQXsqC,GAAMp8B,SAAW,QACjBo8B,EAAMx3B,QAAU,MhEuvQf5U,EAAQ8B,QgEpvQMsqC,GhEwvQT,SAASnsC,EAAQD,EAASM,GAE/B,YAgBA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GApBjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,GAGT,IAAIqT,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,IiE1zQ7djsB,EAAA/I,EAAA,IACA4C,EAAA5C,EAAA,IjE+zQK6C,EAASxB,EAAuBuB,GiE7zQ/BipC,GACJ,SACA,SAIIG,EjEm0QO,SAAUC,GAGpB,QAASD,KAGP,MAFAnwB,GAAgB/b,KAAMksC,GAEf1X,EAA2Bx0B,MAAOksC,EAAMnX,WAAan0B,OAAO00B,eAAe4W,IAAQ7qC,MAAMrB,KAAM0O,YA+CxG,MApDAimB,GAAUuX,EAAOC,GAQjB1rB,EAAayrB,IACXnzB,IAAK,SACL3L,MAAO,SiEpzQHgD,EAAMhD,GACP2+B,EAAWh3B,QAAQ3E,IAAQ,EACzBhD,EACFpN,KAAK6N,QAAQ6K,aAAatI,EAAMhD,GAEhCpN,KAAK6N,QAAQ8K,gBAAgBvI,GAG/B4kB,EAAAkX,EAAArrC,UAAAk0B,WAAAn0B,OAAA00B,eAAA4W,EAAArrC,WAAA,SAAAb,MAAAO,KAAAP,KAAaoQ,EAAMhD,QjEwzQpB2L,IAAK,SACL3L,MAAO,SiE11QIA,GACZ,GAAIE,oEAAoBF,EAIxB,OAHAE,GAAKoL,aAAa,cAAe,KACjCpL,EAAKoL,aAAa,mBAAmB,GACrCpL,EAAKoL,aAAa,MAAO1Y,KAAKorC,SAASh+B,IAChCE,KjE61QNyL,IAAK,UACL3L,MAAO,SiE31QKS,GACb,MAAOk+B,GAAWl7B,OAAO,SAASgH,EAASE,GAIzC,MAHIlK,GAAQo+B,aAAal0B,KACvBF,EAAQE,GAAalK,EAAQgJ,aAAakB,IAErCF,UjE+1QRkB,IAAK,WACL3L,MAAO,SiE51QMi+B,GACd,MAAOtoC,GAAArB,QAAK0pC,SAASC,MjE+1QpBtyB,IAAK,QACL3L,MAAO,SiE71QGS,GACX,MAAOA,GAAQgJ,aAAa,WjEi2QtBq1B,GACPjjC,EAAOwB,WiEn1QVyhC,GAAMt8B,SAAW,QACjBs8B,EAAMl3B,UAAY,WAClBk3B,EAAM13B,QAAU,SjEu1Qf5U,EAAQ8B,QiEp1QMwqC,GjEw1QT,SAASrsC,EAAQD,EAASM,GAE/B,YAmBA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GkE34Qle,QAASuX,KACP,GAAoB,MAAhBpK,OAAOqK,MACT,KAAM,IAAI10B,OAAM,iCAElB3O,GAAAtH,QAAMsD,SAASsnC,GAAa,GlEg3Q7B1rC,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQ8B,QAAU9B,EAAQ0sC,YAAcp5B,MAExC,IAAIuN,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,IkEv5Q7dzrB,EAAAvJ,EAAA,IlE25QKwJ,EAAUnI,EAAuBkI,GkE15QtCV,EAAA7I,EAAA,IlE85QK8I,EAAUzH,EAAuBwH,GkE35QhCujC,ElEq6Qa,SAAU7V,GAG1B,QAAS6V,KAGP,MAFAvwB,GAAgB/b,KAAMssC,GAEf9X,EAA2Bx0B,MAAOssC,EAAYvX,WAAan0B,OAAO00B,eAAegX,IAAcjrC,MAAMrB,KAAM0O,YA0BpH,MA/BAimB,GAAU2X,EAAa7V,GAQvBhW,EAAa6rB,IACXvzB,IAAK,QACL3L,MAAO,WkEh6QR,MAAO,QlEo6QN2L,IAAK,SACL3L,MAAO,SkEp7QIA,GACZ,GAAIE,oEAAoBF,EAMxB,OALqB,gBAAVA,KACT40B,OAAOqK,MAAME,OAAOn/B,EAAOE,GAC3BA,EAAKoL,aAAa,aAActL,IAElCE,EAAKoL,aAAa,mBAAmB,GAC9BpL,KlEu7QNyL,IAAK,QACL3L,MAAO,SkEr7QGS,GACX,MAAOA,GAAQgJ,aAAa,kBlEy7QtBy1B,GACP5iC,EAAQhI,QkEn7QX4qC,GAAY18B,SAAW,UACvB08B,EAAYt3B,UAAY,aACxBs3B,EAAY93B,QAAU,OlE87QrB5U,EkEn7QQ0sC,clEo7QR1sC,EkEp7QgC8B,QAAX0qC,GlEw7QhB,SAASvsC,EAAQD,EAASM,GAE/B,YA2BA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GA/Bjej0B,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQ8B,QAAU9B,EAAQ4sC,UAAY5sC,EAAQ61B,UAAYviB,MAE1D,IAAIuN,GAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MAE5hB+Y,EAAO,QAAS3gB,GAAIyc,EAAQmE,EAAUC,GAA2B,OAAXpE,IAAiBA,EAASqE,SAASt0B,UAAW,IAAIu0B,GAAOx0B,OAAOy0B,yBAAyBvE,EAAQmE,EAAW,IAAa/hB,SAATkiB,EAAoB,CAAE,GAAIrjB,GAASnR,OAAO00B,eAAexE,EAAS,OAAe,QAAX/e,EAAmB,OAAkCsC,EAAItC,EAAQkjB,EAAUC,GAAoB,GAAI,SAAWE,GAAQ,MAAOA,GAAKhoB,KAAgB,IAAImoB,GAASH,EAAK/gB,GAAK,IAAenB,SAAXqiB,EAA4C,MAAOA,GAAOh1B,KAAK20B,ImEv+Q7drsB,EAAA3I,EAAA,GnE2+QK4I,EAAcvH,EAAuBsH,GmE1+Q1CE,EAAA7I,EAAA,InE8+QK8I,EAAUzH,EAAuBwH,GmE7+QtCoY,EAAAjhB,EAAA,InEi/QKkhB,EAAW7f,EAAuB4f,GmEh/QvCzd,EAAAxD,EAAA,InEo/QKyD,EAASpC,EAAuBmC,GmEj/Q/B+oC,EnE2/QiB,SAAUC,GAG9B,QAASD,KAGP,MAFA1wB,GAAgB/b,KAAMysC,GAEfjY,EAA2Bx0B,MAAOysC,EAAgB1X,WAAan0B,OAAO00B,eAAemX,IAAkBprC,MAAMrB,KAAM0O,YAwB5H,MA7BAimB,GAAU8X,EAAiBC,GAQ3BjsB,EAAagsB,IACX1zB,IAAK,cACL3L,MAAO,SmErgREupB,GACV32B,KAAK6N,QAAQ8nB,YAAc31B,KAAK6N,QAAQ8nB,YACxC31B,KAAKiO,SACL+mB,EAAAyX,EAAA5rC,UAAAk0B,WAAAn0B,OAAA00B,eAAAmX,EAAA5rC,WAAA,cAAAb,MAAAO,KAAAP,KAAkB22B,MnEwgRjB5d,IAAK,YACL3L,MAAO,SmEtgRAu/B,GACR,GAAI3sC,KAAK4sC,aAAe5sC,KAAK6N,QAAQ+T,UAAW,CAC9C,GAAInG,GAAOzb,KAAK6N,QAAQ8nB,aACpBla,EAAK9B,OAAOtK,OAAS,GAAwB,MAAnBrP,KAAK4sC,cACjC5sC,KAAK6N,QAAQ+T,UAAY+qB,EAAUlxB,GACnCzb,KAAKiO,UAEPjO,KAAK4sC,WAAa5sC,KAAK6N,QAAQ+T,enE2gR3B6qB,GACP9oC,EAAOjC,QmExgRV+qC,GAAgBz3B,UAAY,WAG5B,IAAIw3B,GAAY,GAAI1jC,GAAApH,QAAUoL,WAAWE,MAAM,QAAS,QACtD0I,MAAO5M,EAAApH,QAAUwK,MAAMuB,SAInBo/B,EnEwgRQ,SAAU9I,GmEvgRtB,QAAA8I,GAAYvP,EAAOllB,GAAS2D,EAAA/b,KAAA6sC,EAAA,IAAAnrB,GAAA8S,EAAAx0B,MAAA6sC,EAAA9X,WAAAn0B,OAAA00B,eAAAuX,IAAAtsC,KAAAP,KACpBs9B,EAAOllB,GACb,IAAsC,kBAA3BsJ,GAAKtJ,QAAQu0B,UACtB,KAAM,IAAIh1B,OAAM,4FAElB3O,GAAAtH,QAAMsD,SAASwnC,GAAW,GAC1BxjC,EAAAtH,QAAMsD,SAASynC,GAAiB,EAChC,IAAIK,GAAQ,IAPc,OAQ1BprB,GAAK4b,MAAMpb,GAAGlZ,EAAAtH,QAAMkd,OAAOkZ,gBAAiB,WAC7B,MAATgV,IACJA,EAAQhP,WAAW,WACjBpc,EAAKirB,YACLG,EAAQ,MACP,QAELprB,EAAKirB,YAfqBjrB,EnEijR3B,MAzCAiT,GAAUkY,EAAQ9I,GAwBlBtjB,EAAaosB,IACX9zB,IAAK,YACL3L,MAAO,WmEhhRE,GAAAiW,GAAArjB,IACV,KAAIA,KAAKs9B,MAAMvb,UAAU0V,UAAzB,CACA,GAAIvZ,GAAQle,KAAKs9B,MAAMnf,cACvBne,MAAKs9B,MAAMxb,OAAOjS,YAAY48B,GAAiB9+B,QAAQ,SAACo/B,GACtDA,EAAKJ,UAAUtpB,EAAKjL,QAAQu0B,aAE9B3sC,KAAKs9B,MAAMrrB,OAAOjJ,EAAAtH,QAAMqc,QAAQW,QACnB,MAATR,GACFle,KAAKs9B,MAAM7e,aAAaP,EAAOlV,EAAAtH,QAAMqc,QAAQW,anEuhRzCmuB,GACPzrB,EAAS1f,QmEphRZmrC,GAAOjwB,UACL+vB,UAAY,WACV,MAAmB,OAAf3K,OAAOgL,KAAqB,KACzB,SAASvxB,GACd,GAAIrC,GAAS4oB,OAAOgL,KAAKC,cAAcxxB,EACvC,OAAOrC,GAAOhM,WnE2hRnBxN,EmErhR2B61B,UAAnBgX,EnEshRR7sC,EmEthRsC4sC,YnEuhRtC5sC,EmEvhR2D8B,QAAVmrC,GnE2hR5C,SAAShtC,EAAQD,EAASM,GAE/B,YA+BA,SAASqB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,QAASF,GAEvF,QAASqa,GAAgBra,EAAKuX,EAAK3L,GAAiK,MAApJ2L,KAAOvX,GAAOZ,OAAOuM,eAAe3L,EAAKuX,GAAO3L,MAAOA,EAAOkH,YAAY,EAAMC,cAAc,EAAMuH,UAAU,IAAkBta,EAAIuX,GAAO3L,EAAgB5L,EAE3M,QAASua,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASsY,GAA2BC,EAAMl0B,GAAQ,IAAKk0B,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAOn0B,GAAyB,gBAATA,IAAqC,kBAATA,GAA8Bk0B,EAAPl0B,EAElO,QAASo0B,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAI3Y,WAAU,iEAAoE2Y,GAAeD,GAAS/zB,UAAYD,OAAOuL,OAAO0oB,GAAcA,EAAWh0B,WAAawN,aAAejB,MAAOwnB,EAAUtgB,YAAY,EAAOwH,UAAU,EAAMvH,cAAc,KAAesgB,IAAYj0B,OAAOk0B,eAAiBl0B,OAAOk0B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GoEv/Qle,QAASqY,GAAU9wB,EAAWzG,EAAQvI,GACpC,GAAI8I,GAAQ3D,SAASuC,cAAc,SACnCoB,GAAMwC,aAAa,OAAQ,UAC3BxC,EAAMjB,UAAUC,IAAI,MAAQS,GACf,MAATvI,IACF8I,EAAM9I,MAAQA,GAEhBgP,EAAUtO,YAAYoI,GAGxB,QAASi3B,GAAY/wB,EAAWgxB,GACzB34B,MAAMC,QAAQ04B,EAAO,MACxBA,GAAUA,IAEZA,EAAOz/B,QAAQ,SAAS0/B,GACtB,GAAIC,GAAQ/6B,SAASuC,cAAc,OACnCw4B,GAAMr4B,UAAUC,IAAI,cACpBm4B,EAAS1/B,QAAQ,SAAS4/B,GACxB,GAAuB,gBAAZA,GACTL,EAAUI,EAAOC,OACZ,CACL,GAAI53B,GAAS/U,OAAO2X,KAAKg1B,GAAS,GAC9BngC,EAAQmgC,EAAQ53B,EAChBlB,OAAMC,QAAQtH,GAChBogC,EAAUF,EAAO33B,EAAQvI,GAEzB8/B,EAAUI,EAAO33B,EAAQvI,MAI/BgP,EAAUtO,YAAYw/B,KAI1B,QAASE,GAAUpxB,EAAWzG,EAAQqC,GACpC,GAAI9B,GAAQ3D,SAASuC,cAAc,SACnCoB,GAAMjB,UAAUC,IAAI,MAAQS,GAC5BqC,EAAOrK,QAAQ,SAASP,GACtB,GAAIqgC,GAASl7B,SAASuC,cAAc,SAChC1H,MAAU,EACZqgC,EAAO/0B,aAAa,QAAStL,GAE7BqgC,EAAO/0B,aAAa,WAAY,YAElCxC,EAAMpI,YAAY2/B,KAEpBrxB,EAAUtO,YAAYoI,GpEo6QvBtV,OAAOuM,eAAevN,EAAS,cAC7BwN,OAAO,IAETxN,EAAQutC,YAAcvtC,EAAQ8B,QAAUwR,MAExC,IAAIyM,GAAiB,WAAc,QAASO,GAAcxG,EAAK/Y,GAAK,GAAIwf,MAAeC,GAAK,EAAUC,GAAK,EAAWC,EAAKpN,MAAW,KAAM,IAAK,GAAiCqN,GAA7BlN,EAAKqG,EAAIuG,OAAOzM,cAAmB4M,GAAMG,EAAKlN,EAAGzB,QAAQ4O,QAAoBL,EAAKlQ,KAAKsQ,EAAGnT,QAAYzM,GAAKwf,EAAK9Q,SAAW1O,GAA3Dyf,GAAK,IAAoE,MAAOnR,GAAOoR,GAAK,EAAMC,EAAKrR,EAAO,QAAU,KAAWmR,GAAM/M,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIgN,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUzG,EAAK/Y,GAAK,GAAI8T,MAAMC,QAAQgF,GAAQ,MAAOA,EAAY,IAAIuG,OAAOzM,WAAY5S,QAAO8Y,GAAQ,MAAOwG,GAAcxG,EAAK/Y,EAAa,MAAM,IAAIub,WAAU,4DAEllBuE,EAAe,WAAc,QAASC,GAAiBjP,EAAQkP,GAAS,IAAK,GAAIhgB,GAAI,EAAGA,EAAIggB,EAAMtR,OAAQ1O,IAAK,CAAE,GAAIigB,GAAaD,EAAMhgB,EAAIigB,GAAWtM,WAAasM,EAAWtM,aAAc,EAAOsM,EAAWrM,cAAe,EAAU,SAAWqM,KAAYA,EAAW9E,UAAW,GAAMlb,OAAOuM,eAAesE,EAAQmP,EAAW7H,IAAK6H,IAAiB,MAAO,UAAU3E,EAAa4E,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBzE,EAAYpb,UAAWggB,GAAiBC,GAAaJ,EAAiBzE,EAAa6E,GAAqB7E,MoEhnRjiB8E,EAAA7gB,EAAA,IpEonRK+d,EAAe1c,EAAuBwf,GoEnnR3ClY,EAAA3I,EAAA,GpEunRK4I,EAAcvH,EAAuBsH,GoEtnR1CE,EAAA7I,EAAA,IpE0nRK8I,EAAUzH,EAAuBwH,GoEznRtCwY,EAAArhB,EAAA,IpE6nRKshB,EAAWjgB,EAAuBggB,GoE5nRvCJ,EAAAjhB,EAAA,IpEgoRKkhB,EAAW7f,EAAuB4f,GoE9nRnC/D,GAAQ,EAAAoE,EAAA9f,SAAO,iBAGbgsC,EpEyoRS,SAAU3J,GoExoRvB,QAAA2J,GAAYpQ,EAAOllB,GAAS2D,EAAA/b,KAAA0tC,EAAA,IAAA7+B,GAAA2lB,EAAAx0B,MAAA0tC,EAAA3Y,WAAAn0B,OAAA00B,eAAAoY,IAAAntC,KAAAP,KACpBs9B,EAAOllB,GACb,IAAI3D,MAAMC,QAAQ7F,EAAKuJ,QAAQgE,WAAY,CACzC,GAAIA,GAAY7J,SAASuC,cAAc,MACvCq4B,GAAY/wB,EAAWvN,EAAKuJ,QAAQgE,WACpCkhB,EAAMlhB,UAAUrO,WAAWa,aAAawN,EAAWkhB,EAAMlhB,WACzDvN,EAAKuN,UAAYA,MAC0B,gBAA3BvN,GAAKuJ,QAAQgE,UAC7BvN,EAAKuN,UAAY7J,SAASgL,cAAc1O,EAAKuJ,QAAQgE,WAErDvN,EAAKuN,UAAYvN,EAAKuJ,QAAQgE,SAEhC,MAAMvN,EAAKuN,oBAAqBzF,cAAc,IAAAg3B,EAC5C,OAAAA,GAAOvwB,EAAMC,MAAM,iCAAkCxO,EAAKuJ,SAA1Doc,EAAA3lB,EAAA8+B,GAbwB,MAe1B9+B,GAAKuN,UAAUnH,UAAUC,IAAI,cAC7BrG,EAAKw+B,YACLx+B,EAAK++B,YACLhtC,OAAO2X,KAAK1J,EAAKuJ,QAAQw1B,UAAUjgC,QAAQ,SAACgI,GAC1C9G,EAAKg/B,WAAWl4B,EAAQ9G,EAAKuJ,QAAQw1B,SAASj4B,SAE7ChI,QAAQpN,KAAKsO,EAAKuN,UAAUka,iBAAiB,kBAAmB,SAACpgB,GAClErH,EAAKZ,OAAOiI,KAEdrH,EAAKyuB,MAAMpb,GAAGlZ,EAAAtH,QAAMkd,OAAOI,cAAe,SAAC1M,EAAM4L,GAC3C5L,IAAStJ,EAAAtH,QAAMkd,OAAO0Z,kBACxBzpB,EAAKoD,OAAOiM,KAGhBrP,EAAKyuB,MAAMpb,GAAGlZ,EAAAtH,QAAMkd,OAAOkZ,gBAAiB,WAAM,GAAAgW,GAChCj/B,EAAKyuB,MAAMvb,UAAU8C,WADWkpB,EAAApuB,EAAAmuB,EAAA,GAC3C5vB,EAD2C6vB,EAAA,EAEhDl/B,GAAKoD,OAAOiM,KA/BYrP,EpEuyR3B,MA9JA8lB,GAAU+Y,EAAS3J,GA+CnBtjB,EAAaitB,IACX30B,IAAK,aACL3L,MAAO,SoEvpRCuI,EAAQ6xB,GACjBxnC,KAAK4tC,SAASj4B,GAAU6xB,KpE0pRvBzuB,IAAK,SACL3L,MAAO,SoExpRH8I,GAAO,GAAAwL,GAAA1hB,KACR2V,KAAYvJ,KAAK7L,KAAK2V,EAAMjB,UAAW,SAACD,GAC1C,MAAoC,KAA7BA,EAAUD,QAAQ,QAE3B,IAAKY,EAAL,CAKA,GAJAA,EAASA,EAAO1U,MAAM,MAAMoO,QACN,WAAlB6G,EAAM1B,SACR0B,EAAMwC,aAAa,OAAQ,UAEA,MAAzB1Y,KAAK4tC,SAASj4B,GAAiB,CACjC,GAAmC,MAA/B3V,KAAKs9B,MAAMxb,OAAOxJ,WAA4D,MAAvCtY,KAAKs9B,MAAMxb,OAAOxJ,UAAU3C,GAErE,WADAyH,GAAM8F,KAAK,wCAAyCvN,EAAQO,EAG9D,IAA+B,MAA3BpN,EAAApH,QAAU2K,MAAMsJ,GAElB,WADAyH,GAAM8F,KAAK,2CAA4CvN,EAAQO,GAInE,GAAI2nB,GAA8B,WAAlB3nB,EAAM1B,QAAuB,SAAW,OACxD0B,GAAM8R,iBAAiB6V,EAAW,SAACrwB,GACjC,GAAIJ,SACJ,IAAsB,WAAlB8I,EAAM1B,QAAsB,CAC9B,GAAI0B,EAAM83B,cAAgB,EAAG,MAC7B,IAAIC,GAAW/3B,EAAMkC,QAAQlC,EAAM83B,cAEjC5gC,IADE6gC,EAAShC,aAAa,cAGhBgC,EAAS7gC,QAAS,OAI1BA,IADE8I,EAAMjB,UAAU3B,SAAS,eAGnB4C,EAAM9I,QAAU8I,EAAM+1B,aAAa,UAE7Cz+B,EAAEk8B,gBAEJhoB,GAAK4b,MAAM1Z,OAlB4B,IAAAsqB,GAmBvBxsB,EAAK4b,MAAMvb,UAAU8C,WAnBEspB,EAAAxuB,EAAAuuB,EAAA,GAmBlChwB,EAnBkCiwB,EAAA,EAoBvC,IAA6B,MAAzBzsB,EAAKksB,SAASj4B,GAChB+L,EAAKksB,SAASj4B,GAAQpV,KAAtBmhB,EAAiCtU,OAC5B,IAAItE,EAAApH,QAAU2K,MAAMsJ,GAAQ9U,oBAAqBiI,GAAApH,QAAU+K,MAAO,CAEvE,GADAW,EAAQghC,gBAAgBz4B,IACnBvI,EAAO,MACZsU,GAAK4b,MAAMuH,gBAAe,GAAA5mB,GAAAvc,SACvBgnB,OAAOxK,EAAM9O,OACbmX,OAAOrI,EAAM7O,QACbiX,OAHuBzK,KAGblG,EAASvI,IACpBpE,EAAAtH,QAAMqc,QAAQC,UAEhB0D,GAAK4b,MAAM3nB,OAAOA,EAAQvI,EAAOpE,EAAAtH,QAAMqc,QAAQC,KAEjD0D,GAAKzP,OAAOiM,KAGdle,KAAKqtC,SAASp9B,MAAM0F,EAAQO,QpE6pR3B6C,IAAK,SACL3L,MAAO,SoE3pRH8Q,GACL,GAAIrG,GAAmB,MAATqG,KAAqBle,KAAKs9B,MAAM1Y,UAAU1G,EACxDle,MAAKqtC,SAAS1/B,QAAQ,SAASu2B,GAAM,GAAAM,GAAA7kB,EACbukB,EADa,GAC9BvuB,EAD8B6uB,EAAA,GACtBtuB,EADsBsuB,EAAA,EAEnC,IAAsB,WAAlBtuB,EAAM1B,QAAsB,CAC9B,GAAIi5B,SACJ,IAAa,MAATvvB,EACFuvB,EAAS,SACJ,IAAuB,MAAnB51B,EAAQlC,GACjB83B,EAASv3B,EAAMqH,cAAc,wBACxB,KAAK9I,MAAMC,QAAQmD,EAAQlC,IAAU,CAC1C,GAAIvI,GAAQyK,EAAQlC,EACC,iBAAVvI,KACTA,EAAQA,EAAMoE,QAAQ,MAAO,QAE/Bi8B,EAASv3B,EAAMqH,cAAN,iBAAqCnQ,EAArC,MAEG,MAAVqgC,GACFv3B,EAAM9I,MAAQ,GACd8I,EAAM83B,eAAgB,GAEtBP,EAAOQ,UAAW,MAGpB,IAAa,MAAT/vB,EACFhI,EAAMjB,UAAU3F,OAAO,iBAClB,IAAI4G,EAAM+1B,aAAa,SAAU,CAGtC,GAAIoC,GAAWx2B,EAAQlC,KAAYO,EAAMW,aAAa,UACnB,MAAnBgB,EAAQlC,IAAmBkC,EAAQlC,GAAQd,aAAeqB,EAAMW,aAAa,UAC1D,MAAnBgB,EAAQlC,KAAoBO,EAAMW,aAAa,QAC/DX,GAAMjB,UAAUkN,OAAO,YAAaksB,OAEpCn4B,GAAMjB,UAAUkN,OAAO,YAAgC,MAAnBtK,EAAQlC,UpEmqR5C+3B,GACPtsB,EAAS1f,QoE9pRZgsC,GAAQ9wB,YAoDR8wB,EAAQ9wB,UACNR,UAAW,KACXwxB,UACEU,MAAO,WAAW,GAAAjrB,GAAArjB,KACZke,EAAQle,KAAKs9B,MAAMnf,cACvB,IAAa,MAATD,EACJ,GAAoB,GAAhBA,EAAM7O,OAAa,CACrB,GAAIwI,GAAU7X,KAAKs9B,MAAM1Y,WACzBhkB,QAAO2X,KAAKV,GAASlK,QAAQ,SAACyC,GAEyB,MAAjDtH,EAAApH,QAAU2K,MAAM+D,EAAMtH,EAAApH,QAAUwK,MAAMuB,SACxC4V,EAAKia,MAAM3nB,OAAOvF,GAAM,SAI5BpQ,MAAKs9B,MAAMvX,aAAa7H,EAAOlV,EAAAtH,QAAMqc,QAAQC,OAGjDuwB,UAAW,SAASnhC,GAClB,GAAIohC,GAAQxuC,KAAKs9B,MAAM1Y,YAAX,KACE,SAAVxX,GAA4B,MAATohC,EACrBxuC,KAAKs9B,MAAM3nB,OAAO,QAAS,QAAS3M,EAAAtH,QAAMqc,QAAQC,MACxC5Q,GAAmB,UAAVohC,GACnBxuC,KAAKs9B,MAAM3nB,OAAO,SAAS,EAAO3M,EAAAtH,QAAMqc,QAAQC,MAElDhe,KAAKs9B,MAAM3nB,OAAO,YAAavI,EAAOpE,EAAAtH,QAAMqc,QAAQC,OAEtDywB,KAAM,SAASrhC,GACTA,KAAU,IACZA,EAAQghC,OAAO,oBAEjBpuC,KAAKs9B,MAAM3nB,OAAO,OAAQvI,EAAOpE,EAAAtH,QAAMqc,QAAQC,OAEjDqpB,OAAQ,QAAAA,GAASj6B,GACf,GAAI8Q,GAAQle,KAAKs9B,MAAMnf,eACnBtG,EAAU7X,KAAKs9B,MAAM1Y,UAAU1G,GAC/BmpB,EAASzyB,SAASiD,EAAQwvB,QAAU,EACxC,IAAc,OAAVj6B,GAA4B,OAAVA,EAAgB,CACpC,GAAIqQ,GAAsB,OAAVrQ,EAAkB,GAAI,CACZ,SAAtByK,EAAQ02B,YAAqB9wB,IAAY,GAC7Czd,KAAKs9B,MAAM3nB,OAAO,SAAU0xB,EAAS5pB,EAAUzU,EAAAtH,QAAMqc,QAAQC,UpEuqRpEpe,EoEhqRmB8B,QAAXgsC,EpEiqRR9tC,EoEjqR4ButC,epEqqRvB,SAASttC,EAAQD,EAASM,GAE/B,YqE95RDL,GAAOD,SACL4uC,OACEE,GAAYxuC,EAAQ,IACpByuC,OAAYzuC,EAAQ,IACpBs/B,MAAYt/B,EAAQ,IACpB0uC,QAAY1uC,EAAQ,KAEtB2uC,WAAc3uC,EAAQ,IACtBkqC,WAAclqC,EAAQ,IACtBmjC,KAAcnjC,EAAQ,IACtBouC,MAAcpuC,EAAQ,IACtB6sC,KAAc7sC,EAAQ,IACtBqnC,aAAcrnC,EAAQ,IACtB4uC,MAAc5uC,EAAQ,IACtBquC,WACEG,GAAYxuC,EAAQ,IACpB6uC,IAAY7uC,EAAQ,KAEtB8uC,OACEL,OAAYzuC,EAAQ,IACpB+uC,KAAY/uC,EAAQ,IACpBk/B,KAAYl/B,EAAQ,IACpBs/B,MAAYt/B,EAAQ,KAEtBgvC,QAAchvC,EAAQ,IACtBivC,QACEC,EAAYlvC,EAAQ,IACpBmvC,EAAYnvC,EAAQ,KAEtB8pC,OAAc9pC,EAAQ,IACtBiyB,MAAcjyB,EAAQ,IACtBmnC,QACEiI,KAAYpvC,EAAQ,IACpBqvC,KAAYrvC,EAAQ,KAEtBuuC,KAAcvuC,EAAQ,IACtB4nB,MACE0nB,QAAYtvC,EAAQ,IACpBkyB,OAAYlyB,EAAQ,KAEtBuvC,QACEC,IAAYxvC,EAAQ,IACpByvC,MAAYzvC,EAAQ,MAEtB0vC,OAAc1vC,EAAQ,KACtB+pC,UAAc/pC,EAAQ,KACtB2vC,MAAc3vC,EAAQ,OrEq6RlB,SAASL,EAAQD,GsEn9RvBC,EAAAD,QAAA,8LtEy9RM,SAASC,EAAQD,GuEz9RvBC,EAAAD,QAAA,+LvE+9RM,SAASC,EAAQD,GwE/9RvBC,EAAAD,QAAA,+LxEq+RM,SAASC,EAAQD,GyEr+RvBC,EAAAD,QAAA,+LzE2+RM,SAASC,EAAQD,G0E3+RvBC,EAAAD,QAAA;E1Ei/RM,SAASC,EAAQD,G2Ej/RvBC,EAAAD,QAAA,sT3Eu/RM,SAASC,EAAQD,G4Ev/RvBC,EAAAD,QAAA,iR5E6/RM,SAASC,EAAQD,G6E7/RvBC,EAAAD,QAAA,sU7EmgSM,SAASC,EAAQD,G8EngSvBC,EAAAD,QAAA,uO9EygSM,SAASC,EAAQD,G+EzgSvBC,EAAAD,QAAA,oP/E+gSM,SAASC,EAAQD,GgF/gSvBC,EAAAD,QAAA,mVhFqhSM,SAASC,EAAQD,GiFrhSvBC,EAAAD,QAAA,kVjF2hSM,SAASC,EAAQD,GkF3hSvBC,EAAAD,QAAA,qOlFiiSM,SAASC,EAAQD,GmFjiSvBC,EAAAD,QAAA,mOnFuiSM,SAASC,EAAQD,GoFviSvBC,EAAAD,QAAA,0WpF6iSM,SAASC,EAAQD,GqF7iSvBC,EAAAD,QAAA,6YrFmjSM,SAASC,EAAQD,GsFnjSvBC,EAAAD,QAAA,03CtFyjSM,SAASC,EAAQD,GuFzjSvBC,EAAAD,QAAA,mcvF+jSM,SAASC,EAAQD,GwF/jSvBC,EAAAD,QAAA,gTxFqkSM,SAASC,EAAQD,GyFrkSvBC,EAAAD,QAAA,gMzF2kSM,SAASC,EAAQD,G0F3kSvBC,EAAAD,QAAA,0O1FilSM,SAASC,EAAQD,G2FjlSvBC,EAAAD,QAAA,yQ3FulSM,SAASC,EAAQD,G4FvlSvBC,EAAAD,QAAA,+P5F6lSM,SAASC,EAAQD,G6F7lSvBC,EAAAD,QAAA,+Z7FmmSM,SAASC,EAAQD,G8FnmSvBC,EAAAD,QAAA,osB9FymSM,SAASC,EAAQD,G+FzmSvBC,EAAAD,QAAA,uV/F+mSM,SAASC,EAAQD,GgG/mSvBC,EAAAD,QAAA,wqBhGqnSM,SAASC,EAAQD,GiGrnSvBC,EAAAD,QAAA,ijBjG2nSM,SAASC,EAAQD,GkG3nSvBC,EAAAD,QAAA,6gBlGioSM,SAASC,EAAQD,GmGjoSvBC,EAAAD,QAAA,gMnGuoSM,SAASC,EAAQD,GoGvoSvBC,EAAAD,QAAA,+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","file":"quill.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","/*!\n * Quill Editor v1.1.5\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ((function(modules) {\n\t// Check all modules for deduplicated modules\n\tfor(var i in modules) {\n\t\tif(Object.prototype.hasOwnProperty.call(modules, i)) {\n\t\t\tswitch(typeof modules[i]) {\n\t\t\tcase \"function\": break;\n\t\t\tcase \"object\":\n\t\t\t\t// Module can be created from a template\n\t\t\t\tmodules[i] = (function(_m) {\n\t\t\t\t\tvar args = _m.slice(1), fn = modules[_m[0]];\n\t\t\t\t\treturn function (a,b,c) {\n\t\t\t\t\t\tfn.apply(this, [a,b,c].concat(args));\n\t\t\t\t\t};\n\t\t\t\t}(modules[i]));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Module is a copy of another module\n\t\t\t\tmodules[i] = modules[modules[i]];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn modules;\n}([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _core = __webpack_require__(1);\n\t\n\tvar _core2 = _interopRequireDefault(_core);\n\t\n\tvar _align = __webpack_require__(49);\n\t\n\tvar _direction = __webpack_require__(52);\n\t\n\tvar _indent = __webpack_require__(57);\n\t\n\tvar _blockquote = __webpack_require__(58);\n\t\n\tvar _blockquote2 = _interopRequireDefault(_blockquote);\n\t\n\tvar _header = __webpack_require__(59);\n\t\n\tvar _header2 = _interopRequireDefault(_header);\n\t\n\tvar _list = __webpack_require__(60);\n\t\n\tvar _list2 = _interopRequireDefault(_list);\n\t\n\tvar _background = __webpack_require__(50);\n\t\n\tvar _color = __webpack_require__(51);\n\t\n\tvar _font = __webpack_require__(53);\n\t\n\tvar _size = __webpack_require__(54);\n\t\n\tvar _bold = __webpack_require__(61);\n\t\n\tvar _bold2 = _interopRequireDefault(_bold);\n\t\n\tvar _italic = __webpack_require__(62);\n\t\n\tvar _italic2 = _interopRequireDefault(_italic);\n\t\n\tvar _link = __webpack_require__(63);\n\t\n\tvar _link2 = _interopRequireDefault(_link);\n\t\n\tvar _script = __webpack_require__(64);\n\t\n\tvar _script2 = _interopRequireDefault(_script);\n\t\n\tvar _strike = __webpack_require__(65);\n\t\n\tvar _strike2 = _interopRequireDefault(_strike);\n\t\n\tvar _underline = __webpack_require__(66);\n\t\n\tvar _underline2 = _interopRequireDefault(_underline);\n\t\n\tvar _image = __webpack_require__(67);\n\t\n\tvar _image2 = _interopRequireDefault(_image);\n\t\n\tvar _video = __webpack_require__(68);\n\t\n\tvar _video2 = _interopRequireDefault(_video);\n\t\n\tvar _code = __webpack_require__(28);\n\t\n\tvar _code2 = _interopRequireDefault(_code);\n\t\n\tvar _formula = __webpack_require__(69);\n\t\n\tvar _formula2 = _interopRequireDefault(_formula);\n\t\n\tvar _syntax = __webpack_require__(70);\n\t\n\tvar _syntax2 = _interopRequireDefault(_syntax);\n\t\n\tvar _toolbar = __webpack_require__(71);\n\t\n\tvar _toolbar2 = _interopRequireDefault(_toolbar);\n\t\n\tvar _icons = __webpack_require__(72);\n\t\n\tvar _icons2 = _interopRequireDefault(_icons);\n\t\n\tvar _picker = __webpack_require__(104);\n\t\n\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\tvar _colorPicker = __webpack_require__(106);\n\t\n\tvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\t\n\tvar _iconPicker = __webpack_require__(107);\n\t\n\tvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\t\n\tvar _tooltip = __webpack_require__(108);\n\t\n\tvar _tooltip2 = _interopRequireDefault(_tooltip);\n\t\n\tvar _bubble = __webpack_require__(109);\n\t\n\tvar _bubble2 = _interopRequireDefault(_bubble);\n\t\n\tvar _snow = __webpack_require__(111);\n\t\n\tvar _snow2 = _interopRequireDefault(_snow);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t_core2.default.register({\n\t  'attributors/attribute/direction': _direction.DirectionAttribute,\n\t\n\t  'attributors/class/align': _align.AlignClass,\n\t  'attributors/class/background': _background.BackgroundClass,\n\t  'attributors/class/color': _color.ColorClass,\n\t  'attributors/class/direction': _direction.DirectionClass,\n\t  'attributors/class/font': _font.FontClass,\n\t  'attributors/class/size': _size.SizeClass,\n\t\n\t  'attributors/style/align': _align.AlignStyle,\n\t  'attributors/style/background': _background.BackgroundStyle,\n\t  'attributors/style/color': _color.ColorStyle,\n\t  'attributors/style/direction': _direction.DirectionStyle,\n\t  'attributors/style/font': _font.FontStyle,\n\t  'attributors/style/size': _size.SizeStyle\n\t}, true);\n\t\n\t_core2.default.register({\n\t  'formats/align': _align.AlignClass,\n\t  'formats/direction': _direction.DirectionClass,\n\t  'formats/indent': _indent.IndentClass,\n\t\n\t  'formats/background': _background.BackgroundStyle,\n\t  'formats/color': _color.ColorStyle,\n\t  'formats/font': _font.FontClass,\n\t  'formats/size': _size.SizeClass,\n\t\n\t  'formats/blockquote': _blockquote2.default,\n\t  'formats/code-block': _code2.default,\n\t  'formats/header': _header2.default,\n\t  'formats/list': _list2.default,\n\t\n\t  'formats/bold': _bold2.default,\n\t  'formats/code': _code.Code,\n\t  'formats/italic': _italic2.default,\n\t  'formats/link': _link2.default,\n\t  'formats/script': _script2.default,\n\t  'formats/strike': _strike2.default,\n\t  'formats/underline': _underline2.default,\n\t\n\t  'formats/image': _image2.default,\n\t  'formats/video': _video2.default,\n\t\n\t  'formats/list/item': _list.ListItem,\n\t\n\t  'modules/formula': _formula2.default,\n\t  'modules/syntax': _syntax2.default,\n\t  'modules/toolbar': _toolbar2.default,\n\t\n\t  'themes/bubble': _bubble2.default,\n\t  'themes/snow': _snow2.default,\n\t\n\t  'ui/icons': _icons2.default,\n\t  'ui/picker': _picker2.default,\n\t  'ui/icon-picker': _iconPicker2.default,\n\t  'ui/color-picker': _colorPicker2.default,\n\t  'ui/tooltip': _tooltip2.default\n\t}, true);\n\t\n\tmodule.exports = _core2.default;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _break = __webpack_require__(31);\n\t\n\tvar _break2 = _interopRequireDefault(_break);\n\t\n\tvar _container = __webpack_require__(46);\n\t\n\tvar _container2 = _interopRequireDefault(_container);\n\t\n\tvar _cursor = __webpack_require__(35);\n\t\n\tvar _cursor2 = _interopRequireDefault(_cursor);\n\t\n\tvar _embed = __webpack_require__(32);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _inline = __webpack_require__(33);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tvar _scroll = __webpack_require__(47);\n\t\n\tvar _scroll2 = _interopRequireDefault(_scroll);\n\t\n\tvar _text = __webpack_require__(34);\n\t\n\tvar _text2 = _interopRequireDefault(_text);\n\t\n\tvar _clipboard = __webpack_require__(48);\n\t\n\tvar _clipboard2 = _interopRequireDefault(_clipboard);\n\t\n\tvar _history = __webpack_require__(55);\n\t\n\tvar _history2 = _interopRequireDefault(_history);\n\t\n\tvar _keyboard = __webpack_require__(56);\n\t\n\tvar _keyboard2 = _interopRequireDefault(_keyboard);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t_quill2.default.register({\n\t  'blots/block': _block2.default,\n\t  'blots/block/embed': _block.BlockEmbed,\n\t  'blots/break': _break2.default,\n\t  'blots/container': _container2.default,\n\t  'blots/cursor': _cursor2.default,\n\t  'blots/embed': _embed2.default,\n\t  'blots/inline': _inline2.default,\n\t  'blots/scroll': _scroll2.default,\n\t  'blots/text': _text2.default,\n\t\n\t  'modules/clipboard': _clipboard2.default,\n\t  'modules/history': _history2.default,\n\t  'modules/keyboard': _keyboard2.default\n\t});\n\t\n\t_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\t\n\tmodule.exports = _quill2.default;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar container_1 = __webpack_require__(3);\n\tvar format_1 = __webpack_require__(7);\n\tvar leaf_1 = __webpack_require__(12);\n\tvar scroll_1 = __webpack_require__(13);\n\tvar inline_1 = __webpack_require__(14);\n\tvar block_1 = __webpack_require__(15);\n\tvar embed_1 = __webpack_require__(16);\n\tvar text_1 = __webpack_require__(17);\n\tvar attributor_1 = __webpack_require__(8);\n\tvar class_1 = __webpack_require__(10);\n\tvar style_1 = __webpack_require__(11);\n\tvar store_1 = __webpack_require__(9);\n\tvar Registry = __webpack_require__(6);\n\tvar Parchment = {\n\t    Scope: Registry.Scope,\n\t    create: Registry.create,\n\t    find: Registry.find,\n\t    query: Registry.query,\n\t    register: Registry.register,\n\t    Container: container_1.default,\n\t    Format: format_1.default,\n\t    Leaf: leaf_1.default,\n\t    Embed: embed_1.default,\n\t    Scroll: scroll_1.default,\n\t    Block: block_1.default,\n\t    Inline: inline_1.default,\n\t    Text: text_1.default,\n\t    Attributor: {\n\t        Attribute: attributor_1.default,\n\t        Class: class_1.default,\n\t        Style: style_1.default,\n\t        Store: store_1.default\n\t    }\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = Parchment;\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t    function __() { this.constructor = d; }\n\t    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar linked_list_1 = __webpack_require__(4);\n\tvar shadow_1 = __webpack_require__(5);\n\tvar Registry = __webpack_require__(6);\n\tvar ContainerBlot = (function (_super) {\n\t    __extends(ContainerBlot, _super);\n\t    function ContainerBlot() {\n\t        _super.apply(this, arguments);\n\t    }\n\t    ContainerBlot.prototype.appendChild = function (other) {\n\t        this.insertBefore(other);\n\t    };\n\t    ContainerBlot.prototype.attach = function () {\n\t        var _this = this;\n\t        _super.prototype.attach.call(this);\n\t        this.children = new linked_list_1.default();\n\t        // Need to be reversed for if DOM nodes already in order\n\t        [].slice.call(this.domNode.childNodes).reverse().forEach(function (node) {\n\t            try {\n\t                var child = makeBlot(node);\n\t                _this.insertBefore(child, _this.children.head);\n\t            }\n\t            catch (err) {\n\t                if (err instanceof Registry.ParchmentError)\n\t                    return;\n\t                else\n\t                    throw err;\n\t            }\n\t        });\n\t    };\n\t    ContainerBlot.prototype.deleteAt = function (index, length) {\n\t        if (index === 0 && length === this.length()) {\n\t            return this.remove();\n\t        }\n\t        this.children.forEachAt(index, length, function (child, offset, length) {\n\t            child.deleteAt(offset, length);\n\t        });\n\t    };\n\t    ContainerBlot.prototype.descendant = function (criteria, index) {\n\t        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n\t        if ((criteria.blotName == null && criteria(child)) ||\n\t            (criteria.blotName != null && child instanceof criteria)) {\n\t            return [child, offset];\n\t        }\n\t        else if (child instanceof ContainerBlot) {\n\t            return child.descendant(criteria, offset);\n\t        }\n\t        else {\n\t            return [null, -1];\n\t        }\n\t    };\n\t    ContainerBlot.prototype.descendants = function (criteria, index, length) {\n\t        if (index === void 0) { index = 0; }\n\t        if (length === void 0) { length = Number.MAX_VALUE; }\n\t        var descendants = [], lengthLeft = length;\n\t        this.children.forEachAt(index, length, function (child, index, length) {\n\t            if ((criteria.blotName == null && criteria(child)) ||\n\t                (criteria.blotName != null && child instanceof criteria)) {\n\t                descendants.push(child);\n\t            }\n\t            if (child instanceof ContainerBlot) {\n\t                descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n\t            }\n\t            lengthLeft -= length;\n\t        });\n\t        return descendants;\n\t    };\n\t    ContainerBlot.prototype.detach = function () {\n\t        this.children.forEach(function (child) {\n\t            child.detach();\n\t        });\n\t        _super.prototype.detach.call(this);\n\t    };\n\t    ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n\t        this.children.forEachAt(index, length, function (child, offset, length) {\n\t            child.formatAt(offset, length, name, value);\n\t        });\n\t    };\n\t    ContainerBlot.prototype.insertAt = function (index, value, def) {\n\t        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n\t        if (child) {\n\t            child.insertAt(offset, value, def);\n\t        }\n\t        else {\n\t            var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n\t            this.appendChild(blot);\n\t        }\n\t    };\n\t    ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n\t        if (this.statics.allowedChildren != null && !this.statics.allowedChildren.some(function (child) {\n\t            return childBlot instanceof child;\n\t        })) {\n\t            throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n\t        }\n\t        childBlot.insertInto(this, refBlot);\n\t    };\n\t    ContainerBlot.prototype.length = function () {\n\t        return this.children.reduce(function (memo, child) {\n\t            return memo + child.length();\n\t        }, 0);\n\t    };\n\t    ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n\t        this.children.forEach(function (child) {\n\t            targetParent.insertBefore(child, refNode);\n\t        });\n\t    };\n\t    ContainerBlot.prototype.optimize = function () {\n\t        _super.prototype.optimize.call(this);\n\t        if (this.children.length === 0) {\n\t            if (this.statics.defaultChild != null) {\n\t                var child = Registry.create(this.statics.defaultChild);\n\t                this.appendChild(child);\n\t                child.optimize();\n\t            }\n\t            else {\n\t                this.remove();\n\t            }\n\t        }\n\t    };\n\t    ContainerBlot.prototype.path = function (index, inclusive) {\n\t        if (inclusive === void 0) { inclusive = false; }\n\t        var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n\t        var position = [[this, index]];\n\t        if (child instanceof ContainerBlot) {\n\t            return position.concat(child.path(offset, inclusive));\n\t        }\n\t        else if (child != null) {\n\t            position.push([child, offset]);\n\t        }\n\t        return position;\n\t    };\n\t    ContainerBlot.prototype.removeChild = function (child) {\n\t        this.children.remove(child);\n\t    };\n\t    ContainerBlot.prototype.replace = function (target) {\n\t        if (target instanceof ContainerBlot) {\n\t            target.moveChildren(this);\n\t        }\n\t        _super.prototype.replace.call(this, target);\n\t    };\n\t    ContainerBlot.prototype.split = function (index, force) {\n\t        if (force === void 0) { force = false; }\n\t        if (!force) {\n\t            if (index === 0)\n\t                return this;\n\t            if (index === this.length())\n\t                return this.next;\n\t        }\n\t        var after = this.clone();\n\t        this.parent.insertBefore(after, this.next);\n\t        this.children.forEachAt(index, this.length(), function (child, offset, length) {\n\t            child = child.split(offset, force);\n\t            after.appendChild(child);\n\t        });\n\t        return after;\n\t    };\n\t    ContainerBlot.prototype.unwrap = function () {\n\t        this.moveChildren(this.parent, this.next);\n\t        this.remove();\n\t    };\n\t    ContainerBlot.prototype.update = function (mutations) {\n\t        var _this = this;\n\t        var addedNodes = [], removedNodes = [];\n\t        mutations.forEach(function (mutation) {\n\t            if (mutation.target === _this.domNode && mutation.type === 'childList') {\n\t                addedNodes.push.apply(addedNodes, mutation.addedNodes);\n\t                removedNodes.push.apply(removedNodes, mutation.removedNodes);\n\t            }\n\t        });\n\t        removedNodes.forEach(function (node) {\n\t            if (node.parentNode != null &&\n\t                (document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY)) {\n\t                // Node has not actually been removed\n\t                return;\n\t            }\n\t            var blot = Registry.find(node);\n\t            if (blot == null)\n\t                return;\n\t            if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n\t                blot.detach();\n\t            }\n\t        });\n\t        addedNodes.filter(function (node) {\n\t            return node.parentNode == _this.domNode;\n\t        }).sort(function (a, b) {\n\t            if (a === b)\n\t                return 0;\n\t            if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n\t                return 1;\n\t            }\n\t            return -1;\n\t        }).forEach(function (node) {\n\t            var refBlot = null;\n\t            if (node.nextSibling != null) {\n\t                refBlot = Registry.find(node.nextSibling);\n\t            }\n\t            var blot = makeBlot(node);\n\t            if (blot.next != refBlot || blot.next == null) {\n\t                if (blot.parent != null) {\n\t                    blot.parent.removeChild(_this);\n\t                }\n\t                _this.insertBefore(blot, refBlot);\n\t            }\n\t        });\n\t    };\n\t    return ContainerBlot;\n\t}(shadow_1.default));\n\tfunction makeBlot(node) {\n\t    var blot = Registry.find(node);\n\t    if (blot == null) {\n\t        try {\n\t            blot = Registry.create(node);\n\t        }\n\t        catch (e) {\n\t            blot = Registry.create(Registry.Scope.INLINE);\n\t            [].slice.call(node.childNodes).forEach(function (child) {\n\t                blot.domNode.appendChild(child);\n\t            });\n\t            node.parentNode.replaceChild(blot.domNode, node);\n\t            blot.attach();\n\t        }\n\t    }\n\t    return blot;\n\t}\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ContainerBlot;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tvar LinkedList = (function () {\n\t    function LinkedList() {\n\t        this.head = this.tail = undefined;\n\t        this.length = 0;\n\t    }\n\t    LinkedList.prototype.append = function () {\n\t        var nodes = [];\n\t        for (var _i = 0; _i < arguments.length; _i++) {\n\t            nodes[_i - 0] = arguments[_i];\n\t        }\n\t        this.insertBefore(nodes[0], undefined);\n\t        if (nodes.length > 1) {\n\t            this.append.apply(this, nodes.slice(1));\n\t        }\n\t    };\n\t    LinkedList.prototype.contains = function (node) {\n\t        var cur, next = this.iterator();\n\t        while (cur = next()) {\n\t            if (cur === node)\n\t                return true;\n\t        }\n\t        return false;\n\t    };\n\t    LinkedList.prototype.insertBefore = function (node, refNode) {\n\t        node.next = refNode;\n\t        if (refNode != null) {\n\t            node.prev = refNode.prev;\n\t            if (refNode.prev != null) {\n\t                refNode.prev.next = node;\n\t            }\n\t            refNode.prev = node;\n\t            if (refNode === this.head) {\n\t                this.head = node;\n\t            }\n\t        }\n\t        else if (this.tail != null) {\n\t            this.tail.next = node;\n\t            node.prev = this.tail;\n\t            this.tail = node;\n\t        }\n\t        else {\n\t            node.prev = undefined;\n\t            this.head = this.tail = node;\n\t        }\n\t        this.length += 1;\n\t    };\n\t    LinkedList.prototype.offset = function (target) {\n\t        var index = 0, cur = this.head;\n\t        while (cur != null) {\n\t            if (cur === target)\n\t                return index;\n\t            index += cur.length();\n\t            cur = cur.next;\n\t        }\n\t        return -1;\n\t    };\n\t    LinkedList.prototype.remove = function (node) {\n\t        if (!this.contains(node))\n\t            return;\n\t        if (node.prev != null)\n\t            node.prev.next = node.next;\n\t        if (node.next != null)\n\t            node.next.prev = node.prev;\n\t        if (node === this.head)\n\t            this.head = node.next;\n\t        if (node === this.tail)\n\t            this.tail = node.prev;\n\t        this.length -= 1;\n\t    };\n\t    LinkedList.prototype.iterator = function (curNode) {\n\t        if (curNode === void 0) { curNode = this.head; }\n\t        // TODO use yield when we can\n\t        return function () {\n\t            var ret = curNode;\n\t            if (curNode != null)\n\t                curNode = curNode.next;\n\t            return ret;\n\t        };\n\t    };\n\t    LinkedList.prototype.find = function (index, inclusive) {\n\t        if (inclusive === void 0) { inclusive = false; }\n\t        var cur, next = this.iterator();\n\t        while (cur = next()) {\n\t            var length_1 = cur.length();\n\t            if (index < length_1 || (inclusive && index === length_1 && (cur.next == null || cur.next.length() !== 0))) {\n\t                return [cur, index];\n\t            }\n\t            index -= length_1;\n\t        }\n\t        return [null, 0];\n\t    };\n\t    LinkedList.prototype.forEach = function (callback) {\n\t        var cur, next = this.iterator();\n\t        while (cur = next()) {\n\t            callback(cur);\n\t        }\n\t    };\n\t    LinkedList.prototype.forEachAt = function (index, length, callback) {\n\t        if (length <= 0)\n\t            return;\n\t        var _a = this.find(index), startNode = _a[0], offset = _a[1];\n\t        var cur, curIndex = index - offset, next = this.iterator(startNode);\n\t        while ((cur = next()) && curIndex < index + length) {\n\t            var curLength = cur.length();\n\t            if (index > curIndex) {\n\t                callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n\t            }\n\t            else {\n\t                callback(cur, 0, Math.min(curLength, index + length - curIndex));\n\t            }\n\t            curIndex += curLength;\n\t        }\n\t    };\n\t    LinkedList.prototype.map = function (callback) {\n\t        return this.reduce(function (memo, cur) {\n\t            memo.push(callback(cur));\n\t            return memo;\n\t        }, []);\n\t    };\n\t    LinkedList.prototype.reduce = function (callback, memo) {\n\t        var cur, next = this.iterator();\n\t        while (cur = next()) {\n\t            memo = callback(memo, cur);\n\t        }\n\t        return memo;\n\t    };\n\t    return LinkedList;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = LinkedList;\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar Registry = __webpack_require__(6);\n\tvar ShadowBlot = (function () {\n\t    function ShadowBlot(domNode) {\n\t        this.domNode = domNode;\n\t        this.attach();\n\t    }\n\t    Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n\t        // Hack for accessing inherited static methods\n\t        get: function () {\n\t            return this.constructor;\n\t        },\n\t        enumerable: true,\n\t        configurable: true\n\t    });\n\t    ShadowBlot.create = function (value) {\n\t        if (this.tagName == null) {\n\t            throw new Registry.ParchmentError('Blot definition missing tagName');\n\t        }\n\t        var node;\n\t        if (Array.isArray(this.tagName)) {\n\t            if (typeof value === 'string') {\n\t                value = value.toUpperCase();\n\t                if (parseInt(value).toString() === value) {\n\t                    value = parseInt(value);\n\t                }\n\t            }\n\t            if (typeof value === 'number') {\n\t                node = document.createElement(this.tagName[value - 1]);\n\t            }\n\t            else if (this.tagName.indexOf(value) > -1) {\n\t                node = document.createElement(value);\n\t            }\n\t            else {\n\t                node = document.createElement(this.tagName[0]);\n\t            }\n\t        }\n\t        else {\n\t            node = document.createElement(this.tagName);\n\t        }\n\t        if (this.className) {\n\t            node.classList.add(this.className);\n\t        }\n\t        return node;\n\t    };\n\t    ShadowBlot.prototype.attach = function () {\n\t        this.domNode[Registry.DATA_KEY] = { blot: this };\n\t    };\n\t    ShadowBlot.prototype.clone = function () {\n\t        var domNode = this.domNode.cloneNode();\n\t        return Registry.create(domNode);\n\t    };\n\t    ShadowBlot.prototype.detach = function () {\n\t        if (this.parent != null)\n\t            this.parent.removeChild(this);\n\t        delete this.domNode[Registry.DATA_KEY];\n\t    };\n\t    ShadowBlot.prototype.deleteAt = function (index, length) {\n\t        var blot = this.isolate(index, length);\n\t        blot.remove();\n\t    };\n\t    ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n\t        var blot = this.isolate(index, length);\n\t        if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n\t            blot.wrap(name, value);\n\t        }\n\t        else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n\t            var parent_1 = Registry.create(this.statics.scope);\n\t            blot.wrap(parent_1);\n\t            parent_1.format(name, value);\n\t        }\n\t    };\n\t    ShadowBlot.prototype.insertAt = function (index, value, def) {\n\t        var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n\t        var ref = this.split(index);\n\t        this.parent.insertBefore(blot, ref);\n\t    };\n\t    ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n\t        if (this.parent != null) {\n\t            this.parent.children.remove(this);\n\t        }\n\t        parentBlot.children.insertBefore(this, refBlot);\n\t        if (refBlot != null) {\n\t            var refDomNode = refBlot.domNode;\n\t        }\n\t        if (this.next == null || this.domNode.nextSibling != refDomNode) {\n\t            parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n\t        }\n\t        this.parent = parentBlot;\n\t    };\n\t    ShadowBlot.prototype.isolate = function (index, length) {\n\t        var target = this.split(index);\n\t        target.split(length);\n\t        return target;\n\t    };\n\t    ShadowBlot.prototype.length = function () {\n\t        return 1;\n\t    };\n\t    ;\n\t    ShadowBlot.prototype.offset = function (root) {\n\t        if (root === void 0) { root = this.parent; }\n\t        if (this.parent == null || this == root)\n\t            return 0;\n\t        return this.parent.children.offset(this) + this.parent.offset(root);\n\t    };\n\t    ShadowBlot.prototype.optimize = function () {\n\t        // TODO clean up once we use WeakMap\n\t        if (this.domNode[Registry.DATA_KEY] != null) {\n\t            delete this.domNode[Registry.DATA_KEY].mutations;\n\t        }\n\t    };\n\t    ShadowBlot.prototype.remove = function () {\n\t        if (this.domNode.parentNode != null) {\n\t            this.domNode.parentNode.removeChild(this.domNode);\n\t        }\n\t        this.detach();\n\t    };\n\t    ShadowBlot.prototype.replace = function (target) {\n\t        if (target.parent == null)\n\t            return;\n\t        target.parent.insertBefore(this, target.next);\n\t        target.remove();\n\t    };\n\t    ShadowBlot.prototype.replaceWith = function (name, value) {\n\t        var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n\t        replacement.replace(this);\n\t        return replacement;\n\t    };\n\t    ShadowBlot.prototype.split = function (index, force) {\n\t        return index === 0 ? this : this.next;\n\t    };\n\t    ShadowBlot.prototype.update = function (mutations) {\n\t        if (mutations === void 0) { mutations = []; }\n\t        // Nothing to do by default\n\t    };\n\t    ShadowBlot.prototype.wrap = function (name, value) {\n\t        var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n\t        if (this.parent != null) {\n\t            this.parent.insertBefore(wrapper, this.next);\n\t        }\n\t        wrapper.appendChild(this);\n\t        return wrapper;\n\t    };\n\t    ShadowBlot.blotName = 'abstract';\n\t    return ShadowBlot;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ShadowBlot;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t    function __() { this.constructor = d; }\n\t    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar ParchmentError = (function (_super) {\n\t    __extends(ParchmentError, _super);\n\t    function ParchmentError(message) {\n\t        message = '[Parchment] ' + message;\n\t        _super.call(this, message);\n\t        this.message = message;\n\t        this.name = this.constructor.name;\n\t    }\n\t    return ParchmentError;\n\t}(Error));\n\texports.ParchmentError = ParchmentError;\n\tvar attributes = {};\n\tvar classes = {};\n\tvar tags = {};\n\tvar types = {};\n\texports.DATA_KEY = '__blot';\n\t(function (Scope) {\n\t    Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n\t    Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n\t    Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n\t    Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n\t    Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n\t    Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n\t    Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n\t    Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n\t    Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n\t    Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n\t    Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n\t})(exports.Scope || (exports.Scope = {}));\n\tvar Scope = exports.Scope;\n\t;\n\tfunction create(input, value) {\n\t    var match = query(input);\n\t    if (match == null) {\n\t        throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n\t    }\n\t    var BlotClass = match;\n\t    var node = input instanceof Node ? input : BlotClass.create(value);\n\t    return new BlotClass(node, value);\n\t}\n\texports.create = create;\n\tfunction find(node, bubble) {\n\t    if (bubble === void 0) { bubble = false; }\n\t    if (node == null)\n\t        return null;\n\t    if (node[exports.DATA_KEY] != null)\n\t        return node[exports.DATA_KEY].blot;\n\t    if (bubble)\n\t        return find(node.parentNode, bubble);\n\t    return null;\n\t}\n\texports.find = find;\n\tfunction query(query, scope) {\n\t    if (scope === void 0) { scope = Scope.ANY; }\n\t    var match;\n\t    if (typeof query === 'string') {\n\t        match = types[query] || attributes[query];\n\t    }\n\t    else if (query instanceof Text) {\n\t        match = types['text'];\n\t    }\n\t    else if (typeof query === 'number') {\n\t        if (query & Scope.LEVEL & Scope.BLOCK) {\n\t            match = types['block'];\n\t        }\n\t        else if (query & Scope.LEVEL & Scope.INLINE) {\n\t            match = types['inline'];\n\t        }\n\t    }\n\t    else if (query instanceof HTMLElement) {\n\t        var names = (query.getAttribute('class') || '').split(/\\s+/);\n\t        for (var i in names) {\n\t            match = classes[names[i]];\n\t            if (match)\n\t                break;\n\t        }\n\t        match = match || tags[query.tagName];\n\t    }\n\t    if (match == null) {\n\t        if (query instanceof Node) {\n\t            console.log(query.nodeType);\n\t        }\n\t    }\n\t    if (match == null)\n\t        return null;\n\t    if ((scope & Scope.LEVEL & match.scope) && (scope & Scope.TYPE & match.scope))\n\t        return match;\n\t    return null;\n\t}\n\texports.query = query;\n\tfunction register() {\n\t    var Definitions = [];\n\t    for (var _i = 0; _i < arguments.length; _i++) {\n\t        Definitions[_i - 0] = arguments[_i];\n\t    }\n\t    if (Definitions.length > 1) {\n\t        return Definitions.map(function (d) {\n\t            return register(d);\n\t        });\n\t    }\n\t    var Definition = Definitions[0];\n\t    if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n\t        throw new ParchmentError('Invalid definition');\n\t    }\n\t    else if (Definition.blotName === 'abstract') {\n\t        throw new ParchmentError('Cannot register abstract class');\n\t    }\n\t    types[Definition.blotName || Definition.attrName] = Definition;\n\t    if (typeof Definition.keyName === 'string') {\n\t        attributes[Definition.keyName] = Definition;\n\t    }\n\t    else {\n\t        if (Definition.className != null) {\n\t            classes[Definition.className] = Definition;\n\t        }\n\t        if (Definition.tagName != null) {\n\t            if (Array.isArray(Definition.tagName)) {\n\t                Definition.tagName = Definition.tagName.map(function (tagName) {\n\t                    return tagName.toUpperCase();\n\t                });\n\t            }\n\t            else {\n\t                Definition.tagName = Definition.tagName.toUpperCase();\n\t            }\n\t            var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n\t            tagNames.forEach(function (tag) {\n\t                if (tags[tag] == null || Definition.className == null) {\n\t                    tags[tag] = Definition;\n\t                }\n\t            });\n\t        }\n\t    }\n\t    return Definition;\n\t}\n\texports.register = register;\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t    function __() { this.constructor = d; }\n\t    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar attributor_1 = __webpack_require__(8);\n\tvar store_1 = __webpack_require__(9);\n\tvar container_1 = __webpack_require__(3);\n\tvar Registry = __webpack_require__(6);\n\tvar FormatBlot = (function (_super) {\n\t    __extends(FormatBlot, _super);\n\t    function FormatBlot() {\n\t        _super.apply(this, arguments);\n\t    }\n\t    FormatBlot.formats = function (domNode) {\n\t        if (typeof this.tagName === 'string') {\n\t            return true;\n\t        }\n\t        else if (Array.isArray(this.tagName)) {\n\t            return domNode.tagName.toLowerCase();\n\t        }\n\t        return undefined;\n\t    };\n\t    FormatBlot.prototype.attach = function () {\n\t        _super.prototype.attach.call(this);\n\t        this.attributes = new store_1.default(this.domNode);\n\t    };\n\t    FormatBlot.prototype.format = function (name, value) {\n\t        var format = Registry.query(name);\n\t        if (format instanceof attributor_1.default) {\n\t            this.attributes.attribute(format, value);\n\t        }\n\t        else if (value) {\n\t            if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n\t                this.replaceWith(name, value);\n\t            }\n\t        }\n\t    };\n\t    FormatBlot.prototype.formats = function () {\n\t        var formats = this.attributes.values();\n\t        var format = this.statics.formats(this.domNode);\n\t        if (format != null) {\n\t            formats[this.statics.blotName] = format;\n\t        }\n\t        return formats;\n\t    };\n\t    FormatBlot.prototype.replaceWith = function (name, value) {\n\t        var replacement = _super.prototype.replaceWith.call(this, name, value);\n\t        this.attributes.copy(replacement);\n\t        return replacement;\n\t    };\n\t    FormatBlot.prototype.update = function (mutations) {\n\t        var _this = this;\n\t        _super.prototype.update.call(this, mutations);\n\t        if (mutations.some(function (mutation) {\n\t            return mutation.target === _this.domNode && mutation.type === 'attributes';\n\t        })) {\n\t            this.attributes.build();\n\t        }\n\t    };\n\t    FormatBlot.prototype.wrap = function (name, value) {\n\t        var wrapper = _super.prototype.wrap.call(this, name, value);\n\t        if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n\t            this.attributes.move(wrapper);\n\t        }\n\t        return wrapper;\n\t    };\n\t    return FormatBlot;\n\t}(container_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = FormatBlot;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar Registry = __webpack_require__(6);\n\tvar Attributor = (function () {\n\t    function Attributor(attrName, keyName, options) {\n\t        if (options === void 0) { options = {}; }\n\t        this.attrName = attrName;\n\t        this.keyName = keyName;\n\t        var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n\t        if (options.scope != null) {\n\t            // Ignore type bits, force attribute bit\n\t            this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n\t        }\n\t        else {\n\t            this.scope = Registry.Scope.ATTRIBUTE;\n\t        }\n\t        if (options.whitelist != null)\n\t            this.whitelist = options.whitelist;\n\t    }\n\t    Attributor.keys = function (node) {\n\t        return [].map.call(node.attributes, function (item) {\n\t            return item.name;\n\t        });\n\t    };\n\t    Attributor.prototype.add = function (node, value) {\n\t        if (!this.canAdd(node, value))\n\t            return false;\n\t        node.setAttribute(this.keyName, value);\n\t        return true;\n\t    };\n\t    Attributor.prototype.canAdd = function (node, value) {\n\t        var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n\t        if (match != null && (this.whitelist == null || this.whitelist.indexOf(value) > -1)) {\n\t            return true;\n\t        }\n\t        return false;\n\t    };\n\t    Attributor.prototype.remove = function (node) {\n\t        node.removeAttribute(this.keyName);\n\t    };\n\t    Attributor.prototype.value = function (node) {\n\t        return node.getAttribute(this.keyName);\n\t    };\n\t    return Attributor;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = Attributor;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar attributor_1 = __webpack_require__(8);\n\tvar class_1 = __webpack_require__(10);\n\tvar style_1 = __webpack_require__(11);\n\tvar Registry = __webpack_require__(6);\n\tvar AttributorStore = (function () {\n\t    function AttributorStore(domNode) {\n\t        this.attributes = {};\n\t        this.domNode = domNode;\n\t        this.build();\n\t    }\n\t    AttributorStore.prototype.attribute = function (attribute, value) {\n\t        if (value) {\n\t            if (attribute.add(this.domNode, value)) {\n\t                if (attribute.value(this.domNode) != null) {\n\t                    this.attributes[attribute.attrName] = attribute;\n\t                }\n\t                else {\n\t                    delete this.attributes[attribute.attrName];\n\t                }\n\t            }\n\t        }\n\t        else {\n\t            attribute.remove(this.domNode);\n\t            delete this.attributes[attribute.attrName];\n\t        }\n\t    };\n\t    AttributorStore.prototype.build = function () {\n\t        var _this = this;\n\t        this.attributes = {};\n\t        var attributes = attributor_1.default.keys(this.domNode);\n\t        var classes = class_1.default.keys(this.domNode);\n\t        var styles = style_1.default.keys(this.domNode);\n\t        attributes.concat(classes).concat(styles).forEach(function (name) {\n\t            var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n\t            if (attr instanceof attributor_1.default) {\n\t                _this.attributes[attr.attrName] = attr;\n\t            }\n\t        });\n\t    };\n\t    AttributorStore.prototype.copy = function (target) {\n\t        var _this = this;\n\t        Object.keys(this.attributes).forEach(function (key) {\n\t            var value = _this.attributes[key].value(_this.domNode);\n\t            target.format(key, value);\n\t        });\n\t    };\n\t    AttributorStore.prototype.move = function (target) {\n\t        var _this = this;\n\t        this.copy(target);\n\t        Object.keys(this.attributes).forEach(function (key) {\n\t            _this.attributes[key].remove(_this.domNode);\n\t        });\n\t        this.attributes = {};\n\t    };\n\t    AttributorStore.prototype.values = function () {\n\t        var _this = this;\n\t        return Object.keys(this.attributes).reduce(function (attributes, name) {\n\t            attributes[name] = _this.attributes[name].value(_this.domNode);\n\t            return attributes;\n\t        }, {});\n\t    };\n\t    return AttributorStore;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = AttributorStore;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t    function __() { this.constructor = d; }\n\t    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar attributor_1 = __webpack_require__(8);\n\tfunction match(node, prefix) {\n\t    var className = node.getAttribute('class') || '';\n\t    return className.split(/\\s+/).filter(function (name) {\n\t        return name.indexOf(prefix + \"-\") === 0;\n\t    });\n\t}\n\tvar ClassAttributor = (function (_super) {\n\t    __extends(ClassAttributor, _super);\n\t    function ClassAttributor() {\n\t        _super.apply(this, arguments);\n\t    }\n\t    ClassAttributor.keys = function (node) {\n\t        return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n\t            return name.split('-').slice(0, -1).join('-');\n\t        });\n\t    };\n\t    ClassAttributor.prototype.add = function (node, value) {\n\t        if (!this.canAdd(node, value))\n\t            return false;\n\t        this.remove(node);\n\t        node.classList.add(this.keyName + \"-\" + value);\n\t        return true;\n\t    };\n\t    ClassAttributor.prototype.remove = function (node) {\n\t        var matches = match(node, this.keyName);\n\t        matches.forEach(function (name) {\n\t            node.classList.remove(name);\n\t        });\n\t        if (node.classList.length === 0) {\n\t            node.removeAttribute('class');\n\t        }\n\t    };\n\t    ClassAttributor.prototype.value = function (node) {\n\t        var result = match(node, this.keyName)[0] || '';\n\t        return result.slice(this.keyName.length + 1); // +1 for hyphen\n\t    };\n\t    return ClassAttributor;\n\t}(attributor_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ClassAttributor;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t    function __() { this.constructor = d; }\n\t    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar attributor_1 = __webpack_require__(8);\n\tfunction camelize(name) {\n\t    var parts = name.split('-');\n\t    var rest = parts.slice(1).map(function (part) {\n\t        return part[0].toUpperCase() + part.slice(1);\n\t    }).join('');\n\t    return parts[0] + rest;\n\t}\n\tvar StyleAttributor = (function (_super) {\n\t    __extends(StyleAttributor, _super);\n\t    function StyleAttributor() {\n\t        _super.apply(this, arguments);\n\t    }\n\t    StyleAttributor.keys = function (node) {\n\t        return (node.getAttribute('style') || '').split(';').map(function (value) {\n\t            var arr = value.split(':');\n\t            return arr[0].trim();\n\t        });\n\t    };\n\t    StyleAttributor.prototype.add = function (node, value) {\n\t        if (!this.canAdd(node, value))\n\t            return false;\n\t        node.style[camelize(this.keyName)] = value;\n\t        return true;\n\t    };\n\t    StyleAttributor.prototype.remove = function (node) {\n\t        node.style[camelize(this.keyName)] = '';\n\t        if (!node.getAttribute('style')) {\n\t            node.removeAttribute('style');\n\t        }\n\t    };\n\t    StyleAttributor.prototype.value = function (node) {\n\t        return node.style[camelize(this.keyName)];\n\t    };\n\t    return StyleAttributor;\n\t}(attributor_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = StyleAttributor;\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t    function __() { this.constructor = d; }\n\t    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar shadow_1 = __webpack_require__(5);\n\tvar Registry = __webpack_require__(6);\n\tvar LeafBlot = (function (_super) {\n\t    __extends(LeafBlot, _super);\n\t    function LeafBlot() {\n\t        _super.apply(this, arguments);\n\t    }\n\t    LeafBlot.value = function (domNode) {\n\t        return true;\n\t    };\n\t    LeafBlot.prototype.index = function (node, offset) {\n\t        if (node !== this.domNode)\n\t            return -1;\n\t        return Math.min(offset, 1);\n\t    };\n\t    LeafBlot.prototype.position = function (index, inclusive) {\n\t        var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n\t        if (index > 0)\n\t            offset += 1;\n\t        return [this.parent.domNode, offset];\n\t    };\n\t    LeafBlot.prototype.value = function () {\n\t        return (_a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a);\n\t        var _a;\n\t    };\n\t    LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n\t    return LeafBlot;\n\t}(shadow_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = LeafBlot;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t    function __() { this.constructor = d; }\n\t    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar container_1 = __webpack_require__(3);\n\tvar Registry = __webpack_require__(6);\n\tvar OBSERVER_CONFIG = {\n\t    attributes: true,\n\t    characterData: true,\n\t    characterDataOldValue: true,\n\t    childList: true,\n\t    subtree: true\n\t};\n\tvar MAX_OPTIMIZE_ITERATIONS = 100;\n\tvar ScrollBlot = (function (_super) {\n\t    __extends(ScrollBlot, _super);\n\t    function ScrollBlot(node) {\n\t        var _this = this;\n\t        _super.call(this, node);\n\t        this.parent = null;\n\t        this.observer = new MutationObserver(function (mutations) {\n\t            _this.update(mutations);\n\t        });\n\t        this.observer.observe(this.domNode, OBSERVER_CONFIG);\n\t    }\n\t    ScrollBlot.prototype.detach = function () {\n\t        _super.prototype.detach.call(this);\n\t        this.observer.disconnect();\n\t    };\n\t    ScrollBlot.prototype.deleteAt = function (index, length) {\n\t        this.update();\n\t        if (index === 0 && length === this.length()) {\n\t            this.children.forEach(function (child) {\n\t                child.remove();\n\t            });\n\t        }\n\t        else {\n\t            _super.prototype.deleteAt.call(this, index, length);\n\t        }\n\t    };\n\t    ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n\t        this.update();\n\t        _super.prototype.formatAt.call(this, index, length, name, value);\n\t    };\n\t    ScrollBlot.prototype.insertAt = function (index, value, def) {\n\t        this.update();\n\t        _super.prototype.insertAt.call(this, index, value, def);\n\t    };\n\t    ScrollBlot.prototype.optimize = function (mutations) {\n\t        var _this = this;\n\t        if (mutations === void 0) { mutations = []; }\n\t        _super.prototype.optimize.call(this);\n\t        mutations.push.apply(mutations, this.observer.takeRecords());\n\t        // TODO use WeakMap\n\t        var mark = function (blot, markParent) {\n\t            if (markParent === void 0) { markParent = true; }\n\t            if (blot == null || blot === _this)\n\t                return;\n\t            if (blot.domNode.parentNode == null)\n\t                return;\n\t            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t                blot.domNode[Registry.DATA_KEY].mutations = [];\n\t            }\n\t            if (markParent)\n\t                mark(blot.parent);\n\t        };\n\t        var optimize = function (blot) {\n\t            if (blot.domNode[Registry.DATA_KEY] == null || blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t                return;\n\t            }\n\t            if (blot instanceof container_1.default) {\n\t                blot.children.forEach(optimize);\n\t            }\n\t            blot.optimize();\n\t        };\n\t        var remaining = mutations;\n\t        for (var i = 0; remaining.length > 0; i += 1) {\n\t            if (i >= MAX_OPTIMIZE_ITERATIONS) {\n\t                throw new Error('[Parchment] Maximum optimize iterations reached');\n\t            }\n\t            remaining.forEach(function (mutation) {\n\t                var blot = Registry.find(mutation.target, true);\n\t                if (blot == null)\n\t                    return;\n\t                if (blot.domNode === mutation.target) {\n\t                    if (mutation.type === 'childList') {\n\t                        mark(Registry.find(mutation.previousSibling, false));\n\t                        [].forEach.call(mutation.addedNodes, function (node) {\n\t                            var child = Registry.find(node, false);\n\t                            mark(child, false);\n\t                            if (child instanceof container_1.default) {\n\t                                child.children.forEach(function (grandChild) {\n\t                                    mark(grandChild, false);\n\t                                });\n\t                            }\n\t                        });\n\t                    }\n\t                    else if (mutation.type === 'attributes') {\n\t                        mark(blot.prev);\n\t                    }\n\t                }\n\t                mark(blot);\n\t            });\n\t            this.children.forEach(optimize);\n\t            remaining = this.observer.takeRecords();\n\t            mutations.push.apply(mutations, remaining);\n\t        }\n\t    };\n\t    ScrollBlot.prototype.update = function (mutations) {\n\t        var _this = this;\n\t        mutations = mutations || this.observer.takeRecords();\n\t        // TODO use WeakMap\n\t        mutations.map(function (mutation) {\n\t            var blot = Registry.find(mutation.target, true);\n\t            if (blot == null)\n\t                return;\n\t            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t                blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n\t                return blot;\n\t            }\n\t            else {\n\t                blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n\t                return null;\n\t            }\n\t        }).forEach(function (blot) {\n\t            if (blot == null || blot === _this || blot.domNode[Registry.DATA_KEY] == null)\n\t                return;\n\t            blot.update(blot.domNode[Registry.DATA_KEY].mutations || []);\n\t        });\n\t        if (this.domNode[Registry.DATA_KEY].mutations != null) {\n\t            _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations);\n\t        }\n\t        this.optimize(mutations);\n\t    };\n\t    ScrollBlot.blotName = 'scroll';\n\t    ScrollBlot.defaultChild = 'block';\n\t    ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n\t    ScrollBlot.tagName = 'DIV';\n\t    return ScrollBlot;\n\t}(container_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ScrollBlot;\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t    function __() { this.constructor = d; }\n\t    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar format_1 = __webpack_require__(7);\n\tvar Registry = __webpack_require__(6);\n\t// Shallow object comparison\n\tfunction isEqual(obj1, obj2) {\n\t    if (Object.keys(obj1).length !== Object.keys(obj2).length)\n\t        return false;\n\t    for (var prop in obj1) {\n\t        if (obj1[prop] !== obj2[prop])\n\t            return false;\n\t    }\n\t    return true;\n\t}\n\tvar InlineBlot = (function (_super) {\n\t    __extends(InlineBlot, _super);\n\t    function InlineBlot() {\n\t        _super.apply(this, arguments);\n\t    }\n\t    InlineBlot.formats = function (domNode) {\n\t        if (domNode.tagName === InlineBlot.tagName)\n\t            return undefined;\n\t        return _super.formats.call(this, domNode);\n\t    };\n\t    InlineBlot.prototype.format = function (name, value) {\n\t        var _this = this;\n\t        if (name === this.statics.blotName && !value) {\n\t            this.children.forEach(function (child) {\n\t                if (!(child instanceof format_1.default)) {\n\t                    child = child.wrap(InlineBlot.blotName, true);\n\t                }\n\t                _this.attributes.copy(child);\n\t            });\n\t            this.unwrap();\n\t        }\n\t        else {\n\t            _super.prototype.format.call(this, name, value);\n\t        }\n\t    };\n\t    InlineBlot.prototype.formatAt = function (index, length, name, value) {\n\t        if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n\t            var blot = this.isolate(index, length);\n\t            blot.format(name, value);\n\t        }\n\t        else {\n\t            _super.prototype.formatAt.call(this, index, length, name, value);\n\t        }\n\t    };\n\t    InlineBlot.prototype.optimize = function () {\n\t        _super.prototype.optimize.call(this);\n\t        var formats = this.formats();\n\t        if (Object.keys(formats).length === 0) {\n\t            return this.unwrap(); // unformatted span\n\t        }\n\t        var next = this.next;\n\t        if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n\t            next.moveChildren(this);\n\t            next.remove();\n\t        }\n\t    };\n\t    InlineBlot.blotName = 'inline';\n\t    InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n\t    InlineBlot.tagName = 'SPAN';\n\t    return InlineBlot;\n\t}(format_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = InlineBlot;\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t    function __() { this.constructor = d; }\n\t    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar format_1 = __webpack_require__(7);\n\tvar Registry = __webpack_require__(6);\n\tvar BlockBlot = (function (_super) {\n\t    __extends(BlockBlot, _super);\n\t    function BlockBlot() {\n\t        _super.apply(this, arguments);\n\t    }\n\t    BlockBlot.formats = function (domNode) {\n\t        var tagName = Registry.query(BlockBlot.blotName).tagName;\n\t        if (domNode.tagName === tagName)\n\t            return undefined;\n\t        return _super.formats.call(this, domNode);\n\t    };\n\t    BlockBlot.prototype.format = function (name, value) {\n\t        if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n\t            return;\n\t        }\n\t        else if (name === this.statics.blotName && !value) {\n\t            this.replaceWith(BlockBlot.blotName);\n\t        }\n\t        else {\n\t            _super.prototype.format.call(this, name, value);\n\t        }\n\t    };\n\t    BlockBlot.prototype.formatAt = function (index, length, name, value) {\n\t        if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n\t            this.format(name, value);\n\t        }\n\t        else {\n\t            _super.prototype.formatAt.call(this, index, length, name, value);\n\t        }\n\t    };\n\t    BlockBlot.prototype.insertAt = function (index, value, def) {\n\t        if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n\t            // Insert text or inline\n\t            _super.prototype.insertAt.call(this, index, value, def);\n\t        }\n\t        else {\n\t            var after = this.split(index);\n\t            var blot = Registry.create(value, def);\n\t            after.parent.insertBefore(blot, after);\n\t        }\n\t    };\n\t    BlockBlot.blotName = 'block';\n\t    BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n\t    BlockBlot.tagName = 'P';\n\t    return BlockBlot;\n\t}(format_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = BlockBlot;\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t    function __() { this.constructor = d; }\n\t    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar leaf_1 = __webpack_require__(12);\n\tvar EmbedBlot = (function (_super) {\n\t    __extends(EmbedBlot, _super);\n\t    function EmbedBlot() {\n\t        _super.apply(this, arguments);\n\t    }\n\t    EmbedBlot.formats = function (domNode) {\n\t        return undefined;\n\t    };\n\t    EmbedBlot.prototype.format = function (name, value) {\n\t        // super.formatAt wraps, which is what we want in general,\n\t        // but this allows subclasses to overwrite for formats\n\t        // that just apply to particular embeds\n\t        _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n\t    };\n\t    EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n\t        if (index === 0 && length === this.length()) {\n\t            this.format(name, value);\n\t        }\n\t        else {\n\t            _super.prototype.formatAt.call(this, index, length, name, value);\n\t        }\n\t    };\n\t    EmbedBlot.prototype.formats = function () {\n\t        return this.statics.formats(this.domNode);\n\t    };\n\t    return EmbedBlot;\n\t}(leaf_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = EmbedBlot;\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t    function __() { this.constructor = d; }\n\t    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar leaf_1 = __webpack_require__(12);\n\tvar Registry = __webpack_require__(6);\n\tvar TextBlot = (function (_super) {\n\t    __extends(TextBlot, _super);\n\t    function TextBlot(node) {\n\t        _super.call(this, node);\n\t        this.text = this.statics.value(this.domNode);\n\t    }\n\t    TextBlot.create = function (value) {\n\t        return document.createTextNode(value);\n\t    };\n\t    TextBlot.value = function (domNode) {\n\t        return domNode.data;\n\t    };\n\t    TextBlot.prototype.deleteAt = function (index, length) {\n\t        this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n\t    };\n\t    TextBlot.prototype.index = function (node, offset) {\n\t        if (this.domNode === node) {\n\t            return offset;\n\t        }\n\t        return -1;\n\t    };\n\t    TextBlot.prototype.insertAt = function (index, value, def) {\n\t        if (def == null) {\n\t            this.text = this.text.slice(0, index) + value + this.text.slice(index);\n\t            this.domNode.data = this.text;\n\t        }\n\t        else {\n\t            _super.prototype.insertAt.call(this, index, value, def);\n\t        }\n\t    };\n\t    TextBlot.prototype.length = function () {\n\t        return this.text.length;\n\t    };\n\t    TextBlot.prototype.optimize = function () {\n\t        _super.prototype.optimize.call(this);\n\t        this.text = this.statics.value(this.domNode);\n\t        if (this.text.length === 0) {\n\t            this.remove();\n\t        }\n\t        else if (this.next instanceof TextBlot && this.next.prev === this) {\n\t            this.insertAt(this.length(), this.next.value());\n\t            this.next.remove();\n\t        }\n\t    };\n\t    TextBlot.prototype.position = function (index, inclusive) {\n\t        if (inclusive === void 0) { inclusive = false; }\n\t        return [this.domNode, index];\n\t    };\n\t    TextBlot.prototype.split = function (index, force) {\n\t        if (force === void 0) { force = false; }\n\t        if (!force) {\n\t            if (index === 0)\n\t                return this;\n\t            if (index === this.length())\n\t                return this.next;\n\t        }\n\t        var after = Registry.create(this.domNode.splitText(index));\n\t        this.parent.insertBefore(after, this.next);\n\t        this.text = this.statics.value(this.domNode);\n\t        return after;\n\t    };\n\t    TextBlot.prototype.update = function (mutations) {\n\t        var _this = this;\n\t        if (mutations.some(function (mutation) {\n\t            return mutation.type === 'characterData' && mutation.target === _this.domNode;\n\t        })) {\n\t            this.text = this.statics.value(this.domNode);\n\t        }\n\t    };\n\t    TextBlot.prototype.value = function () {\n\t        return this.text;\n\t    };\n\t    TextBlot.blotName = 'text';\n\t    TextBlot.scope = Registry.Scope.INLINE_BLOT;\n\t    return TextBlot;\n\t}(leaf_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = TextBlot;\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.default = exports.overload = exports.expandConfig = undefined;\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t__webpack_require__(19);\n\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _editor = __webpack_require__(27);\n\t\n\tvar _editor2 = _interopRequireDefault(_editor);\n\t\n\tvar _emitter3 = __webpack_require__(36);\n\t\n\tvar _emitter4 = _interopRequireDefault(_emitter3);\n\t\n\tvar _module = __webpack_require__(43);\n\t\n\tvar _module2 = _interopRequireDefault(_module);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _selection = __webpack_require__(44);\n\t\n\tvar _selection2 = _interopRequireDefault(_selection);\n\t\n\tvar _extend = __webpack_require__(30);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _logger = __webpack_require__(38);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _theme = __webpack_require__(45);\n\t\n\tvar _theme2 = _interopRequireDefault(_theme);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar debug = (0, _logger2.default)('quill');\n\t\n\tvar Quill = function () {\n\t  _createClass(Quill, null, [{\n\t    key: 'debug',\n\t    value: function debug(limit) {\n\t      if (limit === true) {\n\t        limit = 'log';\n\t      }\n\t      _logger2.default.level(limit);\n\t    }\n\t  }, {\n\t    key: 'import',\n\t    value: function _import(name) {\n\t      if (this.imports[name] == null) {\n\t        debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n\t      }\n\t      return this.imports[name];\n\t    }\n\t  }, {\n\t    key: 'register',\n\t    value: function register(path, target) {\n\t      var _this = this;\n\t\n\t      var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t\n\t      if (typeof path !== 'string') {\n\t        var name = path.attrName || path.blotName;\n\t        if (typeof name === 'string') {\n\t          // register(Blot | Attributor, overwrite)\n\t          this.register('formats/' + name, path, target);\n\t        } else {\n\t          Object.keys(path).forEach(function (key) {\n\t            _this.register(key, path[key], target);\n\t          });\n\t        }\n\t      } else {\n\t        if (this.imports[path] != null && !overwrite) {\n\t          debug.warn('Overwriting ' + path + ' with', target);\n\t        }\n\t        this.imports[path] = target;\n\t        if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n\t          _parchment2.default.register(target);\n\t        }\n\t      }\n\t    }\n\t  }]);\n\t\n\t  function Quill(container) {\n\t    var _this2 = this;\n\t\n\t    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\n\t    _classCallCheck(this, Quill);\n\t\n\t    this.options = expandConfig(container, options);\n\t    this.container = this.options.container;\n\t    if (this.container == null) {\n\t      return debug.error('Invalid Quill container', container);\n\t    }\n\t    if (this.options.debug) {\n\t      Quill.debug(this.options.debug);\n\t    }\n\t    var html = this.container.innerHTML.trim();\n\t    this.container.classList.add('ql-container');\n\t    this.container.innerHTML = '';\n\t    this.root = this.addContainer('ql-editor');\n\t    this.root.classList.add('ql-blank');\n\t    this.emitter = new _emitter4.default();\n\t    this.scroll = _parchment2.default.create(this.root, {\n\t      emitter: this.emitter,\n\t      whitelist: this.options.formats\n\t    });\n\t    this.editor = new _editor2.default(this.scroll);\n\t    this.selection = new _selection2.default(this.scroll, this.emitter);\n\t    this.theme = new this.options.theme(this, this.options);\n\t    this.keyboard = this.theme.addModule('keyboard');\n\t    this.clipboard = this.theme.addModule('clipboard');\n\t    this.history = this.theme.addModule('history');\n\t    this.theme.init();\n\t    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n\t      if (type === _emitter4.default.events.TEXT_CHANGE) {\n\t        _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n\t      }\n\t    });\n\t    this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n\t      var range = _this2.selection.lastRange;\n\t      var index = range && range.length === 0 ? range.index : undefined;\n\t      modify.call(_this2, function () {\n\t        return _this2.editor.update(null, mutations, index);\n\t      }, source);\n\t    });\n\t    var contents = this.clipboard.convert('<div class=\\'ql-editor\\' style=\"white-space: normal;\">' + html + '<p><br></p></div>');\n\t    this.setContents(contents);\n\t    this.history.clear();\n\t    if (this.options.placeholder) {\n\t      this.root.setAttribute('data-placeholder', this.options.placeholder);\n\t    }\n\t    if (this.options.readOnly) {\n\t      this.disable();\n\t    }\n\t  }\n\t\n\t  _createClass(Quill, [{\n\t    key: 'addContainer',\n\t    value: function addContainer(container) {\n\t      var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\t\n\t      if (typeof container === 'string') {\n\t        var className = container;\n\t        container = document.createElement('div');\n\t        container.classList.add(className);\n\t      }\n\t      this.container.insertBefore(container, refNode);\n\t      return container;\n\t    }\n\t  }, {\n\t    key: 'blur',\n\t    value: function blur() {\n\t      this.selection.setRange(null);\n\t    }\n\t  }, {\n\t    key: 'deleteText',\n\t    value: function deleteText(index, length, source) {\n\t      var _this3 = this;\n\t\n\t      var _overload = overload(index, length, source);\n\t\n\t      var _overload2 = _slicedToArray(_overload, 4);\n\t\n\t      index = _overload2[0];\n\t      length = _overload2[1];\n\t      source = _overload2[3];\n\t\n\t      return modify.call(this, function () {\n\t        return _this3.editor.deleteText(index, length);\n\t      }, source, index, -1 * length);\n\t    }\n\t  }, {\n\t    key: 'disable',\n\t    value: function disable() {\n\t      this.enable(false);\n\t    }\n\t  }, {\n\t    key: 'enable',\n\t    value: function enable() {\n\t      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\t\n\t      this.scroll.enable(enabled);\n\t      this.container.classList.toggle('ql-disabled', !enabled);\n\t      if (!enabled) {\n\t        this.blur();\n\t      }\n\t    }\n\t  }, {\n\t    key: 'focus',\n\t    value: function focus() {\n\t      this.selection.focus();\n\t      this.selection.scrollIntoView();\n\t    }\n\t  }, {\n\t    key: 'format',\n\t    value: function format(name, value) {\n\t      var _this4 = this;\n\t\n\t      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\t\n\t      return modify.call(this, function () {\n\t        var range = _this4.getSelection(true);\n\t        var change = new _quillDelta2.default();\n\t        if (range == null) {\n\t          return change;\n\t        } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n\t          change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n\t        } else if (range.length === 0) {\n\t          _this4.selection.format(name, value);\n\t          return change;\n\t        } else {\n\t          change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n\t        }\n\t        _this4.setSelection(range, _emitter4.default.sources.SILENT);\n\t        return change;\n\t      }, source);\n\t    }\n\t  }, {\n\t    key: 'formatLine',\n\t    value: function formatLine(index, length, name, value, source) {\n\t      var _this5 = this;\n\t\n\t      var formats = void 0;\n\t\n\t      var _overload3 = overload(index, length, name, value, source);\n\t\n\t      var _overload4 = _slicedToArray(_overload3, 4);\n\t\n\t      index = _overload4[0];\n\t      length = _overload4[1];\n\t      formats = _overload4[2];\n\t      source = _overload4[3];\n\t\n\t      return modify.call(this, function () {\n\t        return _this5.editor.formatLine(index, length, formats);\n\t      }, source, index, 0);\n\t    }\n\t  }, {\n\t    key: 'formatText',\n\t    value: function formatText(index, length, name, value, source) {\n\t      var _this6 = this;\n\t\n\t      var formats = void 0;\n\t\n\t      var _overload5 = overload(index, length, name, value, source);\n\t\n\t      var _overload6 = _slicedToArray(_overload5, 4);\n\t\n\t      index = _overload6[0];\n\t      length = _overload6[1];\n\t      formats = _overload6[2];\n\t      source = _overload6[3];\n\t\n\t      return modify.call(this, function () {\n\t        return _this6.editor.formatText(index, length, formats);\n\t      }, source, index, 0);\n\t    }\n\t  }, {\n\t    key: 'getBounds',\n\t    value: function getBounds(index) {\n\t      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t      if (typeof index === 'number') {\n\t        return this.selection.getBounds(index, length);\n\t      } else {\n\t        return this.selection.getBounds(index.index, index.length);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'getContents',\n\t    value: function getContents() {\n\t      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\t\n\t      var _overload7 = overload(index, length);\n\t\n\t      var _overload8 = _slicedToArray(_overload7, 2);\n\t\n\t      index = _overload8[0];\n\t      length = _overload8[1];\n\t\n\t      return this.editor.getContents(index, length);\n\t    }\n\t  }, {\n\t    key: 'getFormat',\n\t    value: function getFormat() {\n\t      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection();\n\t      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t      if (typeof index === 'number') {\n\t        return this.editor.getFormat(index, length);\n\t      } else {\n\t        return this.editor.getFormat(index.index, index.length);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'getLength',\n\t    value: function getLength() {\n\t      return this.scroll.length();\n\t    }\n\t  }, {\n\t    key: 'getModule',\n\t    value: function getModule(name) {\n\t      return this.theme.modules[name];\n\t    }\n\t  }, {\n\t    key: 'getSelection',\n\t    value: function getSelection() {\n\t      var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t\n\t      if (focus) this.focus();\n\t      this.update(); // Make sure we access getRange with editor in consistent state\n\t      return this.selection.getRange()[0];\n\t    }\n\t  }, {\n\t    key: 'getText',\n\t    value: function getText() {\n\t      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\t\n\t      var _overload9 = overload(index, length);\n\t\n\t      var _overload10 = _slicedToArray(_overload9, 2);\n\t\n\t      index = _overload10[0];\n\t      length = _overload10[1];\n\t\n\t      return this.editor.getText(index, length);\n\t    }\n\t  }, {\n\t    key: 'hasFocus',\n\t    value: function hasFocus() {\n\t      return this.selection.hasFocus();\n\t    }\n\t  }, {\n\t    key: 'insertEmbed',\n\t    value: function insertEmbed(index, embed, value) {\n\t      var _this7 = this;\n\t\n\t      var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\t\n\t      return modify.call(this, function () {\n\t        return _this7.editor.insertEmbed(index, embed, value);\n\t      }, source, index);\n\t    }\n\t  }, {\n\t    key: 'insertText',\n\t    value: function insertText(index, text, name, value, source) {\n\t      var _this8 = this;\n\t\n\t      var formats = void 0;\n\t\n\t      var _overload11 = overload(index, 0, name, value, source);\n\t\n\t      var _overload12 = _slicedToArray(_overload11, 4);\n\t\n\t      index = _overload12[0];\n\t      formats = _overload12[2];\n\t      source = _overload12[3];\n\t\n\t      return modify.call(this, function () {\n\t        return _this8.editor.insertText(index, text, formats);\n\t      }, source, index, text.length);\n\t    }\n\t  }, {\n\t    key: 'isEnabled',\n\t    value: function isEnabled() {\n\t      return !this.container.classList.contains('ql-disabled');\n\t    }\n\t  }, {\n\t    key: 'off',\n\t    value: function off() {\n\t      return this.emitter.off.apply(this.emitter, arguments);\n\t    }\n\t  }, {\n\t    key: 'on',\n\t    value: function on() {\n\t      return this.emitter.on.apply(this.emitter, arguments);\n\t    }\n\t  }, {\n\t    key: 'once',\n\t    value: function once() {\n\t      return this.emitter.once.apply(this.emitter, arguments);\n\t    }\n\t  }, {\n\t    key: 'pasteHTML',\n\t    value: function pasteHTML(index, html, source) {\n\t      this.clipboard.dangerouslyPasteHTML(index, html, source);\n\t    }\n\t  }, {\n\t    key: 'removeFormat',\n\t    value: function removeFormat(index, length, source) {\n\t      var _this9 = this;\n\t\n\t      var _overload13 = overload(index, length, source);\n\t\n\t      var _overload14 = _slicedToArray(_overload13, 4);\n\t\n\t      index = _overload14[0];\n\t      length = _overload14[1];\n\t      source = _overload14[3];\n\t\n\t      return modify.call(this, function () {\n\t        return _this9.editor.removeFormat(index, length);\n\t      }, source, index);\n\t    }\n\t  }, {\n\t    key: 'setContents',\n\t    value: function setContents(delta) {\n\t      var _this10 = this;\n\t\n\t      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\t\n\t      return modify.call(this, function () {\n\t        delta = new _quillDelta2.default(delta);\n\t        var length = _this10.getLength();\n\t        var deleted = _this10.editor.deleteText(0, length);\n\t        var applied = _this10.editor.applyDelta(delta);\n\t        var lastOp = applied.ops[applied.ops.length - 1];\n\t        if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n\t          _this10.editor.deleteText(_this10.getLength() - 1, 1);\n\t          applied.delete(1);\n\t        }\n\t        var ret = deleted.compose(applied);\n\t        return ret;\n\t      }, source);\n\t    }\n\t  }, {\n\t    key: 'setSelection',\n\t    value: function setSelection(index, length, source) {\n\t      if (index == null) {\n\t        this.selection.setRange(null, length || Quill.sources.API);\n\t      } else {\n\t        var _overload15 = overload(index, length, source);\n\t\n\t        var _overload16 = _slicedToArray(_overload15, 4);\n\t\n\t        index = _overload16[0];\n\t        length = _overload16[1];\n\t        source = _overload16[3];\n\t\n\t        this.selection.setRange(new _selection.Range(index, length), source);\n\t      }\n\t      this.selection.scrollIntoView();\n\t    }\n\t  }, {\n\t    key: 'setText',\n\t    value: function setText(text) {\n\t      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\t\n\t      var delta = new _quillDelta2.default().insert(text);\n\t      return this.setContents(delta, source);\n\t    }\n\t  }, {\n\t    key: 'update',\n\t    value: function update() {\n\t      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\t\n\t      var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n\t      this.selection.update(source);\n\t      return change;\n\t    }\n\t  }, {\n\t    key: 'updateContents',\n\t    value: function updateContents(delta) {\n\t      var _this11 = this;\n\t\n\t      var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\t\n\t      return modify.call(this, function () {\n\t        delta = new _quillDelta2.default(delta);\n\t        return _this11.editor.applyDelta(delta, source);\n\t      }, source, true);\n\t    }\n\t  }]);\n\t\n\t  return Quill;\n\t}();\n\t\n\tQuill.DEFAULTS = {\n\t  bounds: null,\n\t  formats: null,\n\t  modules: {},\n\t  placeholder: '',\n\t  readOnly: false,\n\t  strict: true,\n\t  theme: 'default'\n\t};\n\tQuill.events = _emitter4.default.events;\n\tQuill.sources = _emitter4.default.sources;\n\t// eslint-disable-next-line no-undef\n\tQuill.version =  false ? 'dev' : (\"1.1.5\");\n\t\n\tQuill.imports = {\n\t  'delta': _quillDelta2.default,\n\t  'parchment': _parchment2.default,\n\t  'core/module': _module2.default,\n\t  'core/theme': _theme2.default\n\t};\n\t\n\tfunction expandConfig(container, userConfig) {\n\t  userConfig = (0, _extend2.default)(true, {\n\t    container: container,\n\t    modules: {\n\t      clipboard: true,\n\t      keyboard: true,\n\t      history: true\n\t    }\n\t  }, userConfig);\n\t  if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n\t    userConfig.theme = _theme2.default;\n\t  } else {\n\t    userConfig.theme = Quill.import('themes/' + userConfig.theme);\n\t    if (userConfig.theme == null) {\n\t      throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n\t    }\n\t  }\n\t  var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n\t  [themeConfig, userConfig].forEach(function (config) {\n\t    config.modules = config.modules || {};\n\t    Object.keys(config.modules).forEach(function (module) {\n\t      if (config.modules[module] === true) {\n\t        config.modules[module] = {};\n\t      }\n\t    });\n\t  });\n\t  var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n\t  var moduleConfig = moduleNames.reduce(function (config, name) {\n\t    var moduleClass = Quill.import('modules/' + name);\n\t    if (moduleClass == null) {\n\t      debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n\t    } else {\n\t      config[name] = moduleClass.DEFAULTS || {};\n\t    }\n\t    return config;\n\t  }, {});\n\t  // Special case toolbar shorthand\n\t  if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n\t    userConfig.modules.toolbar = {\n\t      container: userConfig.modules.toolbar\n\t    };\n\t  }\n\t  userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n\t  ['bounds', 'container'].forEach(function (key) {\n\t    if (typeof userConfig[key] === 'string') {\n\t      userConfig[key] = document.querySelector(userConfig[key]);\n\t    }\n\t  });\n\t  userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n\t    if (userConfig.modules[name]) {\n\t      config[name] = userConfig.modules[name];\n\t    }\n\t    return config;\n\t  }, {});\n\t  return userConfig;\n\t}\n\t\n\t// Handle selection preservation and TEXT_CHANGE emission\n\t// common to modification APIs\n\tfunction modify(modifier, source, index, shift) {\n\t  if (!this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n\t    return new _quillDelta2.default();\n\t  }\n\t  var range = index == null ? null : this.getSelection();\n\t  var oldDelta = this.editor.delta;\n\t  var change = modifier();\n\t  if (range != null) {\n\t    if (index === true) index = range.index;\n\t    if (shift == null) {\n\t      range = shiftRange(range, change, source);\n\t    } else if (shift !== 0) {\n\t      range = shiftRange(range, index, shift, source);\n\t    }\n\t    this.setSelection(range, _emitter4.default.sources.SILENT);\n\t  }\n\t  if (change.length() > 0) {\n\t    var _emitter;\n\t\n\t    var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n\t    (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n\t    if (source !== _emitter4.default.sources.SILENT) {\n\t      var _emitter2;\n\t\n\t      (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n\t    }\n\t  }\n\t  return change;\n\t}\n\t\n\tfunction overload(index, length, name, value, source) {\n\t  var formats = {};\n\t  if (typeof index.index === 'number' && typeof index.length === 'number') {\n\t    // Allow for throwaway end (used by insertText/insertEmbed)\n\t    if (typeof length !== 'number') {\n\t      source = value, value = name, name = length, length = index.length, index = index.index;\n\t    } else {\n\t      length = index.length, index = index.index;\n\t    }\n\t  } else if (typeof length !== 'number') {\n\t    source = value, value = name, name = length, length = 0;\n\t  }\n\t  // Handle format being object, two format name/value strings or excluded\n\t  if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n\t    formats = name;\n\t    source = value;\n\t  } else if (typeof name === 'string') {\n\t    if (value != null) {\n\t      formats[name] = value;\n\t    } else {\n\t      source = name;\n\t    }\n\t  }\n\t  // Handle optional source\n\t  source = source || _emitter4.default.sources.API;\n\t  return [index, length, formats, source];\n\t}\n\t\n\tfunction shiftRange(range, index, length, source) {\n\t  if (range == null) return null;\n\t  var start = void 0,\n\t      end = void 0;\n\t  if (index instanceof _quillDelta2.default) {\n\t    var _map = [range.index, range.index + range.length].map(function (pos) {\n\t      return index.transformPosition(pos, source === _emitter4.default.sources.USER);\n\t    });\n\t\n\t    var _map2 = _slicedToArray(_map, 2);\n\t\n\t    start = _map2[0];\n\t    end = _map2[1];\n\t  } else {\n\t    var _map3 = [range.index, range.index + range.length].map(function (pos) {\n\t      if (pos < index || pos === index && source !== _emitter4.default.sources.USER) return pos;\n\t      if (length >= 0) {\n\t        return pos + length;\n\t      } else {\n\t        return Math.max(index, pos + length);\n\t      }\n\t    });\n\t\n\t    var _map4 = _slicedToArray(_map3, 2);\n\t\n\t    start = _map4[0];\n\t    end = _map4[1];\n\t  }\n\t  return new _selection.Range(start, end - start);\n\t}\n\t\n\texports.expandConfig = expandConfig;\n\texports.overload = overload;\n\texports.default = Quill;\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar elem = document.createElement('div');\n\telem.classList.toggle('test-class', false);\n\tif (elem.classList.contains('test-class')) {\n\t  (function () {\n\t    var _toggle = DOMTokenList.prototype.toggle;\n\t    DOMTokenList.prototype.toggle = function (token, force) {\n\t      if (arguments.length > 1 && !this.contains(token) === !force) {\n\t        return force;\n\t      } else {\n\t        return _toggle.call(this, token);\n\t      }\n\t    };\n\t  })();\n\t}\n\t\n\tif (!String.prototype.startsWith) {\n\t  String.prototype.startsWith = function (searchString, position) {\n\t    position = position || 0;\n\t    return this.substr(position, searchString.length) === searchString;\n\t  };\n\t}\n\t\n\tif (!String.prototype.endsWith) {\n\t  String.prototype.endsWith = function (searchString, position) {\n\t    var subjectString = this.toString();\n\t    if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n\t      position = subjectString.length;\n\t    }\n\t    position -= searchString.length;\n\t    var lastIndex = subjectString.indexOf(searchString, position);\n\t    return lastIndex !== -1 && lastIndex === position;\n\t  };\n\t}\n\t\n\tif (!Array.prototype.find) {\n\t  Object.defineProperty(Array.prototype, \"find\", {\n\t    value: function value(predicate) {\n\t      if (this === null) {\n\t        throw new TypeError('Array.prototype.find called on null or undefined');\n\t      }\n\t      if (typeof predicate !== 'function') {\n\t        throw new TypeError('predicate must be a function');\n\t      }\n\t      var list = Object(this);\n\t      var length = list.length >>> 0;\n\t      var thisArg = arguments[1];\n\t      var value;\n\t\n\t      for (var i = 0; i < length; i++) {\n\t        value = list[i];\n\t        if (predicate.call(thisArg, value, i, list)) {\n\t          return value;\n\t        }\n\t      }\n\t      return undefined;\n\t    }\n\t  });\n\t}\n\t\n\t// Disable resizing in Firefox\n\tdocument.addEventListener(\"DOMContentLoaded\", function () {\n\t  document.execCommand(\"enableObjectResizing\", false, false);\n\t});\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar diff = __webpack_require__(21);\n\tvar equal = __webpack_require__(22);\n\tvar extend = __webpack_require__(25);\n\tvar op = __webpack_require__(26);\n\t\n\t\n\tvar NULL_CHARACTER = String.fromCharCode(0);  // Placeholder char for embed in diff()\n\t\n\t\n\tvar Delta = function (ops) {\n\t  // Assume we are given a well formed ops\n\t  if (Array.isArray(ops)) {\n\t    this.ops = ops;\n\t  } else if (ops != null && Array.isArray(ops.ops)) {\n\t    this.ops = ops.ops;\n\t  } else {\n\t    this.ops = [];\n\t  }\n\t};\n\t\n\t\n\tDelta.prototype.insert = function (text, attributes) {\n\t  var newOp = {};\n\t  if (text.length === 0) return this;\n\t  newOp.insert = text;\n\t  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n\t    newOp.attributes = attributes;\n\t  }\n\t  return this.push(newOp);\n\t};\n\t\n\tDelta.prototype['delete'] = function (length) {\n\t  if (length <= 0) return this;\n\t  return this.push({ 'delete': length });\n\t};\n\t\n\tDelta.prototype.retain = function (length, attributes) {\n\t  if (length <= 0) return this;\n\t  var newOp = { retain: length };\n\t  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n\t    newOp.attributes = attributes;\n\t  }\n\t  return this.push(newOp);\n\t};\n\t\n\tDelta.prototype.push = function (newOp) {\n\t  var index = this.ops.length;\n\t  var lastOp = this.ops[index - 1];\n\t  newOp = extend(true, {}, newOp);\n\t  if (typeof lastOp === 'object') {\n\t    if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n\t      this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n\t      return this;\n\t    }\n\t    // Since it does not matter if we insert before or after deleting at the same index,\n\t    // always prefer to insert first\n\t    if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n\t      index -= 1;\n\t      lastOp = this.ops[index - 1];\n\t      if (typeof lastOp !== 'object') {\n\t        this.ops.unshift(newOp);\n\t        return this;\n\t      }\n\t    }\n\t    if (equal(newOp.attributes, lastOp.attributes)) {\n\t      if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n\t        this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n\t        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n\t        return this;\n\t      } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n\t        this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n\t        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n\t        return this;\n\t      }\n\t    }\n\t  }\n\t  if (index === this.ops.length) {\n\t    this.ops.push(newOp);\n\t  } else {\n\t    this.ops.splice(index, 0, newOp);\n\t  }\n\t  return this;\n\t};\n\t\n\tDelta.prototype.filter = function (predicate) {\n\t  return this.ops.filter(predicate);\n\t};\n\t\n\tDelta.prototype.forEach = function (predicate) {\n\t  this.ops.forEach(predicate);\n\t};\n\t\n\tDelta.prototype.map = function (predicate) {\n\t  return this.ops.map(predicate);\n\t};\n\t\n\tDelta.prototype.partition = function (predicate) {\n\t  var passed = [], failed = [];\n\t  this.forEach(function(op) {\n\t    var target = predicate(op) ? passed : failed;\n\t    target.push(op);\n\t  });\n\t  return [passed, failed];\n\t};\n\t\n\tDelta.prototype.reduce = function (predicate, initial) {\n\t  return this.ops.reduce(predicate, initial);\n\t};\n\t\n\tDelta.prototype.chop = function () {\n\t  var lastOp = this.ops[this.ops.length - 1];\n\t  if (lastOp && lastOp.retain && !lastOp.attributes) {\n\t    this.ops.pop();\n\t  }\n\t  return this;\n\t};\n\t\n\tDelta.prototype.length = function () {\n\t  return this.reduce(function (length, elem) {\n\t    return length + op.length(elem);\n\t  }, 0);\n\t};\n\t\n\tDelta.prototype.slice = function (start, end) {\n\t  start = start || 0;\n\t  if (typeof end !== 'number') end = Infinity;\n\t  var ops = [];\n\t  var iter = op.iterator(this.ops);\n\t  var index = 0;\n\t  while (index < end && iter.hasNext()) {\n\t    var nextOp;\n\t    if (index < start) {\n\t      nextOp = iter.next(start - index);\n\t    } else {\n\t      nextOp = iter.next(end - index);\n\t      ops.push(nextOp);\n\t    }\n\t    index += op.length(nextOp);\n\t  }\n\t  return new Delta(ops);\n\t};\n\t\n\t\n\tDelta.prototype.compose = function (other) {\n\t  var thisIter = op.iterator(this.ops);\n\t  var otherIter = op.iterator(other.ops);\n\t  var delta = new Delta();\n\t  while (thisIter.hasNext() || otherIter.hasNext()) {\n\t    if (otherIter.peekType() === 'insert') {\n\t      delta.push(otherIter.next());\n\t    } else if (thisIter.peekType() === 'delete') {\n\t      delta.push(thisIter.next());\n\t    } else {\n\t      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n\t      var thisOp = thisIter.next(length);\n\t      var otherOp = otherIter.next(length);\n\t      if (typeof otherOp.retain === 'number') {\n\t        var newOp = {};\n\t        if (typeof thisOp.retain === 'number') {\n\t          newOp.retain = length;\n\t        } else {\n\t          newOp.insert = thisOp.insert;\n\t        }\n\t        // Preserve null when composing with a retain, otherwise remove it for inserts\n\t        var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n\t        if (attributes) newOp.attributes = attributes;\n\t        delta.push(newOp);\n\t      // Other op should be delete, we could be an insert or retain\n\t      // Insert + delete cancels out\n\t      } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n\t        delta.push(otherOp);\n\t      }\n\t    }\n\t  }\n\t  return delta.chop();\n\t};\n\t\n\tDelta.prototype.concat = function (other) {\n\t  var delta = new Delta(this.ops.slice());\n\t  if (other.ops.length > 0) {\n\t    delta.push(other.ops[0]);\n\t    delta.ops = delta.ops.concat(other.ops.slice(1));\n\t  }\n\t  return delta;\n\t};\n\t\n\tDelta.prototype.diff = function (other, index) {\n\t  if (this.ops === other.ops) {\n\t    return new Delta();\n\t  }\n\t  var strings = [this, other].map(function (delta) {\n\t    return delta.map(function (op) {\n\t      if (op.insert != null) {\n\t        return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n\t      }\n\t      var prep = (delta === other) ? 'on' : 'with';\n\t      throw new Error('diff() called ' + prep + ' non-document');\n\t    }).join('');\n\t  });\n\t  var delta = new Delta();\n\t  var diffResult = diff(strings[0], strings[1], index);\n\t  var thisIter = op.iterator(this.ops);\n\t  var otherIter = op.iterator(other.ops);\n\t  diffResult.forEach(function (component) {\n\t    var length = component[1].length;\n\t    while (length > 0) {\n\t      var opLength = 0;\n\t      switch (component[0]) {\n\t        case diff.INSERT:\n\t          opLength = Math.min(otherIter.peekLength(), length);\n\t          delta.push(otherIter.next(opLength));\n\t          break;\n\t        case diff.DELETE:\n\t          opLength = Math.min(length, thisIter.peekLength());\n\t          thisIter.next(opLength);\n\t          delta['delete'](opLength);\n\t          break;\n\t        case diff.EQUAL:\n\t          opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n\t          var thisOp = thisIter.next(opLength);\n\t          var otherOp = otherIter.next(opLength);\n\t          if (equal(thisOp.insert, otherOp.insert)) {\n\t            delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n\t          } else {\n\t            delta.push(otherOp)['delete'](opLength);\n\t          }\n\t          break;\n\t      }\n\t      length -= opLength;\n\t    }\n\t  });\n\t  return delta.chop();\n\t};\n\t\n\tDelta.prototype.eachLine = function (predicate, newline) {\n\t  newline = newline || '\\n';\n\t  var iter = op.iterator(this.ops);\n\t  var line = new Delta();\n\t  while (iter.hasNext()) {\n\t    if (iter.peekType() !== 'insert') return;\n\t    var thisOp = iter.peek();\n\t    var start = op.length(thisOp) - iter.peekLength();\n\t    var index = typeof thisOp.insert === 'string' ?\n\t      thisOp.insert.indexOf(newline, start) - start : -1;\n\t    if (index < 0) {\n\t      line.push(iter.next());\n\t    } else if (index > 0) {\n\t      line.push(iter.next(index));\n\t    } else {\n\t      predicate(line, iter.next(1).attributes || {});\n\t      line = new Delta();\n\t    }\n\t  }\n\t  if (line.length() > 0) {\n\t    predicate(line, {});\n\t  }\n\t};\n\t\n\tDelta.prototype.transform = function (other, priority) {\n\t  priority = !!priority;\n\t  if (typeof other === 'number') {\n\t    return this.transformPosition(other, priority);\n\t  }\n\t  var thisIter = op.iterator(this.ops);\n\t  var otherIter = op.iterator(other.ops);\n\t  var delta = new Delta();\n\t  while (thisIter.hasNext() || otherIter.hasNext()) {\n\t    if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n\t      delta.retain(op.length(thisIter.next()));\n\t    } else if (otherIter.peekType() === 'insert') {\n\t      delta.push(otherIter.next());\n\t    } else {\n\t      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n\t      var thisOp = thisIter.next(length);\n\t      var otherOp = otherIter.next(length);\n\t      if (thisOp['delete']) {\n\t        // Our delete either makes their delete redundant or removes their retain\n\t        continue;\n\t      } else if (otherOp['delete']) {\n\t        delta.push(otherOp);\n\t      } else {\n\t        // We retain either their retain or insert\n\t        delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n\t      }\n\t    }\n\t  }\n\t  return delta.chop();\n\t};\n\t\n\tDelta.prototype.transformPosition = function (index, priority) {\n\t  priority = !!priority;\n\t  var thisIter = op.iterator(this.ops);\n\t  var offset = 0;\n\t  while (thisIter.hasNext() && offset <= index) {\n\t    var length = thisIter.peekLength();\n\t    var nextType = thisIter.peekType();\n\t    thisIter.next();\n\t    if (nextType === 'delete') {\n\t      index -= Math.min(length, index - offset);\n\t      continue;\n\t    } else if (nextType === 'insert' && (offset < index || !priority)) {\n\t      index += length;\n\t    }\n\t    offset += length;\n\t  }\n\t  return index;\n\t};\n\t\n\t\n\tmodule.exports = Delta;\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports) {\n\n\t/**\n\t * This library modifies the diff-patch-match library by Neil Fraser\n\t * by removing the patch and match functionality and certain advanced\n\t * options in the diff function. The original license is as follows:\n\t *\n\t * ===\n\t *\n\t * Diff Match and Patch\n\t *\n\t * Copyright 2006 Google Inc.\n\t * http://code.google.com/p/google-diff-match-patch/\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t *   http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t\n\t\n\t/**\n\t * The data structure representing a diff is an array of tuples:\n\t * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n\t * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n\t */\n\tvar DIFF_DELETE = -1;\n\tvar DIFF_INSERT = 1;\n\tvar DIFF_EQUAL = 0;\n\t\n\t\n\t/**\n\t * Find the differences between two texts.  Simplifies the problem by stripping\n\t * any common prefix or suffix off the texts before diffing.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @param {Int} cursor_pos Expected edit position in text1 (optional)\n\t * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_main(text1, text2, cursor_pos) {\n\t  // Check for equality (speedup).\n\t  if (text1 == text2) {\n\t    if (text1) {\n\t      return [[DIFF_EQUAL, text1]];\n\t    }\n\t    return [];\n\t  }\n\t\n\t  // Check cursor_pos within bounds\n\t  if (cursor_pos < 0 || text1.length < cursor_pos) {\n\t    cursor_pos = null;\n\t  }\n\t\n\t  // Trim off common prefix (speedup).\n\t  var commonlength = diff_commonPrefix(text1, text2);\n\t  var commonprefix = text1.substring(0, commonlength);\n\t  text1 = text1.substring(commonlength);\n\t  text2 = text2.substring(commonlength);\n\t\n\t  // Trim off common suffix (speedup).\n\t  commonlength = diff_commonSuffix(text1, text2);\n\t  var commonsuffix = text1.substring(text1.length - commonlength);\n\t  text1 = text1.substring(0, text1.length - commonlength);\n\t  text2 = text2.substring(0, text2.length - commonlength);\n\t\n\t  // Compute the diff on the middle block.\n\t  var diffs = diff_compute_(text1, text2);\n\t\n\t  // Restore the prefix and suffix.\n\t  if (commonprefix) {\n\t    diffs.unshift([DIFF_EQUAL, commonprefix]);\n\t  }\n\t  if (commonsuffix) {\n\t    diffs.push([DIFF_EQUAL, commonsuffix]);\n\t  }\n\t  diff_cleanupMerge(diffs);\n\t  if (cursor_pos != null) {\n\t    diffs = fix_cursor(diffs, cursor_pos);\n\t  }\n\t  return diffs;\n\t};\n\t\n\t\n\t/**\n\t * Find the differences between two texts.  Assumes that the texts do not\n\t * have any common prefix or suffix.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_compute_(text1, text2) {\n\t  var diffs;\n\t\n\t  if (!text1) {\n\t    // Just add some text (speedup).\n\t    return [[DIFF_INSERT, text2]];\n\t  }\n\t\n\t  if (!text2) {\n\t    // Just delete some text (speedup).\n\t    return [[DIFF_DELETE, text1]];\n\t  }\n\t\n\t  var longtext = text1.length > text2.length ? text1 : text2;\n\t  var shorttext = text1.length > text2.length ? text2 : text1;\n\t  var i = longtext.indexOf(shorttext);\n\t  if (i != -1) {\n\t    // Shorter text is inside the longer text (speedup).\n\t    diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n\t             [DIFF_EQUAL, shorttext],\n\t             [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n\t    // Swap insertions for deletions if diff is reversed.\n\t    if (text1.length > text2.length) {\n\t      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n\t    }\n\t    return diffs;\n\t  }\n\t\n\t  if (shorttext.length == 1) {\n\t    // Single character string.\n\t    // After the previous speedup, the character can't be an equality.\n\t    return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n\t  }\n\t\n\t  // Check to see if the problem can be split in two.\n\t  var hm = diff_halfMatch_(text1, text2);\n\t  if (hm) {\n\t    // A half-match was found, sort out the return data.\n\t    var text1_a = hm[0];\n\t    var text1_b = hm[1];\n\t    var text2_a = hm[2];\n\t    var text2_b = hm[3];\n\t    var mid_common = hm[4];\n\t    // Send both pairs off for separate processing.\n\t    var diffs_a = diff_main(text1_a, text2_a);\n\t    var diffs_b = diff_main(text1_b, text2_b);\n\t    // Merge the results.\n\t    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n\t  }\n\t\n\t  return diff_bisect_(text1, text2);\n\t};\n\t\n\t\n\t/**\n\t * Find the 'middle snake' of a diff, split the problem in two\n\t * and return the recursively constructed diff.\n\t * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @return {Array} Array of diff tuples.\n\t * @private\n\t */\n\tfunction diff_bisect_(text1, text2) {\n\t  // Cache the text lengths to prevent multiple calls.\n\t  var text1_length = text1.length;\n\t  var text2_length = text2.length;\n\t  var max_d = Math.ceil((text1_length + text2_length) / 2);\n\t  var v_offset = max_d;\n\t  var v_length = 2 * max_d;\n\t  var v1 = new Array(v_length);\n\t  var v2 = new Array(v_length);\n\t  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n\t  // integers and undefined.\n\t  for (var x = 0; x < v_length; x++) {\n\t    v1[x] = -1;\n\t    v2[x] = -1;\n\t  }\n\t  v1[v_offset + 1] = 0;\n\t  v2[v_offset + 1] = 0;\n\t  var delta = text1_length - text2_length;\n\t  // If the total number of characters is odd, then the front path will collide\n\t  // with the reverse path.\n\t  var front = (delta % 2 != 0);\n\t  // Offsets for start and end of k loop.\n\t  // Prevents mapping of space beyond the grid.\n\t  var k1start = 0;\n\t  var k1end = 0;\n\t  var k2start = 0;\n\t  var k2end = 0;\n\t  for (var d = 0; d < max_d; d++) {\n\t    // Walk the front path one step.\n\t    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n\t      var k1_offset = v_offset + k1;\n\t      var x1;\n\t      if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n\t        x1 = v1[k1_offset + 1];\n\t      } else {\n\t        x1 = v1[k1_offset - 1] + 1;\n\t      }\n\t      var y1 = x1 - k1;\n\t      while (x1 < text1_length && y1 < text2_length &&\n\t             text1.charAt(x1) == text2.charAt(y1)) {\n\t        x1++;\n\t        y1++;\n\t      }\n\t      v1[k1_offset] = x1;\n\t      if (x1 > text1_length) {\n\t        // Ran off the right of the graph.\n\t        k1end += 2;\n\t      } else if (y1 > text2_length) {\n\t        // Ran off the bottom of the graph.\n\t        k1start += 2;\n\t      } else if (front) {\n\t        var k2_offset = v_offset + delta - k1;\n\t        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n\t          // Mirror x2 onto top-left coordinate system.\n\t          var x2 = text1_length - v2[k2_offset];\n\t          if (x1 >= x2) {\n\t            // Overlap detected.\n\t            return diff_bisectSplit_(text1, text2, x1, y1);\n\t          }\n\t        }\n\t      }\n\t    }\n\t\n\t    // Walk the reverse path one step.\n\t    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n\t      var k2_offset = v_offset + k2;\n\t      var x2;\n\t      if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n\t        x2 = v2[k2_offset + 1];\n\t      } else {\n\t        x2 = v2[k2_offset - 1] + 1;\n\t      }\n\t      var y2 = x2 - k2;\n\t      while (x2 < text1_length && y2 < text2_length &&\n\t             text1.charAt(text1_length - x2 - 1) ==\n\t             text2.charAt(text2_length - y2 - 1)) {\n\t        x2++;\n\t        y2++;\n\t      }\n\t      v2[k2_offset] = x2;\n\t      if (x2 > text1_length) {\n\t        // Ran off the left of the graph.\n\t        k2end += 2;\n\t      } else if (y2 > text2_length) {\n\t        // Ran off the top of the graph.\n\t        k2start += 2;\n\t      } else if (!front) {\n\t        var k1_offset = v_offset + delta - k2;\n\t        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n\t          var x1 = v1[k1_offset];\n\t          var y1 = v_offset + x1 - k1_offset;\n\t          // Mirror x2 onto top-left coordinate system.\n\t          x2 = text1_length - x2;\n\t          if (x1 >= x2) {\n\t            // Overlap detected.\n\t            return diff_bisectSplit_(text1, text2, x1, y1);\n\t          }\n\t        }\n\t      }\n\t    }\n\t  }\n\t  // Diff took too long and hit the deadline or\n\t  // number of diffs equals number of characters, no commonality at all.\n\t  return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n\t};\n\t\n\t\n\t/**\n\t * Given the location of the 'middle snake', split the diff in two parts\n\t * and recurse.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @param {number} x Index of split point in text1.\n\t * @param {number} y Index of split point in text2.\n\t * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_bisectSplit_(text1, text2, x, y) {\n\t  var text1a = text1.substring(0, x);\n\t  var text2a = text2.substring(0, y);\n\t  var text1b = text1.substring(x);\n\t  var text2b = text2.substring(y);\n\t\n\t  // Compute both diffs serially.\n\t  var diffs = diff_main(text1a, text2a);\n\t  var diffsb = diff_main(text1b, text2b);\n\t\n\t  return diffs.concat(diffsb);\n\t};\n\t\n\t\n\t/**\n\t * Determine the common prefix of two strings.\n\t * @param {string} text1 First string.\n\t * @param {string} text2 Second string.\n\t * @return {number} The number of characters common to the start of each\n\t *     string.\n\t */\n\tfunction diff_commonPrefix(text1, text2) {\n\t  // Quick check for common null cases.\n\t  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n\t    return 0;\n\t  }\n\t  // Binary search.\n\t  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\t  var pointermin = 0;\n\t  var pointermax = Math.min(text1.length, text2.length);\n\t  var pointermid = pointermax;\n\t  var pointerstart = 0;\n\t  while (pointermin < pointermid) {\n\t    if (text1.substring(pointerstart, pointermid) ==\n\t        text2.substring(pointerstart, pointermid)) {\n\t      pointermin = pointermid;\n\t      pointerstart = pointermin;\n\t    } else {\n\t      pointermax = pointermid;\n\t    }\n\t    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n\t  }\n\t  return pointermid;\n\t};\n\t\n\t\n\t/**\n\t * Determine the common suffix of two strings.\n\t * @param {string} text1 First string.\n\t * @param {string} text2 Second string.\n\t * @return {number} The number of characters common to the end of each string.\n\t */\n\tfunction diff_commonSuffix(text1, text2) {\n\t  // Quick check for common null cases.\n\t  if (!text1 || !text2 ||\n\t      text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n\t    return 0;\n\t  }\n\t  // Binary search.\n\t  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\t  var pointermin = 0;\n\t  var pointermax = Math.min(text1.length, text2.length);\n\t  var pointermid = pointermax;\n\t  var pointerend = 0;\n\t  while (pointermin < pointermid) {\n\t    if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n\t        text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n\t      pointermin = pointermid;\n\t      pointerend = pointermin;\n\t    } else {\n\t      pointermax = pointermid;\n\t    }\n\t    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n\t  }\n\t  return pointermid;\n\t};\n\t\n\t\n\t/**\n\t * Do the two texts share a substring which is at least half the length of the\n\t * longer text?\n\t * This speedup can produce non-minimal diffs.\n\t * @param {string} text1 First string.\n\t * @param {string} text2 Second string.\n\t * @return {Array.<string>} Five element Array, containing the prefix of\n\t *     text1, the suffix of text1, the prefix of text2, the suffix of\n\t *     text2 and the common middle.  Or null if there was no match.\n\t */\n\tfunction diff_halfMatch_(text1, text2) {\n\t  var longtext = text1.length > text2.length ? text1 : text2;\n\t  var shorttext = text1.length > text2.length ? text2 : text1;\n\t  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n\t    return null;  // Pointless.\n\t  }\n\t\n\t  /**\n\t   * Does a substring of shorttext exist within longtext such that the substring\n\t   * is at least half the length of longtext?\n\t   * Closure, but does not reference any external variables.\n\t   * @param {string} longtext Longer string.\n\t   * @param {string} shorttext Shorter string.\n\t   * @param {number} i Start index of quarter length substring within longtext.\n\t   * @return {Array.<string>} Five element Array, containing the prefix of\n\t   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n\t   *     of shorttext and the common middle.  Or null if there was no match.\n\t   * @private\n\t   */\n\t  function diff_halfMatchI_(longtext, shorttext, i) {\n\t    // Start with a 1/4 length substring at position i as a seed.\n\t    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n\t    var j = -1;\n\t    var best_common = '';\n\t    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n\t    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n\t      var prefixLength = diff_commonPrefix(longtext.substring(i),\n\t                                           shorttext.substring(j));\n\t      var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n\t                                           shorttext.substring(0, j));\n\t      if (best_common.length < suffixLength + prefixLength) {\n\t        best_common = shorttext.substring(j - suffixLength, j) +\n\t            shorttext.substring(j, j + prefixLength);\n\t        best_longtext_a = longtext.substring(0, i - suffixLength);\n\t        best_longtext_b = longtext.substring(i + prefixLength);\n\t        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n\t        best_shorttext_b = shorttext.substring(j + prefixLength);\n\t      }\n\t    }\n\t    if (best_common.length * 2 >= longtext.length) {\n\t      return [best_longtext_a, best_longtext_b,\n\t              best_shorttext_a, best_shorttext_b, best_common];\n\t    } else {\n\t      return null;\n\t    }\n\t  }\n\t\n\t  // First check if the second quarter is the seed for a half-match.\n\t  var hm1 = diff_halfMatchI_(longtext, shorttext,\n\t                             Math.ceil(longtext.length / 4));\n\t  // Check again based on the third quarter.\n\t  var hm2 = diff_halfMatchI_(longtext, shorttext,\n\t                             Math.ceil(longtext.length / 2));\n\t  var hm;\n\t  if (!hm1 && !hm2) {\n\t    return null;\n\t  } else if (!hm2) {\n\t    hm = hm1;\n\t  } else if (!hm1) {\n\t    hm = hm2;\n\t  } else {\n\t    // Both matched.  Select the longest.\n\t    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n\t  }\n\t\n\t  // A half-match was found, sort out the return data.\n\t  var text1_a, text1_b, text2_a, text2_b;\n\t  if (text1.length > text2.length) {\n\t    text1_a = hm[0];\n\t    text1_b = hm[1];\n\t    text2_a = hm[2];\n\t    text2_b = hm[3];\n\t  } else {\n\t    text2_a = hm[0];\n\t    text2_b = hm[1];\n\t    text1_a = hm[2];\n\t    text1_b = hm[3];\n\t  }\n\t  var mid_common = hm[4];\n\t  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n\t};\n\t\n\t\n\t/**\n\t * Reorder and merge like edit sections.  Merge equalities.\n\t * Any edit section can move as long as it doesn't cross an equality.\n\t * @param {Array} diffs Array of diff tuples.\n\t */\n\tfunction diff_cleanupMerge(diffs) {\n\t  diffs.push([DIFF_EQUAL, '']);  // Add a dummy entry at the end.\n\t  var pointer = 0;\n\t  var count_delete = 0;\n\t  var count_insert = 0;\n\t  var text_delete = '';\n\t  var text_insert = '';\n\t  var commonlength;\n\t  while (pointer < diffs.length) {\n\t    switch (diffs[pointer][0]) {\n\t      case DIFF_INSERT:\n\t        count_insert++;\n\t        text_insert += diffs[pointer][1];\n\t        pointer++;\n\t        break;\n\t      case DIFF_DELETE:\n\t        count_delete++;\n\t        text_delete += diffs[pointer][1];\n\t        pointer++;\n\t        break;\n\t      case DIFF_EQUAL:\n\t        // Upon reaching an equality, check for prior redundancies.\n\t        if (count_delete + count_insert > 1) {\n\t          if (count_delete !== 0 && count_insert !== 0) {\n\t            // Factor out any common prefixies.\n\t            commonlength = diff_commonPrefix(text_insert, text_delete);\n\t            if (commonlength !== 0) {\n\t              if ((pointer - count_delete - count_insert) > 0 &&\n\t                  diffs[pointer - count_delete - count_insert - 1][0] ==\n\t                  DIFF_EQUAL) {\n\t                diffs[pointer - count_delete - count_insert - 1][1] +=\n\t                    text_insert.substring(0, commonlength);\n\t              } else {\n\t                diffs.splice(0, 0, [DIFF_EQUAL,\n\t                                    text_insert.substring(0, commonlength)]);\n\t                pointer++;\n\t              }\n\t              text_insert = text_insert.substring(commonlength);\n\t              text_delete = text_delete.substring(commonlength);\n\t            }\n\t            // Factor out any common suffixies.\n\t            commonlength = diff_commonSuffix(text_insert, text_delete);\n\t            if (commonlength !== 0) {\n\t              diffs[pointer][1] = text_insert.substring(text_insert.length -\n\t                  commonlength) + diffs[pointer][1];\n\t              text_insert = text_insert.substring(0, text_insert.length -\n\t                  commonlength);\n\t              text_delete = text_delete.substring(0, text_delete.length -\n\t                  commonlength);\n\t            }\n\t          }\n\t          // Delete the offending records and add the merged ones.\n\t          if (count_delete === 0) {\n\t            diffs.splice(pointer - count_insert,\n\t                count_delete + count_insert, [DIFF_INSERT, text_insert]);\n\t          } else if (count_insert === 0) {\n\t            diffs.splice(pointer - count_delete,\n\t                count_delete + count_insert, [DIFF_DELETE, text_delete]);\n\t          } else {\n\t            diffs.splice(pointer - count_delete - count_insert,\n\t                count_delete + count_insert, [DIFF_DELETE, text_delete],\n\t                [DIFF_INSERT, text_insert]);\n\t          }\n\t          pointer = pointer - count_delete - count_insert +\n\t                    (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n\t        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n\t          // Merge this equality with the previous one.\n\t          diffs[pointer - 1][1] += diffs[pointer][1];\n\t          diffs.splice(pointer, 1);\n\t        } else {\n\t          pointer++;\n\t        }\n\t        count_insert = 0;\n\t        count_delete = 0;\n\t        text_delete = '';\n\t        text_insert = '';\n\t        break;\n\t    }\n\t  }\n\t  if (diffs[diffs.length - 1][1] === '') {\n\t    diffs.pop();  // Remove the dummy entry at the end.\n\t  }\n\t\n\t  // Second pass: look for single edits surrounded on both sides by equalities\n\t  // which can be shifted sideways to eliminate an equality.\n\t  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n\t  var changes = false;\n\t  pointer = 1;\n\t  // Intentionally ignore the first and last element (don't need checking).\n\t  while (pointer < diffs.length - 1) {\n\t    if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n\t        diffs[pointer + 1][0] == DIFF_EQUAL) {\n\t      // This is a single edit surrounded by equalities.\n\t      if (diffs[pointer][1].substring(diffs[pointer][1].length -\n\t          diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n\t        // Shift the edit over the previous equality.\n\t        diffs[pointer][1] = diffs[pointer - 1][1] +\n\t            diffs[pointer][1].substring(0, diffs[pointer][1].length -\n\t                                        diffs[pointer - 1][1].length);\n\t        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n\t        diffs.splice(pointer - 1, 1);\n\t        changes = true;\n\t      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n\t          diffs[pointer + 1][1]) {\n\t        // Shift the edit over the next equality.\n\t        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n\t        diffs[pointer][1] =\n\t            diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n\t            diffs[pointer + 1][1];\n\t        diffs.splice(pointer + 1, 1);\n\t        changes = true;\n\t      }\n\t    }\n\t    pointer++;\n\t  }\n\t  // If shifts were made, the diff needs reordering and another shift sweep.\n\t  if (changes) {\n\t    diff_cleanupMerge(diffs);\n\t  }\n\t};\n\t\n\t\n\tvar diff = diff_main;\n\tdiff.INSERT = DIFF_INSERT;\n\tdiff.DELETE = DIFF_DELETE;\n\tdiff.EQUAL = DIFF_EQUAL;\n\t\n\tmodule.exports = diff;\n\t\n\t/*\n\t * Modify a diff such that the cursor position points to the start of a change:\n\t * E.g.\n\t *   cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n\t *     => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n\t *   cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n\t *     => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n\t *\n\t * @param {Array} diffs Array of diff tuples\n\t * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n\t * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n\t */\n\tfunction cursor_normalize_diff (diffs, cursor_pos) {\n\t  if (cursor_pos === 0) {\n\t    return [DIFF_EQUAL, diffs];\n\t  }\n\t  for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n\t    var d = diffs[i];\n\t    if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n\t      var next_pos = current_pos + d[1].length;\n\t      if (cursor_pos === next_pos) {\n\t        return [i + 1, diffs];\n\t      } else if (cursor_pos < next_pos) {\n\t        // copy to prevent side effects\n\t        diffs = diffs.slice();\n\t        // split d into two diff changes\n\t        var split_pos = cursor_pos - current_pos;\n\t        var d_left = [d[0], d[1].slice(0, split_pos)];\n\t        var d_right = [d[0], d[1].slice(split_pos)];\n\t        diffs.splice(i, 1, d_left, d_right);\n\t        return [i + 1, diffs];\n\t      } else {\n\t        current_pos = next_pos;\n\t      }\n\t    }\n\t  }\n\t  throw new Error('cursor_pos is out of bounds!')\n\t}\n\t\n\t/*\n\t * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n\t *\n\t * Case 1)\n\t *   Check if a naive shift is possible:\n\t *     [0, X], [ 1, Y] -> [ 1, Y], [0, X]    (if X + Y === Y + X)\n\t *     [0, X], [-1, Y] -> [-1, Y], [0, X]    (if X + Y === Y + X) - holds same result\n\t * Case 2)\n\t *   Check if the following shifts are possible:\n\t *     [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n\t *     [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n\t *         ^            ^\n\t *         d          d_next\n\t *\n\t * @param {Array} diffs Array of diff tuples\n\t * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n\t * @return {Array} Array of diff tuples\n\t */\n\tfunction fix_cursor (diffs, cursor_pos) {\n\t  var norm = cursor_normalize_diff(diffs, cursor_pos);\n\t  var ndiffs = norm[1];\n\t  var cursor_pointer = norm[0];\n\t  var d = ndiffs[cursor_pointer];\n\t  var d_next = ndiffs[cursor_pointer + 1];\n\t\n\t  if (d == null) {\n\t    // Text was deleted from end of original string,\n\t    // cursor is now out of bounds in new string\n\t    return diffs;\n\t  } else if (d[0] !== DIFF_EQUAL) {\n\t    // A modification happened at the cursor location.\n\t    // This is the expected outcome, so we can return the original diff.\n\t    return diffs;\n\t  } else {\n\t    if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n\t      // Case 1)\n\t      // It is possible to perform a naive shift\n\t      ndiffs.splice(cursor_pointer, 2, d_next, d)\n\t      return merge_tuples(ndiffs, cursor_pointer, 2)\n\t    } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n\t      // Case 2)\n\t      // d[1] is a prefix of d_next[1]\n\t      // We can assume that d_next[0] !== 0, since d[0] === 0\n\t      // Shift edit locations..\n\t      ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n\t      var suffix = d_next[1].slice(d[1].length);\n\t      if (suffix.length > 0) {\n\t        ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n\t      }\n\t      return merge_tuples(ndiffs, cursor_pointer, 3)\n\t    } else {\n\t      // Not possible to perform any modification\n\t      return diffs;\n\t    }\n\t  }\n\t\n\t}\n\t\n\t/*\n\t * Try to merge tuples with their neigbors in a given range.\n\t * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n\t *\n\t * @param {Array} diffs Array of diff tuples.\n\t * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n\t * @param {Int} length Number of consecutive elements to check.\n\t * @return {Array} Array of merged diff tuples.\n\t */\n\tfunction merge_tuples (diffs, start, length) {\n\t  // Check from (start-1) to (start+length).\n\t  for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n\t    if (i + 1 < diffs.length) {\n\t      var left_d = diffs[i];\n\t      var right_d = diffs[i+1];\n\t      if (left_d[0] === right_d[1]) {\n\t        diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n\t      }\n\t    }\n\t  }\n\t  return diffs;\n\t}\n\n\n/***/ },\n/* 22 */\n[112, 23, 24],\n/* 23 */\n/***/ function(module, exports) {\n\n\texports = module.exports = typeof Object.keys === 'function'\n\t  ? Object.keys : shim;\n\t\n\texports.shim = shim;\n\tfunction shim (obj) {\n\t  var keys = [];\n\t  for (var key in obj) keys.push(key);\n\t  return keys;\n\t}\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports) {\n\n\tvar supportsArgumentsClass = (function(){\n\t  return Object.prototype.toString.call(arguments)\n\t})() == '[object Arguments]';\n\t\n\texports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\t\n\texports.supported = supported;\n\tfunction supported(object) {\n\t  return Object.prototype.toString.call(object) == '[object Arguments]';\n\t};\n\t\n\texports.unsupported = unsupported;\n\tfunction unsupported(object){\n\t  return object &&\n\t    typeof object == 'object' &&\n\t    typeof object.length == 'number' &&\n\t    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n\t    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n\t    false;\n\t};\n\n\n/***/ },\n/* 25 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar hasOwn = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\t\n\tvar isArray = function isArray(arr) {\n\t\tif (typeof Array.isArray === 'function') {\n\t\t\treturn Array.isArray(arr);\n\t\t}\n\t\n\t\treturn toStr.call(arr) === '[object Array]';\n\t};\n\t\n\tvar isPlainObject = function isPlainObject(obj) {\n\t\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\t\treturn false;\n\t\t}\n\t\n\t\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\t\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t\t// Not own constructor property must be Object\n\t\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\t\treturn false;\n\t\t}\n\t\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tvar key;\n\t\tfor (key in obj) {/**/}\n\t\n\t\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n\t};\n\t\n\tmodule.exports = function extend() {\n\t\tvar options, name, src, copy, copyIsArray, clone,\n\t\t\ttarget = arguments[0],\n\t\t\ti = 1,\n\t\t\tlength = arguments.length,\n\t\t\tdeep = false;\n\t\n\t\t// Handle a deep copy situation\n\t\tif (typeof target === 'boolean') {\n\t\t\tdeep = target;\n\t\t\ttarget = arguments[1] || {};\n\t\t\t// skip the boolean and the target\n\t\t\ti = 2;\n\t\t} else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {\n\t\t\ttarget = {};\n\t\t}\n\t\n\t\tfor (; i < length; ++i) {\n\t\t\toptions = arguments[i];\n\t\t\t// Only deal with non-null/undefined values\n\t\t\tif (options != null) {\n\t\t\t\t// Extend the base object\n\t\t\t\tfor (name in options) {\n\t\t\t\t\tsrc = target[name];\n\t\t\t\t\tcopy = options[name];\n\t\n\t\t\t\t\t// Prevent never-ending loop\n\t\t\t\t\tif (target !== copy) {\n\t\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\t\n\t\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// Return the modified object\n\t\treturn target;\n\t};\n\t\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar equal = __webpack_require__(22);\n\tvar extend = __webpack_require__(25);\n\t\n\t\n\tvar lib = {\n\t  attributes: {\n\t    compose: function (a, b, keepNull) {\n\t      if (typeof a !== 'object') a = {};\n\t      if (typeof b !== 'object') b = {};\n\t      var attributes = extend(true, {}, b);\n\t      if (!keepNull) {\n\t        attributes = Object.keys(attributes).reduce(function (copy, key) {\n\t          if (attributes[key] != null) {\n\t            copy[key] = attributes[key];\n\t          }\n\t          return copy;\n\t        }, {});\n\t      }\n\t      for (var key in a) {\n\t        if (a[key] !== undefined && b[key] === undefined) {\n\t          attributes[key] = a[key];\n\t        }\n\t      }\n\t      return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t    },\n\t\n\t    diff: function(a, b) {\n\t      if (typeof a !== 'object') a = {};\n\t      if (typeof b !== 'object') b = {};\n\t      var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n\t        if (!equal(a[key], b[key])) {\n\t          attributes[key] = b[key] === undefined ? null : b[key];\n\t        }\n\t        return attributes;\n\t      }, {});\n\t      return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t    },\n\t\n\t    transform: function (a, b, priority) {\n\t      if (typeof a !== 'object') return b;\n\t      if (typeof b !== 'object') return undefined;\n\t      if (!priority) return b;  // b simply overwrites us without priority\n\t      var attributes = Object.keys(b).reduce(function (attributes, key) {\n\t        if (a[key] === undefined) attributes[key] = b[key];  // null is a valid value\n\t        return attributes;\n\t      }, {});\n\t      return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t    }\n\t  },\n\t\n\t  iterator: function (ops) {\n\t    return new Iterator(ops);\n\t  },\n\t\n\t  length: function (op) {\n\t    if (typeof op['delete'] === 'number') {\n\t      return op['delete'];\n\t    } else if (typeof op.retain === 'number') {\n\t      return op.retain;\n\t    } else {\n\t      return typeof op.insert === 'string' ? op.insert.length : 1;\n\t    }\n\t  }\n\t};\n\t\n\t\n\tfunction Iterator(ops) {\n\t  this.ops = ops;\n\t  this.index = 0;\n\t  this.offset = 0;\n\t};\n\t\n\tIterator.prototype.hasNext = function () {\n\t  return this.peekLength() < Infinity;\n\t};\n\t\n\tIterator.prototype.next = function (length) {\n\t  if (!length) length = Infinity;\n\t  var nextOp = this.ops[this.index];\n\t  if (nextOp) {\n\t    var offset = this.offset;\n\t    var opLength = lib.length(nextOp)\n\t    if (length >= opLength - offset) {\n\t      length = opLength - offset;\n\t      this.index += 1;\n\t      this.offset = 0;\n\t    } else {\n\t      this.offset += length;\n\t    }\n\t    if (typeof nextOp['delete'] === 'number') {\n\t      return { 'delete': length };\n\t    } else {\n\t      var retOp = {};\n\t      if (nextOp.attributes) {\n\t        retOp.attributes = nextOp.attributes;\n\t      }\n\t      if (typeof nextOp.retain === 'number') {\n\t        retOp.retain = length;\n\t      } else if (typeof nextOp.insert === 'string') {\n\t        retOp.insert = nextOp.insert.substr(offset, length);\n\t      } else {\n\t        // offset should === 0, length should === 1\n\t        retOp.insert = nextOp.insert;\n\t      }\n\t      return retOp;\n\t    }\n\t  } else {\n\t    return { retain: Infinity };\n\t  }\n\t};\n\t\n\tIterator.prototype.peek = function () {\n\t  return this.ops[this.index];\n\t};\n\t\n\tIterator.prototype.peekLength = function () {\n\t  if (this.ops[this.index]) {\n\t    // Should never return 0 if our index is being managed correctly\n\t    return lib.length(this.ops[this.index]) - this.offset;\n\t  } else {\n\t    return Infinity;\n\t  }\n\t};\n\t\n\tIterator.prototype.peekType = function () {\n\t  if (this.ops[this.index]) {\n\t    if (typeof this.ops[this.index]['delete'] === 'number') {\n\t      return 'delete';\n\t    } else if (typeof this.ops[this.index].retain === 'number') {\n\t      return 'retain';\n\t    } else {\n\t      return 'insert';\n\t    }\n\t  }\n\t  return 'retain';\n\t};\n\t\n\t\n\tmodule.exports = lib;\n\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _op = __webpack_require__(26);\n\t\n\tvar _op2 = _interopRequireDefault(_op);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _code = __webpack_require__(28);\n\t\n\tvar _code2 = _interopRequireDefault(_code);\n\t\n\tvar _cursor = __webpack_require__(35);\n\t\n\tvar _cursor2 = _interopRequireDefault(_cursor);\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _clone = __webpack_require__(39);\n\t\n\tvar _clone2 = _interopRequireDefault(_clone);\n\t\n\tvar _deepEqual = __webpack_require__(40);\n\t\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\t\n\tvar _extend = __webpack_require__(30);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar Editor = function () {\n\t  function Editor(scroll) {\n\t    _classCallCheck(this, Editor);\n\t\n\t    this.scroll = scroll;\n\t    this.delta = this.getDelta();\n\t  }\n\t\n\t  _createClass(Editor, [{\n\t    key: 'applyDelta',\n\t    value: function applyDelta(delta) {\n\t      var _this = this;\n\t\n\t      var consumeNextNewline = false;\n\t      this.scroll.update();\n\t      var scrollLength = this.scroll.length();\n\t      this.scroll.batch = true;\n\t      delta = normalizeDelta(delta);\n\t      delta.reduce(function (index, op) {\n\t        var length = op.retain || op.delete || op.insert.length || 1;\n\t        var attributes = op.attributes || {};\n\t        if (op.insert != null) {\n\t          if (typeof op.insert === 'string') {\n\t            var text = op.insert;\n\t            if (text.endsWith('\\n') && consumeNextNewline) {\n\t              consumeNextNewline = false;\n\t              text = text.slice(0, -1);\n\t            }\n\t            if (index >= scrollLength && !text.endsWith('\\n')) {\n\t              consumeNextNewline = true;\n\t            }\n\t            _this.scroll.insertAt(index, text);\n\t\n\t            var _scroll$line = _this.scroll.line(index),\n\t                _scroll$line2 = _slicedToArray(_scroll$line, 2),\n\t                line = _scroll$line2[0],\n\t                offset = _scroll$line2[1];\n\t\n\t            var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n\t            if (line instanceof _block2.default) {\n\t              var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n\t                  _line$descendant2 = _slicedToArray(_line$descendant, 1),\n\t                  leaf = _line$descendant2[0];\n\t\n\t              formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n\t            }\n\t            attributes = _op2.default.attributes.diff(formats, attributes) || {};\n\t          } else if (_typeof(op.insert) === 'object') {\n\t            var key = Object.keys(op.insert)[0]; // There should only be one key\n\t            if (key == null) return index;\n\t            _this.scroll.insertAt(index, key, op.insert[key]);\n\t          }\n\t          scrollLength += length;\n\t        }\n\t        Object.keys(attributes).forEach(function (name) {\n\t          _this.scroll.formatAt(index, length, name, attributes[name]);\n\t        });\n\t        return index + length;\n\t      }, 0);\n\t      delta.reduce(function (index, op) {\n\t        if (typeof op.delete === 'number') {\n\t          _this.scroll.deleteAt(index, op.delete);\n\t          return index;\n\t        }\n\t        return index + (op.retain || op.insert.length || 1);\n\t      }, 0);\n\t      this.scroll.batch = false;\n\t      this.scroll.optimize();\n\t      return this.update(delta);\n\t    }\n\t  }, {\n\t    key: 'deleteText',\n\t    value: function deleteText(index, length) {\n\t      this.scroll.deleteAt(index, length);\n\t      return this.update(new _quillDelta2.default().retain(index).delete(length));\n\t    }\n\t  }, {\n\t    key: 'formatLine',\n\t    value: function formatLine(index, length) {\n\t      var _this2 = this;\n\t\n\t      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\n\t      this.scroll.update();\n\t      Object.keys(formats).forEach(function (format) {\n\t        var lines = _this2.scroll.lines(index, Math.max(length, 1));\n\t        var lengthRemaining = length;\n\t        lines.forEach(function (line) {\n\t          var lineLength = line.length();\n\t          if (!(line instanceof _code2.default)) {\n\t            line.format(format, formats[format]);\n\t          } else {\n\t            var codeIndex = index - line.offset(_this2.scroll);\n\t            var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n\t            line.formatAt(codeIndex, codeLength, format, formats[format]);\n\t          }\n\t          lengthRemaining -= lineLength;\n\t        });\n\t      });\n\t      this.scroll.optimize();\n\t      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n\t    }\n\t  }, {\n\t    key: 'formatText',\n\t    value: function formatText(index, length) {\n\t      var _this3 = this;\n\t\n\t      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\n\t      Object.keys(formats).forEach(function (format) {\n\t        _this3.scroll.formatAt(index, length, format, formats[format]);\n\t      });\n\t      return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n\t    }\n\t  }, {\n\t    key: 'getContents',\n\t    value: function getContents(index, length) {\n\t      return this.delta.slice(index, index + length);\n\t    }\n\t  }, {\n\t    key: 'getDelta',\n\t    value: function getDelta() {\n\t      return this.scroll.lines().reduce(function (delta, line) {\n\t        return delta.concat(line.delta());\n\t      }, new _quillDelta2.default());\n\t    }\n\t  }, {\n\t    key: 'getFormat',\n\t    value: function getFormat(index) {\n\t      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t      var lines = [],\n\t          leaves = [];\n\t      if (length === 0) {\n\t        this.scroll.path(index).forEach(function (path) {\n\t          var _path = _slicedToArray(path, 1),\n\t              blot = _path[0];\n\t\n\t          if (blot instanceof _block2.default) {\n\t            lines.push(blot);\n\t          } else if (blot instanceof _parchment2.default.Leaf) {\n\t            leaves.push(blot);\n\t          }\n\t        });\n\t      } else {\n\t        lines = this.scroll.lines(index, length);\n\t        leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n\t      }\n\t      var formatsArr = [lines, leaves].map(function (blots) {\n\t        if (blots.length === 0) return {};\n\t        var formats = (0, _block.bubbleFormats)(blots.shift());\n\t        while (Object.keys(formats).length > 0) {\n\t          var blot = blots.shift();\n\t          if (blot == null) return formats;\n\t          formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n\t        }\n\t        return formats;\n\t      });\n\t      return _extend2.default.apply(_extend2.default, formatsArr);\n\t    }\n\t  }, {\n\t    key: 'getText',\n\t    value: function getText(index, length) {\n\t      return this.getContents(index, length).filter(function (op) {\n\t        return typeof op.insert === 'string';\n\t      }).map(function (op) {\n\t        return op.insert;\n\t      }).join('');\n\t    }\n\t  }, {\n\t    key: 'insertEmbed',\n\t    value: function insertEmbed(index, embed, value) {\n\t      this.scroll.insertAt(index, embed, value);\n\t      return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n\t    }\n\t  }, {\n\t    key: 'insertText',\n\t    value: function insertText(index, text) {\n\t      var _this4 = this;\n\t\n\t      var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\n\t      text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\t      this.scroll.insertAt(index, text);\n\t      Object.keys(formats).forEach(function (format) {\n\t        _this4.scroll.formatAt(index, text.length, format, formats[format]);\n\t      });\n\t      return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n\t    }\n\t  }, {\n\t    key: 'isBlank',\n\t    value: function isBlank() {\n\t      if (this.scroll.children.length == 0) return true;\n\t      if (this.scroll.children.length > 1) return false;\n\t      var child = this.scroll.children.head;\n\t      return child.length() <= 1 && Object.keys(child.formats()).length == 0;\n\t    }\n\t  }, {\n\t    key: 'removeFormat',\n\t    value: function removeFormat(index, length) {\n\t      var text = this.getText(index, length);\n\t\n\t      var _scroll$line3 = this.scroll.line(index + length),\n\t          _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n\t          line = _scroll$line4[0],\n\t          offset = _scroll$line4[1];\n\t\n\t      var suffixLength = 0,\n\t          suffix = new _quillDelta2.default();\n\t      if (line != null) {\n\t        if (!(line instanceof _code2.default)) {\n\t          suffixLength = line.length() - offset;\n\t        } else {\n\t          suffixLength = line.newlineIndex(offset) - offset + 1;\n\t        }\n\t        suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n\t      }\n\t      var contents = this.getContents(index, length + suffixLength);\n\t      var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n\t      var delta = new _quillDelta2.default().retain(index).concat(diff);\n\t      return this.applyDelta(delta);\n\t    }\n\t  }, {\n\t    key: 'update',\n\t    value: function update(change) {\n\t      var _this5 = this;\n\t\n\t      var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\t      var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\t\n\t      var oldDelta = this.delta;\n\t      if (mutations.length === 1 && mutations[0].type === 'characterData' && _parchment2.default.find(mutations[0].target)) {\n\t        (function () {\n\t          // Optimization for character changes\n\t          var textBlot = _parchment2.default.find(mutations[0].target);\n\t          var formats = (0, _block.bubbleFormats)(textBlot);\n\t          var index = textBlot.offset(_this5.scroll);\n\t          var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n\t          var oldText = new _quillDelta2.default().insert(oldValue);\n\t          var newText = new _quillDelta2.default().insert(textBlot.value());\n\t          var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n\t          change = diffDelta.reduce(function (delta, op) {\n\t            if (op.insert) {\n\t              return delta.insert(op.insert, formats);\n\t            } else {\n\t              return delta.push(op);\n\t            }\n\t          }, new _quillDelta2.default());\n\t          _this5.delta = oldDelta.compose(change);\n\t        })();\n\t      } else {\n\t        this.delta = this.getDelta();\n\t        if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n\t          change = oldDelta.diff(this.delta, cursorIndex);\n\t        }\n\t      }\n\t      return change;\n\t    }\n\t  }]);\n\t\n\t  return Editor;\n\t}();\n\t\n\tfunction combineFormats(formats, combined) {\n\t  return Object.keys(combined).reduce(function (merged, name) {\n\t    if (formats[name] == null) return merged;\n\t    if (combined[name] === formats[name]) {\n\t      merged[name] = combined[name];\n\t    } else if (Array.isArray(combined[name])) {\n\t      if (combined[name].indexOf(formats[name]) < 0) {\n\t        merged[name] = combined[name].concat([formats[name]]);\n\t      }\n\t    } else {\n\t      merged[name] = [combined[name], formats[name]];\n\t    }\n\t    return merged;\n\t  }, {});\n\t}\n\t\n\tfunction normalizeDelta(delta) {\n\t  return delta.reduce(function (delta, op) {\n\t    if (op.insert === 1) {\n\t      var attributes = (0, _clone2.default)(op.attributes);\n\t      delete attributes['image'];\n\t      return delta.insert({ image: op.attributes.image }, attributes);\n\t    }\n\t    if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n\t      op = (0, _clone2.default)(op);\n\t      if (op.attributes.list) {\n\t        op.attributes.list = 'ordered';\n\t      } else {\n\t        op.attributes.list = 'bullet';\n\t        delete op.attributes.bullet;\n\t      }\n\t    }\n\t    if (typeof op.insert === 'string') {\n\t      var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\t      return delta.insert(text, op.attributes);\n\t    }\n\t    return delta.push(op);\n\t  }, new _quillDelta2.default());\n\t}\n\t\n\texports.default = Editor;\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.default = exports.Code = undefined;\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _inline = __webpack_require__(33);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tvar _text = __webpack_require__(34);\n\t\n\tvar _text2 = _interopRequireDefault(_text);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Code = function (_Inline) {\n\t  _inherits(Code, _Inline);\n\t\n\t  function Code() {\n\t    _classCallCheck(this, Code);\n\t\n\t    return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n\t  }\n\t\n\t  return Code;\n\t}(_inline2.default);\n\t\n\tCode.blotName = 'code';\n\tCode.tagName = 'CODE';\n\t\n\tvar CodeBlock = function (_Block) {\n\t  _inherits(CodeBlock, _Block);\n\t\n\t  function CodeBlock() {\n\t    _classCallCheck(this, CodeBlock);\n\t\n\t    return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(CodeBlock, [{\n\t    key: 'delta',\n\t    value: function delta() {\n\t      var _this3 = this;\n\t\n\t      var text = this.domNode.textContent;\n\t      if (text.endsWith('\\n')) {\n\t        // Should always be true\n\t        text = text.slice(0, -1);\n\t      }\n\t      return text.split('\\n').reduce(function (delta, frag) {\n\t        return delta.insert(frag).insert('\\n', _this3.formats());\n\t      }, new _quillDelta2.default());\n\t    }\n\t  }, {\n\t    key: 'format',\n\t    value: function format(name, value) {\n\t      if (name === this.statics.blotName && value) return;\n\t\n\t      var _descendant = this.descendant(_text2.default, this.length() - 1),\n\t          _descendant2 = _slicedToArray(_descendant, 1),\n\t          text = _descendant2[0];\n\t\n\t      if (text != null) {\n\t        text.deleteAt(text.length() - 1, 1);\n\t      }\n\t      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n\t    }\n\t  }, {\n\t    key: 'formatAt',\n\t    value: function formatAt(index, length, name, value) {\n\t      if (length === 0) return;\n\t      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n\t        return;\n\t      }\n\t      var nextNewline = this.newlineIndex(index);\n\t      if (nextNewline < 0 || nextNewline >= index + length) return;\n\t      var prevNewline = this.newlineIndex(index, true) + 1;\n\t      var isolateLength = nextNewline - prevNewline + 1;\n\t      var blot = this.isolate(prevNewline, isolateLength);\n\t      var next = blot.next;\n\t      blot.format(name, value);\n\t      if (next instanceof CodeBlock) {\n\t        next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'insertAt',\n\t    value: function insertAt(index, value, def) {\n\t      if (def != null) return;\n\t\n\t      var _descendant3 = this.descendant(_text2.default, index),\n\t          _descendant4 = _slicedToArray(_descendant3, 2),\n\t          text = _descendant4[0],\n\t          offset = _descendant4[1];\n\t\n\t      text.insertAt(offset, value);\n\t    }\n\t  }, {\n\t    key: 'length',\n\t    value: function length() {\n\t      var length = this.domNode.textContent.length;\n\t      if (!this.domNode.textContent.endsWith('\\n')) {\n\t        return length + 1;\n\t      }\n\t      return length;\n\t    }\n\t  }, {\n\t    key: 'newlineIndex',\n\t    value: function newlineIndex(searchIndex) {\n\t      var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t      if (!reverse) {\n\t        var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n\t        return offset > -1 ? searchIndex + offset : -1;\n\t      } else {\n\t        return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n\t      }\n\t    }\n\t  }, {\n\t    key: 'optimize',\n\t    value: function optimize() {\n\t      if (!this.domNode.textContent.endsWith('\\n')) {\n\t        this.appendChild(_parchment2.default.create('text', '\\n'));\n\t      }\n\t      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this);\n\t      var next = this.next;\n\t      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n\t        next.optimize();\n\t        next.moveChildren(this);\n\t        next.remove();\n\t      }\n\t    }\n\t  }, {\n\t    key: 'replace',\n\t    value: function replace(target) {\n\t      _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n\t      [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n\t        var blot = _parchment2.default.find(node);\n\t        if (blot == null) {\n\t          node.parentNode.removeChild(node);\n\t        } else if (blot instanceof _parchment2.default.Embed) {\n\t          blot.remove();\n\t        } else {\n\t          blot.unwrap();\n\t        }\n\t      });\n\t    }\n\t  }], [{\n\t    key: 'create',\n\t    value: function create(value) {\n\t      var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n\t      domNode.setAttribute('spellcheck', false);\n\t      return domNode;\n\t    }\n\t  }, {\n\t    key: 'formats',\n\t    value: function formats() {\n\t      return true;\n\t    }\n\t  }]);\n\t\n\t  return CodeBlock;\n\t}(_block2.default);\n\t\n\tCodeBlock.blotName = 'code-block';\n\tCodeBlock.tagName = 'PRE';\n\tCodeBlock.TAB = '  ';\n\t\n\texports.Code = Code;\n\texports.default = CodeBlock;\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _extend = __webpack_require__(30);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _break = __webpack_require__(31);\n\t\n\tvar _break2 = _interopRequireDefault(_break);\n\t\n\tvar _embed = __webpack_require__(32);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _inline = __webpack_require__(33);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tvar _text = __webpack_require__(34);\n\t\n\tvar _text2 = _interopRequireDefault(_text);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar NEWLINE_LENGTH = 1;\n\t\n\tvar BlockEmbed = function (_Embed) {\n\t  _inherits(BlockEmbed, _Embed);\n\t\n\t  function BlockEmbed() {\n\t    _classCallCheck(this, BlockEmbed);\n\t\n\t    return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(BlockEmbed, [{\n\t    key: 'attach',\n\t    value: function attach() {\n\t      _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n\t      this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n\t    }\n\t  }, {\n\t    key: 'delta',\n\t    value: function delta() {\n\t      return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n\t    }\n\t  }, {\n\t    key: 'format',\n\t    value: function format(name, value) {\n\t      var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n\t      if (attribute != null) {\n\t        this.attributes.attribute(attribute, value);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'formatAt',\n\t    value: function formatAt(index, length, name, value) {\n\t      this.format(name, value);\n\t    }\n\t  }, {\n\t    key: 'insertAt',\n\t    value: function insertAt(index, value, def) {\n\t      if (typeof value === 'string' && value.endsWith('\\n')) {\n\t        var block = _parchment2.default.create(Block.blotName);\n\t        this.parent.insertBefore(block, index === 0 ? this : this.next);\n\t        block.insertAt(0, value.slice(0, -1));\n\t      } else {\n\t        _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n\t      }\n\t    }\n\t  }]);\n\t\n\t  return BlockEmbed;\n\t}(_embed2.default);\n\t\n\tBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n\t// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\t\n\t\n\tvar Block = function (_Parchment$Block) {\n\t  _inherits(Block, _Parchment$Block);\n\t\n\t  function Block(domNode) {\n\t    _classCallCheck(this, Block);\n\t\n\t    var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\t\n\t    _this2.cache = {};\n\t    return _this2;\n\t  }\n\t\n\t  _createClass(Block, [{\n\t    key: 'delta',\n\t    value: function delta() {\n\t      if (this.cache.delta == null) {\n\t        this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n\t          if (leaf.length() === 0) {\n\t            return delta;\n\t          } else {\n\t            return delta.insert(leaf.value(), bubbleFormats(leaf));\n\t          }\n\t        }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n\t      }\n\t      return this.cache.delta;\n\t    }\n\t  }, {\n\t    key: 'deleteAt',\n\t    value: function deleteAt(index, length) {\n\t      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n\t      this.cache = {};\n\t    }\n\t  }, {\n\t    key: 'formatAt',\n\t    value: function formatAt(index, length, name, value) {\n\t      if (length <= 0) return;\n\t      if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n\t        if (index + length === this.length()) {\n\t          this.format(name, value);\n\t        }\n\t      } else {\n\t        _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n\t      }\n\t      this.cache = {};\n\t    }\n\t  }, {\n\t    key: 'insertAt',\n\t    value: function insertAt(index, value, def) {\n\t      if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n\t      if (value.length === 0) return;\n\t      var lines = value.split('\\n');\n\t      var text = lines.shift();\n\t      if (text.length > 0) {\n\t        if (index < this.length() - 1 || this.children.tail == null) {\n\t          _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n\t        } else {\n\t          this.children.tail.insertAt(this.children.tail.length(), text);\n\t        }\n\t        this.cache = {};\n\t      }\n\t      var block = this;\n\t      lines.reduce(function (index, line) {\n\t        block = block.split(index, true);\n\t        block.insertAt(0, line);\n\t        return line.length;\n\t      }, index + text.length);\n\t    }\n\t  }, {\n\t    key: 'insertBefore',\n\t    value: function insertBefore(blot, ref) {\n\t      var head = this.children.head;\n\t      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n\t      if (head instanceof _break2.default) {\n\t        head.remove();\n\t      }\n\t      this.cache = {};\n\t    }\n\t  }, {\n\t    key: 'length',\n\t    value: function length() {\n\t      if (this.cache.length == null) {\n\t        this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n\t      }\n\t      return this.cache.length;\n\t    }\n\t  }, {\n\t    key: 'moveChildren',\n\t    value: function moveChildren(target, ref) {\n\t      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n\t      this.cache = {};\n\t    }\n\t  }, {\n\t    key: 'optimize',\n\t    value: function optimize() {\n\t      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this);\n\t      this.cache = {};\n\t    }\n\t  }, {\n\t    key: 'path',\n\t    value: function path(index) {\n\t      return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n\t    }\n\t  }, {\n\t    key: 'removeChild',\n\t    value: function removeChild(child) {\n\t      _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n\t      this.cache = {};\n\t    }\n\t  }, {\n\t    key: 'split',\n\t    value: function split(index) {\n\t      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t      if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n\t        var clone = this.clone();\n\t        if (index === 0) {\n\t          this.parent.insertBefore(clone, this);\n\t          return this;\n\t        } else {\n\t          this.parent.insertBefore(clone, this.next);\n\t          return clone;\n\t        }\n\t      } else {\n\t        var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n\t        this.cache = {};\n\t        return next;\n\t      }\n\t    }\n\t  }]);\n\t\n\t  return Block;\n\t}(_parchment2.default.Block);\n\t\n\tBlock.blotName = 'block';\n\tBlock.tagName = 'P';\n\tBlock.defaultChild = 'break';\n\tBlock.allowedChildren = [_inline2.default, _embed2.default, _text2.default];\n\t\n\tfunction bubbleFormats(blot) {\n\t  var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\n\t  if (blot == null) return formats;\n\t  if (typeof blot.formats === 'function') {\n\t    formats = (0, _extend2.default)(formats, blot.formats());\n\t  }\n\t  if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n\t    return formats;\n\t  }\n\t  return bubbleFormats(blot.parent, formats);\n\t}\n\t\n\texports.bubbleFormats = bubbleFormats;\n\texports.BlockEmbed = BlockEmbed;\n\texports.default = Block;\n\n/***/ },\n/* 30 */\n25,\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _embed = __webpack_require__(32);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Break = function (_Embed) {\n\t  _inherits(Break, _Embed);\n\t\n\t  function Break() {\n\t    _classCallCheck(this, Break);\n\t\n\t    return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(Break, [{\n\t    key: 'insertInto',\n\t    value: function insertInto(parent, ref) {\n\t      if (parent.children.length === 0) {\n\t        _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n\t      } else {\n\t        this.remove();\n\t      }\n\t    }\n\t  }, {\n\t    key: 'length',\n\t    value: function length() {\n\t      return 0;\n\t    }\n\t  }, {\n\t    key: 'value',\n\t    value: function value() {\n\t      return '';\n\t    }\n\t  }], [{\n\t    key: 'value',\n\t    value: function value() {\n\t      return undefined;\n\t    }\n\t  }]);\n\t\n\t  return Break;\n\t}(_embed2.default);\n\t\n\tBreak.blotName = 'break';\n\tBreak.tagName = 'BR';\n\t\n\texports.default = Break;\n\n/***/ },\n/* 32 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Embed = function (_Parchment$Embed) {\n\t  _inherits(Embed, _Parchment$Embed);\n\t\n\t  function Embed() {\n\t    _classCallCheck(this, Embed);\n\t\n\t    return _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).apply(this, arguments));\n\t  }\n\t\n\t  return Embed;\n\t}(_parchment2.default.Embed);\n\t\n\texports.default = Embed;\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _embed = __webpack_require__(32);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _text = __webpack_require__(34);\n\t\n\tvar _text2 = _interopRequireDefault(_text);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Inline = function (_Parchment$Inline) {\n\t  _inherits(Inline, _Parchment$Inline);\n\t\n\t  function Inline() {\n\t    _classCallCheck(this, Inline);\n\t\n\t    return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(Inline, [{\n\t    key: 'formatAt',\n\t    value: function formatAt(index, length, name, value) {\n\t      if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n\t        var blot = this.isolate(index, length);\n\t        if (value) {\n\t          blot.wrap(name, value);\n\t        }\n\t      } else {\n\t        _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'optimize',\n\t    value: function optimize() {\n\t      _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this);\n\t      if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n\t        var parent = this.parent.isolate(this.offset(), this.length());\n\t        this.moveChildren(parent);\n\t        parent.wrap(this);\n\t      }\n\t    }\n\t  }], [{\n\t    key: 'compare',\n\t    value: function compare(self, other) {\n\t      var selfIndex = Inline.order.indexOf(self);\n\t      var otherIndex = Inline.order.indexOf(other);\n\t      if (selfIndex >= 0 || otherIndex >= 0) {\n\t        return selfIndex - otherIndex;\n\t      } else if (self === other) {\n\t        return 0;\n\t      } else if (self < other) {\n\t        return -1;\n\t      } else {\n\t        return 1;\n\t      }\n\t    }\n\t  }]);\n\t\n\t  return Inline;\n\t}(_parchment2.default.Inline);\n\t\n\tInline.allowedChildren = [Inline, _embed2.default, _text2.default];\n\t// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\n\tInline.order = ['cursor', 'inline', // Must be lower\n\t'code', 'underline', 'strike', 'italic', 'bold', 'script', 'link' // Must be higher\n\t];\n\t\n\texports.default = Inline;\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar TextBlot = function (_Parchment$Text) {\n\t  _inherits(TextBlot, _Parchment$Text);\n\t\n\t  function TextBlot() {\n\t    _classCallCheck(this, TextBlot);\n\t\n\t    return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n\t  }\n\t\n\t  return TextBlot;\n\t}(_parchment2.default.Text);\n\t\n\texports.default = TextBlot;\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _embed = __webpack_require__(32);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _text = __webpack_require__(34);\n\t\n\tvar _text2 = _interopRequireDefault(_text);\n\t\n\tvar _emitter = __webpack_require__(36);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Cursor = function (_Embed) {\n\t  _inherits(Cursor, _Embed);\n\t\n\t  _createClass(Cursor, null, [{\n\t    key: 'value',\n\t    value: function value() {\n\t      return undefined;\n\t    }\n\t  }]);\n\t\n\t  function Cursor(domNode, selection) {\n\t    _classCallCheck(this, Cursor);\n\t\n\t    var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\t\n\t    _this.selection = selection;\n\t    _this.textNode = document.createTextNode(Cursor.CONTENTS);\n\t    _this.domNode.appendChild(_this.textNode);\n\t    _this._length = 0;\n\t    return _this;\n\t  }\n\t\n\t  _createClass(Cursor, [{\n\t    key: 'detach',\n\t    value: function detach() {\n\t      // super.detach() will also clear domNode.__blot\n\t      if (this.parent != null) this.parent.removeChild(this);\n\t    }\n\t  }, {\n\t    key: 'format',\n\t    value: function format(name, value) {\n\t      if (this._length !== 0) {\n\t        return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n\t      }\n\t      var target = this,\n\t          index = 0;\n\t      while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n\t        index += target.offset(target.parent);\n\t        target = target.parent;\n\t      }\n\t      if (target != null) {\n\t        this._length = Cursor.CONTENTS.length;\n\t        target.optimize();\n\t        target.formatAt(index, Cursor.CONTENTS.length, name, value);\n\t        this._length = 0;\n\t      }\n\t    }\n\t  }, {\n\t    key: 'index',\n\t    value: function index(node, offset) {\n\t      if (node === this.textNode) return 0;\n\t      return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n\t    }\n\t  }, {\n\t    key: 'length',\n\t    value: function length() {\n\t      return this._length;\n\t    }\n\t  }, {\n\t    key: 'position',\n\t    value: function position() {\n\t      return [this.textNode, this.textNode.data.length];\n\t    }\n\t  }, {\n\t    key: 'remove',\n\t    value: function remove() {\n\t      _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n\t      this.parent = null;\n\t    }\n\t  }, {\n\t    key: 'restore',\n\t    value: function restore() {\n\t      var _this2 = this;\n\t\n\t      if (this.selection.composing) return;\n\t      if (this.parent == null) return;\n\t      var textNode = this.textNode;\n\t      var range = this.selection.getNativeRange();\n\t      var restoreText = void 0,\n\t          start = void 0,\n\t          end = void 0;\n\t      if (range != null && range.start.node === textNode && range.end.node === textNode) {\n\t        var _ref = [textNode, range.start.offset, range.end.offset];\n\t        restoreText = _ref[0];\n\t        start = _ref[1];\n\t        end = _ref[2];\n\t      }\n\t      // Link format will insert text outside of anchor tag\n\t      while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n\t        this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n\t      }\n\t      if (this.textNode.data !== Cursor.CONTENTS) {\n\t        var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n\t        if (this.next instanceof _text2.default) {\n\t          restoreText = this.next.domNode;\n\t          this.next.insertAt(0, text);\n\t          this.textNode.data = Cursor.CONTENTS;\n\t        } else {\n\t          this.textNode.data = text;\n\t          this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n\t          this.textNode = document.createTextNode(Cursor.CONTENTS);\n\t          this.domNode.appendChild(this.textNode);\n\t        }\n\t      }\n\t      this.remove();\n\t      if (start == null) return;\n\t      this.selection.emitter.once(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n\t        var _map = [start, end].map(function (offset) {\n\t          return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n\t        });\n\t\n\t        var _map2 = _slicedToArray(_map, 2);\n\t\n\t        start = _map2[0];\n\t        end = _map2[1];\n\t\n\t        _this2.selection.setNativeRange(restoreText, start, restoreText, end);\n\t      });\n\t    }\n\t  }, {\n\t    key: 'update',\n\t    value: function update(mutations) {\n\t      var _this3 = this;\n\t\n\t      mutations.forEach(function (mutation) {\n\t        if (mutation.type === 'characterData' && mutation.target === _this3.textNode) {\n\t          _this3.restore();\n\t        }\n\t      });\n\t    }\n\t  }, {\n\t    key: 'value',\n\t    value: function value() {\n\t      return '';\n\t    }\n\t  }]);\n\t\n\t  return Cursor;\n\t}(_embed2.default);\n\t\n\tCursor.blotName = 'cursor';\n\tCursor.className = 'ql-cursor';\n\tCursor.tagName = 'span';\n\tCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\t\n\t\n\texports.default = Cursor;\n\n/***/ },\n/* 36 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _eventemitter = __webpack_require__(37);\n\t\n\tvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\t\n\tvar _logger = __webpack_require__(38);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar debug = (0, _logger2.default)('quill:events');\n\t\n\tvar Emitter = function (_EventEmitter) {\n\t  _inherits(Emitter, _EventEmitter);\n\t\n\t  function Emitter() {\n\t    _classCallCheck(this, Emitter);\n\t\n\t    var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\t\n\t    _this.on('error', debug.error);\n\t    return _this;\n\t  }\n\t\n\t  _createClass(Emitter, [{\n\t    key: 'emit',\n\t    value: function emit() {\n\t      debug.log.apply(debug, arguments);\n\t      _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n\t    }\n\t  }]);\n\t\n\t  return Emitter;\n\t}(_eventemitter2.default);\n\t\n\tEmitter.events = {\n\t  EDITOR_CHANGE: 'editor-change',\n\t  SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n\t  SCROLL_OPTIMIZE: 'scroll-optimize',\n\t  SCROLL_UPDATE: 'scroll-update',\n\t  SELECTION_CHANGE: 'selection-change',\n\t  TEXT_CHANGE: 'text-change'\n\t};\n\tEmitter.sources = {\n\t  API: 'api',\n\t  SILENT: 'silent',\n\t  USER: 'user'\n\t};\n\t\n\texports.default = Emitter;\n\n/***/ },\n/* 37 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar has = Object.prototype.hasOwnProperty\n\t  , prefix = '~';\n\t\n\t/**\n\t * Constructor to create a storage for our `EE` objects.\n\t * An `Events` instance is a plain object whose properties are event names.\n\t *\n\t * @constructor\n\t * @api private\n\t */\n\tfunction Events() {}\n\t\n\t//\n\t// We try to not inherit from `Object.prototype`. In some engines creating an\n\t// instance in this way is faster than calling `Object.create(null)` directly.\n\t// If `Object.create(null)` is not supported we prefix the event names with a\n\t// character to make sure that the built-in object properties are not\n\t// overridden or used as an attack vector.\n\t//\n\tif (Object.create) {\n\t  Events.prototype = Object.create(null);\n\t\n\t  //\n\t  // This hack is needed because the `__proto__` property is still inherited in\n\t  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n\t  //\n\t  if (!new Events().__proto__) prefix = false;\n\t}\n\t\n\t/**\n\t * Representation of a single event listener.\n\t *\n\t * @param {Function} fn The listener function.\n\t * @param {Mixed} context The context to invoke the listener with.\n\t * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n\t * @constructor\n\t * @api private\n\t */\n\tfunction EE(fn, context, once) {\n\t  this.fn = fn;\n\t  this.context = context;\n\t  this.once = once || false;\n\t}\n\t\n\t/**\n\t * Minimal `EventEmitter` interface that is molded against the Node.js\n\t * `EventEmitter` interface.\n\t *\n\t * @constructor\n\t * @api public\n\t */\n\tfunction EventEmitter() {\n\t  this._events = new Events();\n\t  this._eventsCount = 0;\n\t}\n\t\n\t/**\n\t * Return an array listing the events for which the emitter has registered\n\t * listeners.\n\t *\n\t * @returns {Array}\n\t * @api public\n\t */\n\tEventEmitter.prototype.eventNames = function eventNames() {\n\t  var names = []\n\t    , events\n\t    , name;\n\t\n\t  if (this._eventsCount === 0) return names;\n\t\n\t  for (name in (events = this._events)) {\n\t    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n\t  }\n\t\n\t  if (Object.getOwnPropertySymbols) {\n\t    return names.concat(Object.getOwnPropertySymbols(events));\n\t  }\n\t\n\t  return names;\n\t};\n\t\n\t/**\n\t * Return the listeners registered for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Boolean} exists Only check if there are listeners.\n\t * @returns {Array|Boolean}\n\t * @api public\n\t */\n\tEventEmitter.prototype.listeners = function listeners(event, exists) {\n\t  var evt = prefix ? prefix + event : event\n\t    , available = this._events[evt];\n\t\n\t  if (exists) return !!available;\n\t  if (!available) return [];\n\t  if (available.fn) return [available.fn];\n\t\n\t  for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n\t    ee[i] = available[i].fn;\n\t  }\n\t\n\t  return ee;\n\t};\n\t\n\t/**\n\t * Calls each of the listeners registered for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @returns {Boolean} `true` if the event had listeners, else `false`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n\t  var evt = prefix ? prefix + event : event;\n\t\n\t  if (!this._events[evt]) return false;\n\t\n\t  var listeners = this._events[evt]\n\t    , len = arguments.length\n\t    , args\n\t    , i;\n\t\n\t  if (listeners.fn) {\n\t    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\t\n\t    switch (len) {\n\t      case 1: return listeners.fn.call(listeners.context), true;\n\t      case 2: return listeners.fn.call(listeners.context, a1), true;\n\t      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n\t      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n\t      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n\t      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n\t    }\n\t\n\t    for (i = 1, args = new Array(len -1); i < len; i++) {\n\t      args[i - 1] = arguments[i];\n\t    }\n\t\n\t    listeners.fn.apply(listeners.context, args);\n\t  } else {\n\t    var length = listeners.length\n\t      , j;\n\t\n\t    for (i = 0; i < length; i++) {\n\t      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\t\n\t      switch (len) {\n\t        case 1: listeners[i].fn.call(listeners[i].context); break;\n\t        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n\t        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n\t        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n\t        default:\n\t          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n\t            args[j - 1] = arguments[j];\n\t          }\n\t\n\t          listeners[i].fn.apply(listeners[i].context, args);\n\t      }\n\t    }\n\t  }\n\t\n\t  return true;\n\t};\n\t\n\t/**\n\t * Add a listener for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Function} fn The listener function.\n\t * @param {Mixed} [context=this] The context to invoke the listener with.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.on = function on(event, fn, context) {\n\t  var listener = new EE(fn, context || this)\n\t    , evt = prefix ? prefix + event : event;\n\t\n\t  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n\t  else if (!this._events[evt].fn) this._events[evt].push(listener);\n\t  else this._events[evt] = [this._events[evt], listener];\n\t\n\t  return this;\n\t};\n\t\n\t/**\n\t * Add a one-time listener for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Function} fn The listener function.\n\t * @param {Mixed} [context=this] The context to invoke the listener with.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.once = function once(event, fn, context) {\n\t  var listener = new EE(fn, context || this, true)\n\t    , evt = prefix ? prefix + event : event;\n\t\n\t  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n\t  else if (!this._events[evt].fn) this._events[evt].push(listener);\n\t  else this._events[evt] = [this._events[evt], listener];\n\t\n\t  return this;\n\t};\n\t\n\t/**\n\t * Remove the listeners of a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Function} fn Only remove the listeners that match this function.\n\t * @param {Mixed} context Only remove the listeners that have this context.\n\t * @param {Boolean} once Only remove one-time listeners.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n\t  var evt = prefix ? prefix + event : event;\n\t\n\t  if (!this._events[evt]) return this;\n\t  if (!fn) {\n\t    if (--this._eventsCount === 0) this._events = new Events();\n\t    else delete this._events[evt];\n\t    return this;\n\t  }\n\t\n\t  var listeners = this._events[evt];\n\t\n\t  if (listeners.fn) {\n\t    if (\n\t         listeners.fn === fn\n\t      && (!once || listeners.once)\n\t      && (!context || listeners.context === context)\n\t    ) {\n\t      if (--this._eventsCount === 0) this._events = new Events();\n\t      else delete this._events[evt];\n\t    }\n\t  } else {\n\t    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n\t      if (\n\t           listeners[i].fn !== fn\n\t        || (once && !listeners[i].once)\n\t        || (context && listeners[i].context !== context)\n\t      ) {\n\t        events.push(listeners[i]);\n\t      }\n\t    }\n\t\n\t    //\n\t    // Reset the array, or remove it completely if we have no more listeners.\n\t    //\n\t    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n\t    else if (--this._eventsCount === 0) this._events = new Events();\n\t    else delete this._events[evt];\n\t  }\n\t\n\t  return this;\n\t};\n\t\n\t/**\n\t * Remove all listeners, or those of the specified event.\n\t *\n\t * @param {String|Symbol} [event] The event name.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n\t  var evt;\n\t\n\t  if (event) {\n\t    evt = prefix ? prefix + event : event;\n\t    if (this._events[evt]) {\n\t      if (--this._eventsCount === 0) this._events = new Events();\n\t      else delete this._events[evt];\n\t    }\n\t  } else {\n\t    this._events = new Events();\n\t    this._eventsCount = 0;\n\t  }\n\t\n\t  return this;\n\t};\n\t\n\t//\n\t// Alias methods names because people roll like that.\n\t//\n\tEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\tEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\t\n\t//\n\t// This function doesn't apply anymore.\n\t//\n\tEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n\t  return this;\n\t};\n\t\n\t//\n\t// Expose the prefix.\n\t//\n\tEventEmitter.prefixed = prefix;\n\t\n\t//\n\t// Allow `EventEmitter` to be imported as module namespace.\n\t//\n\tEventEmitter.EventEmitter = EventEmitter;\n\t\n\t//\n\t// Expose the module.\n\t//\n\tif ('undefined' !== typeof module) {\n\t  module.exports = EventEmitter;\n\t}\n\n\n/***/ },\n/* 38 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\tvar levels = ['error', 'warn', 'log', 'info'];\n\tvar level = 'warn';\n\t\n\tfunction debug(method) {\n\t  if (levels.indexOf(method) <= levels.indexOf(level)) {\n\t    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t      args[_key - 1] = arguments[_key];\n\t    }\n\t\n\t    console[method].apply(console, args); // eslint-disable-line no-console\n\t  }\n\t}\n\t\n\tfunction namespace(ns) {\n\t  return levels.reduce(function (logger, method) {\n\t    logger[method] = debug.bind(console, method, ns);\n\t    return logger;\n\t  }, {});\n\t}\n\t\n\tdebug.level = namespace.level = function (newLevel) {\n\t  level = newLevel;\n\t};\n\t\n\texports.default = namespace;\n\n/***/ },\n/* 39 */\n/***/ function(module, exports) {\n\n\tvar clone = (function() {\n\t'use strict';\n\t\n\tvar nativeMap;\n\ttry {\n\t  nativeMap = Map;\n\t} catch(_) {\n\t  // maybe a reference error because no `Map`. Give it a dummy value that no\n\t  // value will ever be an instanceof.\n\t  nativeMap = function() {};\n\t}\n\t\n\tvar nativeSet;\n\ttry {\n\t  nativeSet = Set;\n\t} catch(_) {\n\t  nativeSet = function() {};\n\t}\n\t\n\tvar nativePromise;\n\ttry {\n\t  nativePromise = Promise;\n\t} catch(_) {\n\t  nativePromise = function() {};\n\t}\n\t\n\t/**\n\t * Clones (copies) an Object using deep copying.\n\t *\n\t * This function supports circular references by default, but if you are certain\n\t * there are no circular references in your object, you can save some CPU time\n\t * by calling clone(obj, false).\n\t *\n\t * Caution: if `circular` is false and `parent` contains circular references,\n\t * your program may enter an infinite loop and crash.\n\t *\n\t * @param `parent` - the object to be cloned\n\t * @param `circular` - set to true if the object to be cloned may contain\n\t *    circular references. (optional - true by default)\n\t * @param `depth` - set to a number if the object is only to be cloned to\n\t *    a particular depth. (optional - defaults to Infinity)\n\t * @param `prototype` - sets the prototype to be used when cloning an object.\n\t *    (optional - defaults to parent prototype).\n\t*/\n\tfunction clone(parent, circular, depth, prototype) {\n\t  var filter;\n\t  if (typeof circular === 'object') {\n\t    depth = circular.depth;\n\t    prototype = circular.prototype;\n\t    filter = circular.filter;\n\t    circular = circular.circular;\n\t  }\n\t  // maintain two arrays for circular references, where corresponding parents\n\t  // and children have the same index\n\t  var allParents = [];\n\t  var allChildren = [];\n\t\n\t  var useBuffer = typeof Buffer != 'undefined';\n\t\n\t  if (typeof circular == 'undefined')\n\t    circular = true;\n\t\n\t  if (typeof depth == 'undefined')\n\t    depth = Infinity;\n\t\n\t  // recurse this function so we don't reset allParents and allChildren\n\t  function _clone(parent, depth) {\n\t    // cloning null always returns null\n\t    if (parent === null)\n\t      return null;\n\t\n\t    if (depth === 0)\n\t      return parent;\n\t\n\t    var child;\n\t    var proto;\n\t    if (typeof parent != 'object') {\n\t      return parent;\n\t    }\n\t\n\t    if (parent instanceof nativeMap) {\n\t      child = new nativeMap();\n\t    } else if (parent instanceof nativeSet) {\n\t      child = new nativeSet();\n\t    } else if (parent instanceof nativePromise) {\n\t      child = new nativePromise(function (resolve, reject) {\n\t        parent.then(function(value) {\n\t          resolve(_clone(value, depth - 1));\n\t        }, function(err) {\n\t          reject(_clone(err, depth - 1));\n\t        });\n\t      });\n\t    } else if (clone.__isArray(parent)) {\n\t      child = [];\n\t    } else if (clone.__isRegExp(parent)) {\n\t      child = new RegExp(parent.source, __getRegExpFlags(parent));\n\t      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n\t    } else if (clone.__isDate(parent)) {\n\t      child = new Date(parent.getTime());\n\t    } else if (useBuffer && Buffer.isBuffer(parent)) {\n\t      child = new Buffer(parent.length);\n\t      parent.copy(child);\n\t      return child;\n\t    } else {\n\t      if (typeof prototype == 'undefined') {\n\t        proto = Object.getPrototypeOf(parent);\n\t        child = Object.create(proto);\n\t      }\n\t      else {\n\t        child = Object.create(prototype);\n\t        proto = prototype;\n\t      }\n\t    }\n\t\n\t    if (circular) {\n\t      var index = allParents.indexOf(parent);\n\t\n\t      if (index != -1) {\n\t        return allChildren[index];\n\t      }\n\t      allParents.push(parent);\n\t      allChildren.push(child);\n\t    }\n\t\n\t    if (parent instanceof nativeMap) {\n\t      var keyIterator = parent.keys();\n\t      while(true) {\n\t        var next = keyIterator.next();\n\t        if (next.done) {\n\t          break;\n\t        }\n\t        var keyChild = _clone(next.value, depth - 1);\n\t        var valueChild = _clone(parent.get(next.value), depth - 1);\n\t        child.set(keyChild, valueChild);\n\t      }\n\t    }\n\t    if (parent instanceof nativeSet) {\n\t      var iterator = parent.keys();\n\t      while(true) {\n\t        var next = iterator.next();\n\t        if (next.done) {\n\t          break;\n\t        }\n\t        var entryChild = _clone(next.value, depth - 1);\n\t        child.add(entryChild);\n\t      }\n\t    }\n\t\n\t    for (var i in parent) {\n\t      var attrs;\n\t      if (proto) {\n\t        attrs = Object.getOwnPropertyDescriptor(proto, i);\n\t      }\n\t\n\t      if (attrs && attrs.set == null) {\n\t        continue;\n\t      }\n\t      child[i] = _clone(parent[i], depth - 1);\n\t    }\n\t\n\t    if (Object.getOwnPropertySymbols) {\n\t      var symbols = Object.getOwnPropertySymbols(parent);\n\t      for (var i = 0; i < symbols.length; i++) {\n\t        // Don't need to worry about cloning a symbol because it is a primitive,\n\t        // like a number or string.\n\t        var symbol = symbols[i];\n\t        child[symbol] = _clone(parent[symbol], depth - 1);\n\t      }\n\t    }\n\t\n\t    return child;\n\t  }\n\t\n\t  return _clone(parent, depth);\n\t}\n\t\n\t/**\n\t * Simple flat clone using prototype, accepts only objects, usefull for property\n\t * override on FLAT configuration object (no nested props).\n\t *\n\t * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n\t * works.\n\t */\n\tclone.clonePrototype = function clonePrototype(parent) {\n\t  if (parent === null)\n\t    return null;\n\t\n\t  var c = function () {};\n\t  c.prototype = parent;\n\t  return new c();\n\t};\n\t\n\t// private utility functions\n\t\n\tfunction __objToStr(o) {\n\t  return Object.prototype.toString.call(o);\n\t}\n\tclone.__objToStr = __objToStr;\n\t\n\tfunction __isDate(o) {\n\t  return typeof o === 'object' && __objToStr(o) === '[object Date]';\n\t}\n\tclone.__isDate = __isDate;\n\t\n\tfunction __isArray(o) {\n\t  return typeof o === 'object' && __objToStr(o) === '[object Array]';\n\t}\n\tclone.__isArray = __isArray;\n\t\n\tfunction __isRegExp(o) {\n\t  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n\t}\n\tclone.__isRegExp = __isRegExp;\n\t\n\tfunction __getRegExpFlags(re) {\n\t  var flags = '';\n\t  if (re.global) flags += 'g';\n\t  if (re.ignoreCase) flags += 'i';\n\t  if (re.multiline) flags += 'm';\n\t  return flags;\n\t}\n\tclone.__getRegExpFlags = __getRegExpFlags;\n\t\n\treturn clone;\n\t})();\n\t\n\tif (typeof module === 'object' && module.exports) {\n\t  module.exports = clone;\n\t}\n\n\n/***/ },\n/* 40 */\n[112, 41, 42],\n/* 41 */\n23,\n/* 42 */\n24,\n/* 43 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar Module = function Module(quill) {\n\t  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\n\t  _classCallCheck(this, Module);\n\t\n\t  this.quill = quill;\n\t  this.options = options;\n\t};\n\t\n\tModule.DEFAULTS = {};\n\t\n\texports.default = Module;\n\n/***/ },\n/* 44 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.default = exports.Range = undefined;\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _clone = __webpack_require__(39);\n\t\n\tvar _clone2 = _interopRequireDefault(_clone);\n\t\n\tvar _deepEqual = __webpack_require__(40);\n\t\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\t\n\tvar _emitter3 = __webpack_require__(36);\n\t\n\tvar _emitter4 = _interopRequireDefault(_emitter3);\n\t\n\tvar _logger = __webpack_require__(38);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar debug = (0, _logger2.default)('quill:selection');\n\t\n\tvar Range = function Range(index) {\n\t  var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t  _classCallCheck(this, Range);\n\t\n\t  this.index = index;\n\t  this.length = length;\n\t};\n\t\n\tvar Selection = function () {\n\t  function Selection(scroll, emitter) {\n\t    var _this = this;\n\t\n\t    _classCallCheck(this, Selection);\n\t\n\t    this.emitter = emitter;\n\t    this.scroll = scroll;\n\t    this.composing = false;\n\t    this.root = this.scroll.domNode;\n\t    this.root.addEventListener('compositionstart', function () {\n\t      _this.composing = true;\n\t    });\n\t    this.root.addEventListener('compositionend', function () {\n\t      _this.composing = false;\n\t    });\n\t    this.cursor = _parchment2.default.create('cursor', this);\n\t    // savedRange is last non-null range\n\t    this.lastRange = this.savedRange = new Range(0, 0);\n\t    ['keyup', 'mouseup', 'mouseleave', 'touchend', 'touchleave', 'focus', 'blur'].forEach(function (eventName) {\n\t      _this.root.addEventListener(eventName, function () {\n\t        // When range used to be a selection and user click within the selection,\n\t        // the range now being a cursor has not updated yet without setTimeout\n\t        setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 100);\n\t      });\n\t    });\n\t    this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n\t      if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n\t        _this.update(_emitter4.default.sources.SILENT);\n\t      }\n\t    });\n\t    this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n\t      var native = _this.getNativeRange();\n\t      if (native == null) return;\n\t      if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n\t      // TODO unclear if this has negative side effects\n\t      _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n\t        try {\n\t          _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n\t        } catch (ignored) {}\n\t      });\n\t    });\n\t    this.update(_emitter4.default.sources.SILENT);\n\t  }\n\t\n\t  _createClass(Selection, [{\n\t    key: 'focus',\n\t    value: function focus() {\n\t      if (this.hasFocus()) return;\n\t      var bodyTop = document.body.scrollTop;\n\t      this.root.focus();\n\t      document.body.scrollTop = bodyTop;\n\t      this.setRange(this.savedRange);\n\t    }\n\t  }, {\n\t    key: 'format',\n\t    value: function format(_format, value) {\n\t      this.scroll.update();\n\t      var nativeRange = this.getNativeRange();\n\t      if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n\t      if (nativeRange.start.node !== this.cursor.textNode) {\n\t        var blot = _parchment2.default.find(nativeRange.start.node, false);\n\t        if (blot == null) return;\n\t        // TODO Give blot ability to not split\n\t        if (blot instanceof _parchment2.default.Leaf) {\n\t          var after = blot.split(nativeRange.start.offset);\n\t          blot.parent.insertBefore(this.cursor, after);\n\t        } else {\n\t          blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n\t        }\n\t        this.cursor.attach();\n\t      }\n\t      this.cursor.format(_format, value);\n\t      this.scroll.optimize();\n\t      this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n\t      this.update();\n\t    }\n\t  }, {\n\t    key: 'getBounds',\n\t    value: function getBounds(index) {\n\t      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t      var scrollLength = this.scroll.length();\n\t      index = Math.min(index, scrollLength - 1);\n\t      length = Math.min(index + length, scrollLength - 1) - index;\n\t      var bounds = void 0,\n\t          node = void 0,\n\t          _scroll$leaf = this.scroll.leaf(index),\n\t          _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n\t          leaf = _scroll$leaf2[0],\n\t          offset = _scroll$leaf2[1];\n\t      if (leaf == null) return null;\n\t\n\t      var _leaf$position = leaf.position(offset, true);\n\t\n\t      var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\t\n\t      node = _leaf$position2[0];\n\t      offset = _leaf$position2[1];\n\t\n\t      var range = document.createRange();\n\t      if (length > 0) {\n\t        range.setStart(node, offset);\n\t\n\t        var _scroll$leaf3 = this.scroll.leaf(index + length);\n\t\n\t        var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\t\n\t        leaf = _scroll$leaf4[0];\n\t        offset = _scroll$leaf4[1];\n\t\n\t        if (leaf == null) return null;\n\t\n\t        var _leaf$position3 = leaf.position(offset, true);\n\t\n\t        var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\t\n\t        node = _leaf$position4[0];\n\t        offset = _leaf$position4[1];\n\t\n\t        range.setEnd(node, offset);\n\t        bounds = range.getBoundingClientRect();\n\t      } else {\n\t        var side = 'left';\n\t        var rect = void 0;\n\t        if (node instanceof Text) {\n\t          if (offset < node.data.length) {\n\t            range.setStart(node, offset);\n\t            range.setEnd(node, offset + 1);\n\t          } else {\n\t            range.setStart(node, offset - 1);\n\t            range.setEnd(node, offset);\n\t            side = 'right';\n\t          }\n\t          rect = range.getBoundingClientRect();\n\t        } else {\n\t          rect = leaf.domNode.getBoundingClientRect();\n\t          if (offset > 0) side = 'right';\n\t        }\n\t        bounds = {\n\t          height: rect.height,\n\t          left: rect[side],\n\t          width: 0,\n\t          top: rect.top\n\t        };\n\t      }\n\t      var containerBounds = this.root.parentNode.getBoundingClientRect();\n\t      return {\n\t        left: bounds.left - containerBounds.left,\n\t        right: bounds.left + bounds.width - containerBounds.left,\n\t        top: bounds.top - containerBounds.top,\n\t        bottom: bounds.top + bounds.height - containerBounds.top,\n\t        height: bounds.height,\n\t        width: bounds.width\n\t      };\n\t    }\n\t  }, {\n\t    key: 'getNativeRange',\n\t    value: function getNativeRange() {\n\t      var selection = document.getSelection();\n\t      if (selection == null || selection.rangeCount <= 0) return null;\n\t      var nativeRange = selection.getRangeAt(0);\n\t      if (nativeRange == null) return null;\n\t      if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n\t        return null;\n\t      }\n\t      var range = {\n\t        start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n\t        end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n\t        native: nativeRange\n\t      };\n\t      [range.start, range.end].forEach(function (position) {\n\t        var node = position.node,\n\t            offset = position.offset;\n\t        while (!(node instanceof Text) && node.childNodes.length > 0) {\n\t          if (node.childNodes.length > offset) {\n\t            node = node.childNodes[offset];\n\t            offset = 0;\n\t          } else if (node.childNodes.length === offset) {\n\t            node = node.lastChild;\n\t            offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n\t          } else {\n\t            break;\n\t          }\n\t        }\n\t        position.node = node, position.offset = offset;\n\t      });\n\t      debug.info('getNativeRange', range);\n\t      return range;\n\t    }\n\t  }, {\n\t    key: 'getRange',\n\t    value: function getRange() {\n\t      var _this2 = this;\n\t\n\t      var range = this.getNativeRange();\n\t      if (range == null) return [null, null];\n\t      var positions = [[range.start.node, range.start.offset]];\n\t      if (!range.native.collapsed) {\n\t        positions.push([range.end.node, range.end.offset]);\n\t      }\n\t      var indexes = positions.map(function (position) {\n\t        var _position = _slicedToArray(position, 2),\n\t            node = _position[0],\n\t            offset = _position[1];\n\t\n\t        var blot = _parchment2.default.find(node, true);\n\t        var index = blot.offset(_this2.scroll);\n\t        if (offset === 0) {\n\t          return index;\n\t        } else if (blot instanceof _parchment2.default.Container) {\n\t          return index + blot.length();\n\t        } else {\n\t          return index + blot.index(node, offset);\n\t        }\n\t      });\n\t      var start = Math.min.apply(Math, _toConsumableArray(indexes)),\n\t          end = Math.max.apply(Math, _toConsumableArray(indexes));\n\t      return [new Range(start, end - start), range];\n\t    }\n\t  }, {\n\t    key: 'hasFocus',\n\t    value: function hasFocus() {\n\t      return document.activeElement === this.root;\n\t    }\n\t  }, {\n\t    key: 'scrollIntoView',\n\t    value: function scrollIntoView() {\n\t      var range = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastRange;\n\t\n\t      if (range == null) return;\n\t      var bounds = this.getBounds(range.index, range.length);\n\t      if (bounds == null) return;\n\t      if (this.root.offsetHeight < bounds.bottom) {\n\t        var _scroll$line = this.scroll.line(Math.min(range.index + range.length, this.scroll.length() - 1)),\n\t            _scroll$line2 = _slicedToArray(_scroll$line, 1),\n\t            line = _scroll$line2[0];\n\t\n\t        this.root.scrollTop = line.domNode.offsetTop + line.domNode.offsetHeight - this.root.offsetHeight;\n\t      } else if (bounds.top < 0) {\n\t        var _scroll$line3 = this.scroll.line(Math.min(range.index, this.scroll.length() - 1)),\n\t            _scroll$line4 = _slicedToArray(_scroll$line3, 1),\n\t            _line = _scroll$line4[0];\n\t\n\t        this.root.scrollTop = _line.domNode.offsetTop;\n\t      }\n\t    }\n\t  }, {\n\t    key: 'setNativeRange',\n\t    value: function setNativeRange(startNode, startOffset) {\n\t      var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n\t      var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n\t      var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\t\n\t      debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n\t      if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n\t        return;\n\t      }\n\t      var selection = document.getSelection();\n\t      if (selection == null) return;\n\t      if (startNode != null) {\n\t        if (!this.hasFocus()) this.root.focus();\n\t        var nativeRange = this.getNativeRange();\n\t        if (nativeRange == null || force || startNode !== nativeRange.start.node || startOffset !== nativeRange.start.offset || endNode !== nativeRange.end.node || endOffset !== nativeRange.end.offset) {\n\t          var range = document.createRange();\n\t          range.setStart(startNode, startOffset);\n\t          range.setEnd(endNode, endOffset);\n\t          selection.removeAllRanges();\n\t          selection.addRange(range);\n\t        }\n\t      } else {\n\t        selection.removeAllRanges();\n\t        this.root.blur();\n\t        document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n\t      }\n\t    }\n\t  }, {\n\t    key: 'setRange',\n\t    value: function setRange(range) {\n\t      var _this3 = this;\n\t\n\t      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\t\n\t      if (typeof force === 'string') {\n\t        source = force;\n\t        force = false;\n\t      }\n\t      debug.info('setRange', range);\n\t      if (range != null) {\n\t        (function () {\n\t          var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n\t          var args = [];\n\t          var scrollLength = _this3.scroll.length();\n\t          indexes.forEach(function (index, i) {\n\t            index = Math.min(scrollLength - 1, index);\n\t            var node = void 0,\n\t                _scroll$leaf5 = _this3.scroll.leaf(index),\n\t                _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n\t                leaf = _scroll$leaf6[0],\n\t                offset = _scroll$leaf6[1];\n\t            var _leaf$position5 = leaf.position(offset, i !== 0);\n\t\n\t            var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\t\n\t            node = _leaf$position6[0];\n\t            offset = _leaf$position6[1];\n\t\n\t            args.push(node, offset);\n\t          });\n\t          if (args.length < 2) {\n\t            args = args.concat(args);\n\t          }\n\t          _this3.setNativeRange.apply(_this3, _toConsumableArray(args).concat([force]));\n\t        })();\n\t      } else {\n\t        this.setNativeRange(null);\n\t      }\n\t      this.update(source);\n\t    }\n\t  }, {\n\t    key: 'update',\n\t    value: function update() {\n\t      var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\t\n\t      var nativeRange = void 0,\n\t          oldRange = this.lastRange;\n\t\n\t      var _getRange = this.getRange();\n\t\n\t      var _getRange2 = _slicedToArray(_getRange, 2);\n\t\n\t      this.lastRange = _getRange2[0];\n\t      nativeRange = _getRange2[1];\n\t\n\t      if (this.lastRange != null) {\n\t        this.savedRange = this.lastRange;\n\t      }\n\t      if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n\t        var _emitter;\n\t\n\t        if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n\t          this.cursor.restore();\n\t        }\n\t        var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n\t        (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n\t        if (source !== _emitter4.default.sources.SILENT) {\n\t          var _emitter2;\n\t\n\t          (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n\t        }\n\t      }\n\t    }\n\t  }]);\n\t\n\t  return Selection;\n\t}();\n\t\n\tfunction contains(parent, descendant) {\n\t  try {\n\t    // Firefox inserts inaccessible nodes around video elements\n\t    descendant.parentNode;\n\t  } catch (e) {\n\t    return false;\n\t  }\n\t  // IE11 has bug with Text nodes\n\t  // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n\t  if (descendant instanceof Text) {\n\t    descendant = descendant.parentNode;\n\t  }\n\t  return parent.contains(descendant);\n\t}\n\t\n\texports.Range = Range;\n\texports.default = Selection;\n\n/***/ },\n/* 45 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar Theme = function () {\n\t  function Theme(quill, options) {\n\t    _classCallCheck(this, Theme);\n\t\n\t    this.quill = quill;\n\t    this.options = options;\n\t    this.modules = {};\n\t  }\n\t\n\t  _createClass(Theme, [{\n\t    key: 'init',\n\t    value: function init() {\n\t      var _this = this;\n\t\n\t      Object.keys(this.options.modules).forEach(function (name) {\n\t        if (_this.modules[name] == null) {\n\t          _this.addModule(name);\n\t        }\n\t      });\n\t    }\n\t  }, {\n\t    key: 'addModule',\n\t    value: function addModule(name) {\n\t      var moduleClass = this.quill.constructor.import('modules/' + name);\n\t      this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n\t      return this.modules[name];\n\t    }\n\t  }]);\n\t\n\t  return Theme;\n\t}();\n\t\n\tTheme.DEFAULTS = {\n\t  modules: {}\n\t};\n\tTheme.themes = {\n\t  'default': Theme\n\t};\n\t\n\texports.default = Theme;\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Container = function (_Parchment$Container) {\n\t  _inherits(Container, _Parchment$Container);\n\t\n\t  function Container() {\n\t    _classCallCheck(this, Container);\n\t\n\t    return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n\t  }\n\t\n\t  return Container;\n\t}(_parchment2.default.Container);\n\t\n\tContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\t\n\texports.default = Container;\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _emitter = __webpack_require__(36);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _break = __webpack_require__(31);\n\t\n\tvar _break2 = _interopRequireDefault(_break);\n\t\n\tvar _container = __webpack_require__(46);\n\t\n\tvar _container2 = _interopRequireDefault(_container);\n\t\n\tvar _code = __webpack_require__(28);\n\t\n\tvar _code2 = _interopRequireDefault(_code);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tfunction isLine(blot) {\n\t  return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n\t}\n\t\n\tvar Scroll = function (_Parchment$Scroll) {\n\t  _inherits(Scroll, _Parchment$Scroll);\n\t\n\t  function Scroll(domNode, config) {\n\t    _classCallCheck(this, Scroll);\n\t\n\t    var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\t\n\t    _this.emitter = config.emitter;\n\t    if (Array.isArray(config.whitelist)) {\n\t      _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n\t        whitelist[format] = true;\n\t        return whitelist;\n\t      }, {});\n\t    }\n\t    _this.optimize();\n\t    _this.enable();\n\t    return _this;\n\t  }\n\t\n\t  _createClass(Scroll, [{\n\t    key: 'deleteAt',\n\t    value: function deleteAt(index, length) {\n\t      var _line = this.line(index),\n\t          _line2 = _slicedToArray(_line, 2),\n\t          first = _line2[0],\n\t          offset = _line2[1];\n\t\n\t      var _line3 = this.line(index + length),\n\t          _line4 = _slicedToArray(_line3, 1),\n\t          last = _line4[0];\n\t\n\t      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n\t      if (last != null && first !== last && offset > 0 && !(first instanceof _block.BlockEmbed) && !(last instanceof _block.BlockEmbed)) {\n\t        if (last instanceof _code2.default) {\n\t          last.deleteAt(last.length() - 1, 1);\n\t        }\n\t        var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n\t        first.moveChildren(last, ref);\n\t        first.remove();\n\t      }\n\t      this.optimize();\n\t    }\n\t  }, {\n\t    key: 'enable',\n\t    value: function enable() {\n\t      var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\t\n\t      this.domNode.setAttribute('contenteditable', enabled);\n\t    }\n\t  }, {\n\t    key: 'formatAt',\n\t    value: function formatAt(index, length, format, value) {\n\t      if (this.whitelist != null && !this.whitelist[format]) return;\n\t      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n\t      this.optimize();\n\t    }\n\t  }, {\n\t    key: 'insertAt',\n\t    value: function insertAt(index, value, def) {\n\t      if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n\t      if (index >= this.length()) {\n\t        if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n\t          var blot = _parchment2.default.create(this.statics.defaultChild);\n\t          this.appendChild(blot);\n\t          if (def == null && value.endsWith('\\n')) {\n\t            value = value.slice(0, -1);\n\t          }\n\t          blot.insertAt(0, value, def);\n\t        } else {\n\t          var embed = _parchment2.default.create(value, def);\n\t          this.appendChild(embed);\n\t        }\n\t      } else {\n\t        _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n\t      }\n\t      this.optimize();\n\t    }\n\t  }, {\n\t    key: 'insertBefore',\n\t    value: function insertBefore(blot, ref) {\n\t      if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n\t        var wrapper = _parchment2.default.create(this.statics.defaultChild);\n\t        wrapper.appendChild(blot);\n\t        blot = wrapper;\n\t      }\n\t      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n\t    }\n\t  }, {\n\t    key: 'leaf',\n\t    value: function leaf(index) {\n\t      return this.path(index).pop() || [null, -1];\n\t    }\n\t  }, {\n\t    key: 'line',\n\t    value: function line(index) {\n\t      if (index === this.length()) {\n\t        return this.line(index - 1);\n\t      }\n\t      return this.descendant(isLine, index);\n\t    }\n\t  }, {\n\t    key: 'lines',\n\t    value: function lines() {\n\t      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t      var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\t\n\t      var getLines = function getLines(blot, index, length) {\n\t        var lines = [],\n\t            lengthLeft = length;\n\t        blot.children.forEachAt(index, length, function (child, index, length) {\n\t          if (isLine(child)) {\n\t            lines.push(child);\n\t          } else if (child instanceof _parchment2.default.Container) {\n\t            lines = lines.concat(getLines(child, index, lengthLeft));\n\t          }\n\t          lengthLeft -= length;\n\t        });\n\t        return lines;\n\t      };\n\t      return getLines(this, index, length);\n\t    }\n\t  }, {\n\t    key: 'optimize',\n\t    value: function optimize() {\n\t      var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\t\n\t      if (this.batch === true) return;\n\t      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations);\n\t      if (mutations.length > 0) {\n\t        this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'path',\n\t    value: function path(index) {\n\t      return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n\t    }\n\t  }, {\n\t    key: 'update',\n\t    value: function update(mutations) {\n\t      if (this.batch === true) return;\n\t      var source = _emitter2.default.sources.USER;\n\t      if (typeof mutations === 'string') {\n\t        source = mutations;\n\t      }\n\t      if (!Array.isArray(mutations)) {\n\t        mutations = this.observer.takeRecords();\n\t      }\n\t      if (mutations.length > 0) {\n\t        this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n\t      }\n\t      _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n\t      if (mutations.length > 0) {\n\t        this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n\t      }\n\t    }\n\t  }]);\n\t\n\t  return Scroll;\n\t}(_parchment2.default.Scroll);\n\t\n\tScroll.blotName = 'scroll';\n\tScroll.className = 'ql-editor';\n\tScroll.tagName = 'DIV';\n\tScroll.defaultChild = 'block';\n\tScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\t\n\texports.default = Scroll;\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tvar _logger = __webpack_require__(38);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _module = __webpack_require__(43);\n\t\n\tvar _module2 = _interopRequireDefault(_module);\n\t\n\tvar _align = __webpack_require__(49);\n\t\n\tvar _background = __webpack_require__(50);\n\t\n\tvar _color = __webpack_require__(51);\n\t\n\tvar _direction = __webpack_require__(52);\n\t\n\tvar _font = __webpack_require__(53);\n\t\n\tvar _size = __webpack_require__(54);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar debug = (0, _logger2.default)('quill:clipboard');\n\t\n\tvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\t\n\tvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n\t  memo[attr.keyName] = attr;\n\t  return memo;\n\t}, {});\n\t\n\tvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n\t  memo[attr.keyName] = attr;\n\t  return memo;\n\t}, {});\n\t\n\tvar Clipboard = function (_Module) {\n\t  _inherits(Clipboard, _Module);\n\t\n\t  function Clipboard(quill, options) {\n\t    _classCallCheck(this, Clipboard);\n\t\n\t    var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\t\n\t    _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n\t    _this.container = _this.quill.addContainer('ql-clipboard');\n\t    _this.container.setAttribute('contenteditable', true);\n\t    _this.container.setAttribute('tabindex', -1);\n\t    _this.matchers = [];\n\t    CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (pair) {\n\t      _this.addMatcher.apply(_this, _toConsumableArray(pair));\n\t    });\n\t    return _this;\n\t  }\n\t\n\t  _createClass(Clipboard, [{\n\t    key: 'addMatcher',\n\t    value: function addMatcher(selector, matcher) {\n\t      this.matchers.push([selector, matcher]);\n\t    }\n\t  }, {\n\t    key: 'convert',\n\t    value: function convert(html) {\n\t      var _this2 = this;\n\t\n\t      var DOM_KEY = '__ql-matcher';\n\t      if (typeof html === 'string') {\n\t        this.container.innerHTML = html;\n\t      }\n\t      var textMatchers = [],\n\t          elementMatchers = [];\n\t      this.matchers.forEach(function (pair) {\n\t        var _pair = _slicedToArray(pair, 2),\n\t            selector = _pair[0],\n\t            matcher = _pair[1];\n\t\n\t        switch (selector) {\n\t          case Node.TEXT_NODE:\n\t            textMatchers.push(matcher);\n\t            break;\n\t          case Node.ELEMENT_NODE:\n\t            elementMatchers.push(matcher);\n\t            break;\n\t          default:\n\t            [].forEach.call(_this2.container.querySelectorAll(selector), function (node) {\n\t              // TODO use weakmap\n\t              node[DOM_KEY] = node[DOM_KEY] || [];\n\t              node[DOM_KEY].push(matcher);\n\t            });\n\t            break;\n\t        }\n\t      });\n\t      var traverse = function traverse(node) {\n\t        // Post-order\n\t        if (node.nodeType === node.TEXT_NODE) {\n\t          return textMatchers.reduce(function (delta, matcher) {\n\t            return matcher(node, delta);\n\t          }, new _quillDelta2.default());\n\t        } else if (node.nodeType === node.ELEMENT_NODE) {\n\t          return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n\t            var childrenDelta = traverse(childNode);\n\t            if (childNode.nodeType === node.ELEMENT_NODE) {\n\t              childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n\t                return matcher(childNode, childrenDelta);\n\t              }, childrenDelta);\n\t              childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n\t                return matcher(childNode, childrenDelta);\n\t              }, childrenDelta);\n\t            }\n\t            return delta.concat(childrenDelta);\n\t          }, new _quillDelta2.default());\n\t        } else {\n\t          return new _quillDelta2.default();\n\t        }\n\t      };\n\t      var delta = traverse(this.container);\n\t      // Remove trailing newline\n\t      if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n\t        delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n\t      }\n\t      debug.log('convert', this.container.innerHTML, delta);\n\t      this.container.innerHTML = '';\n\t      return delta;\n\t    }\n\t  }, {\n\t    key: 'dangerouslyPasteHTML',\n\t    value: function dangerouslyPasteHTML(index, html) {\n\t      var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\t\n\t      if (typeof index === 'string') {\n\t        return this.quill.setContents(this.convert(index), html);\n\t      } else {\n\t        var paste = this.convert(html);\n\t        return this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'onPaste',\n\t    value: function onPaste(e) {\n\t      var _this3 = this;\n\t\n\t      if (e.defaultPrevented || !this.quill.isEnabled()) return;\n\t      var range = this.quill.getSelection();\n\t      var delta = new _quillDelta2.default().retain(range.index).delete(range.length);\n\t      var bodyTop = document.body.scrollTop;\n\t      this.container.focus();\n\t      setTimeout(function () {\n\t        _this3.quill.selection.update(_quill2.default.sources.SILENT);\n\t        delta = delta.concat(_this3.convert());\n\t        _this3.quill.updateContents(delta, _quill2.default.sources.USER);\n\t        // range.length contributes to delta.length()\n\t        _this3.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n\t        document.body.scrollTop = bodyTop;\n\t        _this3.quill.selection.scrollIntoView();\n\t      }, 1);\n\t    }\n\t  }]);\n\t\n\t  return Clipboard;\n\t}(_module2.default);\n\t\n\tClipboard.DEFAULTS = {\n\t  matchers: []\n\t};\n\t\n\tfunction computeStyle(node) {\n\t  if (node.nodeType !== Node.ELEMENT_NODE) return {};\n\t  var DOM_KEY = '__ql-computed-style';\n\t  return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n\t}\n\t\n\tfunction deltaEndsWith(delta, text) {\n\t  var endText = \"\";\n\t  for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n\t    var op = delta.ops[i];\n\t    if (typeof op.insert !== 'string') break;\n\t    endText = op.insert + endText;\n\t  }\n\t  return endText.slice(-1 * text.length) === text;\n\t}\n\t\n\tfunction isLine(node) {\n\t  if (node.childNodes.length === 0) return false; // Exclude embed blocks\n\t  var style = computeStyle(node);\n\t  return ['block', 'list-item'].indexOf(style.display) > -1;\n\t}\n\t\n\tfunction matchAlias(format, node, delta) {\n\t  return delta.compose(new _quillDelta2.default().retain(delta.length(), _defineProperty({}, format, true)));\n\t}\n\t\n\tfunction matchAttributor(node, delta) {\n\t  var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n\t  var classes = _parchment2.default.Attributor.Class.keys(node);\n\t  var styles = _parchment2.default.Attributor.Style.keys(node);\n\t  var formats = {};\n\t  attributes.concat(classes).concat(styles).forEach(function (name) {\n\t    var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n\t    if (attr != null) {\n\t      formats[attr.attrName] = attr.value(node);\n\t      if (formats[attr.attrName]) return;\n\t    }\n\t    if (ATTRIBUTE_ATTRIBUTORS[name] != null) {\n\t      attr = ATTRIBUTE_ATTRIBUTORS[name];\n\t      formats[attr.attrName] = attr.value(node);\n\t    }\n\t    if (STYLE_ATTRIBUTORS[name] != null) {\n\t      attr = STYLE_ATTRIBUTORS[name];\n\t      formats[attr.attrName] = attr.value(node);\n\t    }\n\t  });\n\t  if (Object.keys(formats).length > 0) {\n\t    delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t  }\n\t  return delta;\n\t}\n\t\n\tfunction matchBlot(node, delta) {\n\t  var match = _parchment2.default.query(node);\n\t  if (match == null) return delta;\n\t  if (match.prototype instanceof _parchment2.default.Embed) {\n\t    var embed = {};\n\t    var value = match.value(node);\n\t    if (value != null) {\n\t      embed[match.blotName] = value;\n\t      delta = new _quillDelta2.default().insert(embed, match.formats(node));\n\t    }\n\t  } else if (typeof match.formats === 'function') {\n\t    var formats = _defineProperty({}, match.blotName, match.formats(node));\n\t    delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t  }\n\t  return delta;\n\t}\n\t\n\tfunction matchBreak(node, delta) {\n\t  if (!deltaEndsWith(delta, '\\n')) {\n\t    delta.insert('\\n');\n\t  }\n\t  return delta;\n\t}\n\t\n\tfunction matchIgnore() {\n\t  return new _quillDelta2.default();\n\t}\n\t\n\tfunction matchNewline(node, delta) {\n\t  if (isLine(node) && !deltaEndsWith(delta, '\\n')) {\n\t    delta.insert('\\n');\n\t  }\n\t  return delta;\n\t}\n\t\n\tfunction matchSpacing(node, delta) {\n\t  if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n\t    var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n\t    if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n\t      delta.insert('\\n');\n\t    }\n\t  }\n\t  return delta;\n\t}\n\t\n\tfunction matchStyles(node, delta) {\n\t  var formats = {};\n\t  var style = node.style || {};\n\t  if (style.fontWeight && computeStyle(node).fontWeight === 'bold') {\n\t    formats.bold = true;\n\t  }\n\t  if (Object.keys(formats).length > 0) {\n\t    delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t  }\n\t  if (parseFloat(style.textIndent || 0) > 0) {\n\t    // Could be 0.5in\n\t    delta = new _quillDelta2.default().insert('\\t').concat(delta);\n\t  }\n\t  return delta;\n\t}\n\t\n\tfunction matchText(node, delta) {\n\t  var text = node.data;\n\t  // Word represents empty line with <o:p>&nbsp;</o:p>\n\t  if (node.parentNode.tagName === 'O:P') {\n\t    return delta.insert(text.trim());\n\t  }\n\t  if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n\t    // eslint-disable-next-line func-style\n\t    var replacer = function replacer(collapse, match) {\n\t      match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n\t      return match.length < 1 && collapse ? ' ' : match;\n\t    };\n\t    text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n\t    text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n\t    if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n\t      text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n\t    }\n\t    if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n\t      text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n\t    }\n\t  }\n\t  return delta.insert(text);\n\t}\n\t\n\texports.default = Clipboard;\n\texports.matchAttributor = matchAttributor;\n\texports.matchBlot = matchBlot;\n\texports.matchNewline = matchNewline;\n\texports.matchSpacing = matchSpacing;\n\texports.matchText = matchText;\n\n/***/ },\n/* 49 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar config = {\n\t  scope: _parchment2.default.Scope.BLOCK,\n\t  whitelist: ['right', 'center', 'justify']\n\t};\n\t\n\tvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\n\tvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\n\tvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\t\n\texports.AlignAttribute = AlignAttribute;\n\texports.AlignClass = AlignClass;\n\texports.AlignStyle = AlignStyle;\n\n/***/ },\n/* 50 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.BackgroundStyle = exports.BackgroundClass = undefined;\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _color = __webpack_require__(51);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n\t  scope: _parchment2.default.Scope.INLINE\n\t});\n\tvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n\t  scope: _parchment2.default.Scope.INLINE\n\t});\n\t\n\texports.BackgroundClass = BackgroundClass;\n\texports.BackgroundStyle = BackgroundStyle;\n\n/***/ },\n/* 51 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar ColorAttributor = function (_Parchment$Attributor) {\n\t  _inherits(ColorAttributor, _Parchment$Attributor);\n\t\n\t  function ColorAttributor() {\n\t    _classCallCheck(this, ColorAttributor);\n\t\n\t    return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(ColorAttributor, [{\n\t    key: 'value',\n\t    value: function value(domNode) {\n\t      var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n\t      if (!value.startsWith('rgb(')) return value;\n\t      value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n\t      return '#' + value.split(',').map(function (component) {\n\t        return ('00' + parseInt(component).toString(16)).slice(-2);\n\t      }).join('');\n\t    }\n\t  }]);\n\t\n\t  return ColorAttributor;\n\t}(_parchment2.default.Attributor.Style);\n\t\n\tvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n\t  scope: _parchment2.default.Scope.INLINE\n\t});\n\tvar ColorStyle = new ColorAttributor('color', 'color', {\n\t  scope: _parchment2.default.Scope.INLINE\n\t});\n\t\n\texports.ColorAttributor = ColorAttributor;\n\texports.ColorClass = ColorClass;\n\texports.ColorStyle = ColorStyle;\n\n/***/ },\n/* 52 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar config = {\n\t  scope: _parchment2.default.Scope.BLOCK,\n\t  whitelist: ['rtl']\n\t};\n\t\n\tvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\n\tvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\n\tvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\t\n\texports.DirectionAttribute = DirectionAttribute;\n\texports.DirectionClass = DirectionClass;\n\texports.DirectionStyle = DirectionStyle;\n\n/***/ },\n/* 53 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.FontClass = exports.FontStyle = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar config = {\n\t  scope: _parchment2.default.Scope.INLINE,\n\t  whitelist: ['serif', 'monospace']\n\t};\n\t\n\tvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\t\n\tvar FontStyleAttributor = function (_Parchment$Attributor) {\n\t  _inherits(FontStyleAttributor, _Parchment$Attributor);\n\t\n\t  function FontStyleAttributor() {\n\t    _classCallCheck(this, FontStyleAttributor);\n\t\n\t    return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(FontStyleAttributor, [{\n\t    key: 'value',\n\t    value: function value(node) {\n\t      return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n\t    }\n\t  }]);\n\t\n\t  return FontStyleAttributor;\n\t}(_parchment2.default.Attributor.Style);\n\t\n\tvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\t\n\texports.FontStyle = FontStyle;\n\texports.FontClass = FontClass;\n\n/***/ },\n/* 54 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.SizeStyle = exports.SizeClass = undefined;\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n\t  scope: _parchment2.default.Scope.INLINE,\n\t  whitelist: ['small', 'large', 'huge']\n\t});\n\tvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n\t  scope: _parchment2.default.Scope.INLINE,\n\t  whitelist: ['10px', '18px', '32px']\n\t});\n\t\n\texports.SizeClass = SizeClass;\n\texports.SizeStyle = SizeStyle;\n\n/***/ },\n/* 55 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.getLastChangeIndex = exports.default = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tvar _module = __webpack_require__(43);\n\t\n\tvar _module2 = _interopRequireDefault(_module);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar History = function (_Module) {\n\t  _inherits(History, _Module);\n\t\n\t  function History(quill, options) {\n\t    _classCallCheck(this, History);\n\t\n\t    var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\t\n\t    _this.lastRecorded = 0;\n\t    _this.ignoreChange = false;\n\t    _this.clear();\n\t    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n\t      if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n\t      if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n\t        _this.record(delta, oldDelta);\n\t      } else {\n\t        _this.transform(delta);\n\t      }\n\t    });\n\t    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n\t    _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n\t    if (/Win/i.test(navigator.platform)) {\n\t      _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n\t    }\n\t    return _this;\n\t  }\n\t\n\t  _createClass(History, [{\n\t    key: 'change',\n\t    value: function change(source, dest) {\n\t      if (this.stack[source].length === 0) return;\n\t      var delta = this.stack[source].pop();\n\t      this.lastRecorded = 0;\n\t      this.ignoreChange = true;\n\t      this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n\t      this.ignoreChange = false;\n\t      var index = getLastChangeIndex(delta[source]);\n\t      this.quill.setSelection(index);\n\t      this.quill.selection.scrollIntoView();\n\t      this.stack[dest].push(delta);\n\t    }\n\t  }, {\n\t    key: 'clear',\n\t    value: function clear() {\n\t      this.stack = { undo: [], redo: [] };\n\t    }\n\t  }, {\n\t    key: 'record',\n\t    value: function record(changeDelta, oldDelta) {\n\t      if (changeDelta.ops.length === 0) return;\n\t      this.stack.redo = [];\n\t      var undoDelta = this.quill.getContents().diff(oldDelta);\n\t      var timestamp = Date.now();\n\t      if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n\t        var delta = this.stack.undo.pop();\n\t        undoDelta = undoDelta.compose(delta.undo);\n\t        changeDelta = delta.redo.compose(changeDelta);\n\t      } else {\n\t        this.lastRecorded = timestamp;\n\t      }\n\t      this.stack.undo.push({\n\t        redo: changeDelta,\n\t        undo: undoDelta\n\t      });\n\t      if (this.stack.undo.length > this.options.maxStack) {\n\t        this.stack.undo.shift();\n\t      }\n\t    }\n\t  }, {\n\t    key: 'redo',\n\t    value: function redo() {\n\t      this.change('redo', 'undo');\n\t    }\n\t  }, {\n\t    key: 'transform',\n\t    value: function transform(delta) {\n\t      this.stack.undo.forEach(function (change) {\n\t        change.undo = delta.transform(change.undo, true);\n\t        change.redo = delta.transform(change.redo, true);\n\t      });\n\t      this.stack.redo.forEach(function (change) {\n\t        change.undo = delta.transform(change.undo, true);\n\t        change.redo = delta.transform(change.redo, true);\n\t      });\n\t    }\n\t  }, {\n\t    key: 'undo',\n\t    value: function undo() {\n\t      this.change('undo', 'redo');\n\t    }\n\t  }]);\n\t\n\t  return History;\n\t}(_module2.default);\n\t\n\tHistory.DEFAULTS = {\n\t  delay: 1000,\n\t  maxStack: 100,\n\t  userOnly: false\n\t};\n\t\n\tfunction endsWithNewlineChange(delta) {\n\t  var lastOp = delta.ops[delta.ops.length - 1];\n\t  if (lastOp == null) return false;\n\t  if (lastOp.insert != null) {\n\t    return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n\t  }\n\t  if (lastOp.attributes != null) {\n\t    return Object.keys(lastOp.attributes).some(function (attr) {\n\t      return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n\t    });\n\t  }\n\t  return false;\n\t}\n\t\n\tfunction getLastChangeIndex(delta) {\n\t  var deleteLength = delta.reduce(function (length, op) {\n\t    length += op.delete || 0;\n\t    return length;\n\t  }, 0);\n\t  var changeIndex = delta.length() - deleteLength;\n\t  if (endsWithNewlineChange(delta)) {\n\t    changeIndex -= 1;\n\t  }\n\t  return changeIndex;\n\t}\n\t\n\texports.default = History;\n\texports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ },\n/* 56 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _clone = __webpack_require__(39);\n\t\n\tvar _clone2 = _interopRequireDefault(_clone);\n\t\n\tvar _deepEqual = __webpack_require__(40);\n\t\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\t\n\tvar _extend = __webpack_require__(30);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _op = __webpack_require__(26);\n\t\n\tvar _op2 = _interopRequireDefault(_op);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tvar _logger = __webpack_require__(38);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _module = __webpack_require__(43);\n\t\n\tvar _module2 = _interopRequireDefault(_module);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar debug = (0, _logger2.default)('quill:keyboard');\n\t\n\tvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\t\n\tvar Keyboard = function (_Module) {\n\t  _inherits(Keyboard, _Module);\n\t\n\t  _createClass(Keyboard, null, [{\n\t    key: 'match',\n\t    value: function match(evt, binding) {\n\t      binding = normalize(binding);\n\t      if (!!binding.shortKey !== evt[SHORTKEY] && binding.shortKey !== null) return false;\n\t      if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n\t        return key != SHORTKEY && !!binding[key] !== evt[key] && binding[key] !== null;\n\t      })) {\n\t        return false;\n\t      }\n\t      return binding.key === (evt.which || evt.keyCode);\n\t    }\n\t  }]);\n\t\n\t  function Keyboard(quill, options) {\n\t    _classCallCheck(this, Keyboard);\n\t\n\t    var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\t\n\t    _this.bindings = {};\n\t    Object.keys(_this.options.bindings).forEach(function (name) {\n\t      if (_this.options.bindings[name]) {\n\t        _this.addBinding(_this.options.bindings[name]);\n\t      }\n\t    });\n\t    _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n\t    _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n\t    _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n\t    _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^$/ }, handleDelete);\n\t    _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n\t    _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n\t    if (/Trident/i.test(navigator.userAgent)) {\n\t      _this.addBinding({ key: Keyboard.keys.BACKSPACE, shortKey: true }, handleBackspace);\n\t      _this.addBinding({ key: Keyboard.keys.DELETE, shortKey: true }, handleDelete);\n\t    }\n\t    _this.listen();\n\t    return _this;\n\t  }\n\t\n\t  _createClass(Keyboard, [{\n\t    key: 'addBinding',\n\t    value: function addBinding(key) {\n\t      var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t      var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\n\t      var binding = normalize(key);\n\t      if (binding == null || binding.key == null) {\n\t        return debug.warn('Attempted to add invalid keyboard binding', binding);\n\t      }\n\t      if (typeof context === 'function') {\n\t        context = { handler: context };\n\t      }\n\t      if (typeof handler === 'function') {\n\t        handler = { handler: handler };\n\t      }\n\t      binding = (0, _extend2.default)(binding, context, handler);\n\t      this.bindings[binding.key] = this.bindings[binding.key] || [];\n\t      this.bindings[binding.key].push(binding);\n\t    }\n\t  }, {\n\t    key: 'listen',\n\t    value: function listen() {\n\t      var _this2 = this;\n\t\n\t      this.quill.root.addEventListener('keydown', function (evt) {\n\t        if (evt.defaultPrevented) return;\n\t        var which = evt.which || evt.keyCode;\n\t        var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n\t          return Keyboard.match(evt, binding);\n\t        });\n\t        if (bindings.length === 0) return;\n\t        var range = _this2.quill.getSelection();\n\t        if (range == null || !_this2.quill.hasFocus()) return;\n\t\n\t        var _quill$scroll$line = _this2.quill.scroll.line(range.index),\n\t            _quill$scroll$line2 = _slicedToArray(_quill$scroll$line, 2),\n\t            line = _quill$scroll$line2[0],\n\t            offset = _quill$scroll$line2[1];\n\t\n\t        var _quill$scroll$leaf = _this2.quill.scroll.leaf(range.index),\n\t            _quill$scroll$leaf2 = _slicedToArray(_quill$scroll$leaf, 2),\n\t            leafStart = _quill$scroll$leaf2[0],\n\t            offsetStart = _quill$scroll$leaf2[1];\n\t\n\t        var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.scroll.leaf(range.index + range.length),\n\t            _ref2 = _slicedToArray(_ref, 2),\n\t            leafEnd = _ref2[0],\n\t            offsetEnd = _ref2[1];\n\t\n\t        var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n\t        var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n\t        var curContext = {\n\t          collapsed: range.length === 0,\n\t          empty: range.length === 0 && line.length() <= 1,\n\t          format: _this2.quill.getFormat(range),\n\t          offset: offset,\n\t          prefix: prefixText,\n\t          suffix: suffixText\n\t        };\n\t        var prevented = bindings.some(function (binding) {\n\t          if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n\t          if (binding.empty != null && binding.empty !== curContext.empty) return false;\n\t          if (binding.offset != null && binding.offset !== curContext.offset) return false;\n\t          if (Array.isArray(binding.format)) {\n\t            // any format is present\n\t            if (binding.format.every(function (name) {\n\t              return curContext.format[name] == null;\n\t            })) {\n\t              return false;\n\t            }\n\t          } else if (_typeof(binding.format) === 'object') {\n\t            // all formats must match\n\t            if (!Object.keys(binding.format).every(function (name) {\n\t              if (binding.format[name] === true) return curContext.format[name] != null;\n\t              if (binding.format[name] === false) return curContext.format[name] == null;\n\t              return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n\t            })) {\n\t              return false;\n\t            }\n\t          }\n\t          if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n\t          if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n\t          return binding.handler.call(_this2, range, curContext) !== true;\n\t        });\n\t        if (prevented) {\n\t          evt.preventDefault();\n\t        }\n\t      });\n\t    }\n\t  }]);\n\t\n\t  return Keyboard;\n\t}(_module2.default);\n\t\n\tKeyboard.keys = {\n\t  BACKSPACE: 8,\n\t  TAB: 9,\n\t  ENTER: 13,\n\t  ESCAPE: 27,\n\t  LEFT: 37,\n\t  UP: 38,\n\t  RIGHT: 39,\n\t  DOWN: 40,\n\t  DELETE: 46\n\t};\n\t\n\tKeyboard.DEFAULTS = {\n\t  bindings: {\n\t    'bold': makeFormatHandler('bold'),\n\t    'italic': makeFormatHandler('italic'),\n\t    'underline': makeFormatHandler('underline'),\n\t    'indent': {\n\t      // highlight tab or tab at beginning of list, indent or blockquote\n\t      key: Keyboard.keys.TAB,\n\t      format: ['blockquote', 'indent', 'list'],\n\t      handler: function handler(range, context) {\n\t        if (context.collapsed && context.offset !== 0) return true;\n\t        this.quill.format('indent', '+1', _quill2.default.sources.USER);\n\t      }\n\t    },\n\t    'outdent': {\n\t      key: Keyboard.keys.TAB,\n\t      shiftKey: true,\n\t      format: ['blockquote', 'indent', 'list'],\n\t      // highlight tab or tab at beginning of list, indent or blockquote\n\t      handler: function handler(range, context) {\n\t        if (context.collapsed && context.offset !== 0) return true;\n\t        this.quill.format('indent', '-1', _quill2.default.sources.USER);\n\t      }\n\t    },\n\t    'outdent backspace': {\n\t      key: Keyboard.keys.BACKSPACE,\n\t      collapsed: true,\n\t      format: ['blockquote', 'indent', 'list'],\n\t      offset: 0,\n\t      handler: function handler(range, context) {\n\t        if (context.format.indent != null) {\n\t          this.quill.format('indent', '-1', _quill2.default.sources.USER);\n\t        } else if (context.format.blockquote != null) {\n\t          this.quill.format('blockquote', false, _quill2.default.sources.USER);\n\t        } else if (context.format.list != null) {\n\t          this.quill.format('list', false, _quill2.default.sources.USER);\n\t        }\n\t      }\n\t    },\n\t    'indent code-block': makeCodeBlockHandler(true),\n\t    'outdent code-block': makeCodeBlockHandler(false),\n\t    'remove tab': {\n\t      key: Keyboard.keys.TAB,\n\t      shiftKey: true,\n\t      collapsed: true,\n\t      prefix: /\\t$/,\n\t      handler: function handler(range) {\n\t        this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n\t      }\n\t    },\n\t    'tab': {\n\t      key: Keyboard.keys.TAB,\n\t      handler: function handler(range, context) {\n\t        if (!context.collapsed) {\n\t          this.quill.scroll.deleteAt(range.index, range.length);\n\t        }\n\t        this.quill.insertText(range.index, '\\t', _quill2.default.sources.USER);\n\t        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t      }\n\t    },\n\t    'list empty enter': {\n\t      key: Keyboard.keys.ENTER,\n\t      collapsed: true,\n\t      format: ['list'],\n\t      empty: true,\n\t      handler: function handler(range, context) {\n\t        this.quill.format('list', false, _quill2.default.sources.USER);\n\t        if (context.format.indent) {\n\t          this.quill.format('indent', false, _quill2.default.sources.USER);\n\t        }\n\t      }\n\t    },\n\t    'header enter': {\n\t      key: Keyboard.keys.ENTER,\n\t      collapsed: true,\n\t      format: ['header'],\n\t      suffix: /^$/,\n\t      handler: function handler(range) {\n\t        this.quill.scroll.insertAt(range.index, '\\n');\n\t        this.quill.formatText(range.index + 1, 1, 'header', false, _quill2.default.sources.USER);\n\t        this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t        this.quill.selection.scrollIntoView();\n\t      }\n\t    },\n\t    'list autofill': {\n\t      key: ' ',\n\t      collapsed: true,\n\t      format: { list: false },\n\t      prefix: /^(1\\.|-)$/,\n\t      handler: function handler(range, context) {\n\t        var length = context.prefix.length;\n\t        this.quill.scroll.deleteAt(range.index - length, length);\n\t        this.quill.formatLine(range.index - length, 1, 'list', length === 1 ? 'bullet' : 'ordered', _quill2.default.sources.USER);\n\t        this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n\t      }\n\t    }\n\t  }\n\t};\n\t\n\tfunction handleBackspace(range, context) {\n\t  if (range.index === 0) return;\n\t\n\t  var _quill$scroll$line3 = this.quill.scroll.line(range.index),\n\t      _quill$scroll$line4 = _slicedToArray(_quill$scroll$line3, 1),\n\t      line = _quill$scroll$line4[0];\n\t\n\t  var formats = {};\n\t  if (context.offset === 0) {\n\t    var curFormats = line.formats();\n\t    var prevFormats = this.quill.getFormat(range.index - 1, 1);\n\t    formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n\t  }\n\t  this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n\t  if (Object.keys(formats).length > 0) {\n\t    this.quill.formatLine(range.index - 1, 1, formats, _quill2.default.sources.USER);\n\t  }\n\t  this.quill.selection.scrollIntoView();\n\t}\n\t\n\tfunction handleDelete(range) {\n\t  if (range.index >= this.quill.getLength() - 1) return;\n\t  this.quill.deleteText(range.index, 1, _quill2.default.sources.USER);\n\t}\n\t\n\tfunction handleDeleteRange(range) {\n\t  this.quill.deleteText(range, _quill2.default.sources.USER);\n\t  this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n\t  this.quill.selection.scrollIntoView();\n\t}\n\t\n\tfunction handleEnter(range, context) {\n\t  var _this3 = this;\n\t\n\t  if (range.length > 0) {\n\t    this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n\t  }\n\t  var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n\t    if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n\t      lineFormats[format] = context.format[format];\n\t    }\n\t    return lineFormats;\n\t  }, {});\n\t  this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n\t  this.quill.selection.scrollIntoView();\n\t  Object.keys(context.format).forEach(function (name) {\n\t    if (lineFormats[name] != null) return;\n\t    if (Array.isArray(context.format[name])) return;\n\t    if (name === 'link') return;\n\t    _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n\t  });\n\t}\n\t\n\tfunction makeCodeBlockHandler(indent) {\n\t  return {\n\t    key: Keyboard.keys.TAB,\n\t    shiftKey: !indent,\n\t    format: { 'code-block': true },\n\t    handler: function handler(range) {\n\t      var CodeBlock = _parchment2.default.query('code-block');\n\t      var index = range.index,\n\t          length = range.length;\n\t\n\t      var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n\t          _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n\t          block = _quill$scroll$descend2[0],\n\t          offset = _quill$scroll$descend2[1];\n\t\n\t      if (block == null) return;\n\t      var scrollOffset = this.quill.scroll.offset(block);\n\t      var start = block.newlineIndex(offset, true) + 1;\n\t      var end = block.newlineIndex(scrollOffset + offset + length);\n\t      var lines = block.domNode.textContent.slice(start, end).split('\\n');\n\t      offset = 0;\n\t      lines.forEach(function (line, i) {\n\t        if (indent) {\n\t          block.insertAt(start + offset, CodeBlock.TAB);\n\t          offset += CodeBlock.TAB.length;\n\t          if (i === 0) {\n\t            index += CodeBlock.TAB.length;\n\t          } else {\n\t            length += CodeBlock.TAB.length;\n\t          }\n\t        } else if (line.startsWith(CodeBlock.TAB)) {\n\t          block.deleteAt(start + offset, CodeBlock.TAB.length);\n\t          offset -= CodeBlock.TAB.length;\n\t          if (i === 0) {\n\t            index -= CodeBlock.TAB.length;\n\t          } else {\n\t            length -= CodeBlock.TAB.length;\n\t          }\n\t        }\n\t        offset += line.length + 1;\n\t      });\n\t      this.quill.update(_quill2.default.sources.USER);\n\t      this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n\t    }\n\t  };\n\t}\n\t\n\tfunction makeFormatHandler(format) {\n\t  return {\n\t    key: format[0].toUpperCase(),\n\t    shortKey: true,\n\t    handler: function handler(range, context) {\n\t      this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n\t    }\n\t  };\n\t}\n\t\n\tfunction normalize(binding) {\n\t  if (typeof binding === 'string' || typeof binding === 'number') {\n\t    return normalize({ key: binding });\n\t  }\n\t  if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n\t    binding = (0, _clone2.default)(binding, false);\n\t  }\n\t  if (typeof binding.key === 'string') {\n\t    if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n\t      binding.key = Keyboard.keys[binding.key.toUpperCase()];\n\t    } else if (binding.key.length === 1) {\n\t      binding.key = binding.key.toUpperCase().charCodeAt(0);\n\t    } else {\n\t      return null;\n\t    }\n\t  }\n\t  return binding;\n\t}\n\t\n\texports.default = Keyboard;\n\n/***/ },\n/* 57 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.IndentClass = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar IdentAttributor = function (_Parchment$Attributor) {\n\t  _inherits(IdentAttributor, _Parchment$Attributor);\n\t\n\t  function IdentAttributor() {\n\t    _classCallCheck(this, IdentAttributor);\n\t\n\t    return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(IdentAttributor, [{\n\t    key: 'add',\n\t    value: function add(node, value) {\n\t      if (value === '+1' || value === '-1') {\n\t        var indent = this.value(node) || 0;\n\t        value = value === '+1' ? indent + 1 : indent - 1;\n\t      }\n\t      if (value === 0) {\n\t        this.remove(node);\n\t        return true;\n\t      } else {\n\t        return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'value',\n\t    value: function value(node) {\n\t      return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n\t    }\n\t  }]);\n\t\n\t  return IdentAttributor;\n\t}(_parchment2.default.Attributor.Class);\n\t\n\tvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n\t  scope: _parchment2.default.Scope.BLOCK,\n\t  whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n\t});\n\t\n\texports.IndentClass = IndentClass;\n\n/***/ },\n/* 58 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Blockquote = function (_Block) {\n\t  _inherits(Blockquote, _Block);\n\t\n\t  function Blockquote() {\n\t    _classCallCheck(this, Blockquote);\n\t\n\t    return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n\t  }\n\t\n\t  return Blockquote;\n\t}(_block2.default);\n\t\n\tBlockquote.blotName = 'blockquote';\n\tBlockquote.tagName = 'blockquote';\n\t\n\texports.default = Blockquote;\n\n/***/ },\n/* 59 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Header = function (_Block) {\n\t  _inherits(Header, _Block);\n\t\n\t  function Header() {\n\t    _classCallCheck(this, Header);\n\t\n\t    return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(Header, null, [{\n\t    key: 'formats',\n\t    value: function formats(domNode) {\n\t      return this.tagName.indexOf(domNode.tagName) + 1;\n\t    }\n\t  }]);\n\t\n\t  return Header;\n\t}(_block2.default);\n\t\n\tHeader.blotName = 'header';\n\tHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\t\n\texports.default = Header;\n\n/***/ },\n/* 60 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.default = exports.ListItem = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _container = __webpack_require__(46);\n\t\n\tvar _container2 = _interopRequireDefault(_container);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar ListItem = function (_Block) {\n\t  _inherits(ListItem, _Block);\n\t\n\t  function ListItem() {\n\t    _classCallCheck(this, ListItem);\n\t\n\t    return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(ListItem, [{\n\t    key: 'format',\n\t    value: function format(name, value) {\n\t      if (name === List.blotName && !value) {\n\t        this.replaceWith(_parchment2.default.create(this.statics.scope));\n\t      } else {\n\t        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'remove',\n\t    value: function remove() {\n\t      if (this.prev == null && this.next == null) {\n\t        this.parent.remove();\n\t      } else {\n\t        _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'replaceWith',\n\t    value: function replaceWith(name, value) {\n\t      this.parent.isolate(this.offset(this.parent), this.length());\n\t      if (name === this.parent.statics.blotName) {\n\t        this.parent.replaceWith(name, value);\n\t        return this;\n\t      } else {\n\t        this.parent.unwrap();\n\t        return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n\t      }\n\t    }\n\t  }], [{\n\t    key: 'formats',\n\t    value: function formats(domNode) {\n\t      return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n\t    }\n\t  }]);\n\t\n\t  return ListItem;\n\t}(_block2.default);\n\t\n\tListItem.blotName = 'list-item';\n\tListItem.tagName = 'LI';\n\t\n\tvar List = function (_Container) {\n\t  _inherits(List, _Container);\n\t\n\t  function List() {\n\t    _classCallCheck(this, List);\n\t\n\t    return _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(List, [{\n\t    key: 'format',\n\t    value: function format(name, value) {\n\t      if (this.children.length > 0) {\n\t        this.children.tail.format(name, value);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'formats',\n\t    value: function formats() {\n\t      // We don't inherit from FormatBlot\n\t      return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n\t    }\n\t  }, {\n\t    key: 'insertBefore',\n\t    value: function insertBefore(blot, ref) {\n\t      if (blot instanceof ListItem) {\n\t        _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n\t      } else {\n\t        var index = ref == null ? this.length() : ref.offset(this);\n\t        var after = this.split(index);\n\t        after.parent.insertBefore(blot, after);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'optimize',\n\t    value: function optimize() {\n\t      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this);\n\t      var next = this.next;\n\t      if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName) {\n\t        next.moveChildren(this);\n\t        next.remove();\n\t      }\n\t    }\n\t  }, {\n\t    key: 'replace',\n\t    value: function replace(target) {\n\t      if (target.statics.blotName !== this.statics.blotName) {\n\t        var item = _parchment2.default.create(this.statics.defaultChild);\n\t        target.moveChildren(item);\n\t        this.appendChild(item);\n\t      }\n\t      _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n\t    }\n\t  }], [{\n\t    key: 'create',\n\t    value: function create(value) {\n\t      if (value === 'ordered') {\n\t        value = 'OL';\n\t      } else if (value === 'bullet') {\n\t        value = 'UL';\n\t      }\n\t      return _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, value);\n\t    }\n\t  }, {\n\t    key: 'formats',\n\t    value: function formats(domNode) {\n\t      if (domNode.tagName === 'OL') return 'ordered';\n\t      if (domNode.tagName === 'UL') return 'bullet';\n\t      return undefined;\n\t    }\n\t  }]);\n\t\n\t  return List;\n\t}(_container2.default);\n\t\n\tList.blotName = 'list';\n\tList.scope = _parchment2.default.Scope.BLOCK_BLOT;\n\tList.tagName = ['OL', 'UL'];\n\tList.defaultChild = 'list-item';\n\tList.allowedChildren = [ListItem];\n\t\n\texports.ListItem = ListItem;\n\texports.default = List;\n\n/***/ },\n/* 61 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _inline = __webpack_require__(33);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Bold = function (_Inline) {\n\t  _inherits(Bold, _Inline);\n\t\n\t  function Bold() {\n\t    _classCallCheck(this, Bold);\n\t\n\t    return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(Bold, [{\n\t    key: 'optimize',\n\t    value: function optimize() {\n\t      _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this);\n\t      if (this.domNode.tagName !== this.statics.tagName[0]) {\n\t        this.replaceWith(this.statics.blotName);\n\t      }\n\t    }\n\t  }], [{\n\t    key: 'create',\n\t    value: function create() {\n\t      return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n\t    }\n\t  }, {\n\t    key: 'formats',\n\t    value: function formats() {\n\t      return true;\n\t    }\n\t  }]);\n\t\n\t  return Bold;\n\t}(_inline2.default);\n\t\n\tBold.blotName = 'bold';\n\tBold.tagName = ['STRONG', 'B'];\n\t\n\texports.default = Bold;\n\n/***/ },\n/* 62 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _bold = __webpack_require__(61);\n\t\n\tvar _bold2 = _interopRequireDefault(_bold);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Italic = function (_Bold) {\n\t  _inherits(Italic, _Bold);\n\t\n\t  function Italic() {\n\t    _classCallCheck(this, Italic);\n\t\n\t    return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n\t  }\n\t\n\t  return Italic;\n\t}(_bold2.default);\n\t\n\tItalic.blotName = 'italic';\n\tItalic.tagName = ['EM', 'I'];\n\t\n\texports.default = Italic;\n\n/***/ },\n/* 63 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.sanitize = exports.default = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _inline = __webpack_require__(33);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Link = function (_Inline) {\n\t  _inherits(Link, _Inline);\n\t\n\t  function Link() {\n\t    _classCallCheck(this, Link);\n\t\n\t    return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(Link, [{\n\t    key: 'format',\n\t    value: function format(name, value) {\n\t      if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n\t      value = this.constructor.sanitize(value);\n\t      this.domNode.setAttribute('href', value);\n\t    }\n\t  }], [{\n\t    key: 'create',\n\t    value: function create(value) {\n\t      var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n\t      value = this.sanitize(value);\n\t      node.setAttribute('href', value);\n\t      node.setAttribute('target', '_blank');\n\t      return node;\n\t    }\n\t  }, {\n\t    key: 'formats',\n\t    value: function formats(domNode) {\n\t      return domNode.getAttribute('href');\n\t    }\n\t  }, {\n\t    key: 'sanitize',\n\t    value: function sanitize(url) {\n\t      return _sanitize(url, ['http', 'https', 'mailto']) ? url : this.SANITIZED_URL;\n\t    }\n\t  }]);\n\t\n\t  return Link;\n\t}(_inline2.default);\n\t\n\tLink.blotName = 'link';\n\tLink.tagName = 'A';\n\tLink.SANITIZED_URL = 'about:blank';\n\t\n\tfunction _sanitize(url, protocols) {\n\t  var anchor = document.createElement('a');\n\t  anchor.href = url;\n\t  var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n\t  return protocols.indexOf(protocol) > -1;\n\t}\n\t\n\texports.default = Link;\n\texports.sanitize = _sanitize;\n\n/***/ },\n/* 64 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _inline = __webpack_require__(33);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Script = function (_Inline) {\n\t  _inherits(Script, _Inline);\n\t\n\t  function Script() {\n\t    _classCallCheck(this, Script);\n\t\n\t    return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(Script, null, [{\n\t    key: 'create',\n\t    value: function create(value) {\n\t      if (value === 'super') {\n\t        return document.createElement('sup');\n\t      } else if (value === 'sub') {\n\t        return document.createElement('sub');\n\t      } else {\n\t        return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n\t      }\n\t    }\n\t  }, {\n\t    key: 'formats',\n\t    value: function formats(domNode) {\n\t      if (domNode.tagName === 'SUB') return 'sub';\n\t      if (domNode.tagName === 'SUP') return 'super';\n\t      return undefined;\n\t    }\n\t  }]);\n\t\n\t  return Script;\n\t}(_inline2.default);\n\t\n\tScript.blotName = 'script';\n\tScript.tagName = ['SUB', 'SUP'];\n\t\n\texports.default = Script;\n\n/***/ },\n/* 65 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _inline = __webpack_require__(33);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Strike = function (_Inline) {\n\t  _inherits(Strike, _Inline);\n\t\n\t  function Strike() {\n\t    _classCallCheck(this, Strike);\n\t\n\t    return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n\t  }\n\t\n\t  return Strike;\n\t}(_inline2.default);\n\t\n\tStrike.blotName = 'strike';\n\tStrike.tagName = 'S';\n\t\n\texports.default = Strike;\n\n/***/ },\n/* 66 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _inline = __webpack_require__(33);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Underline = function (_Inline) {\n\t  _inherits(Underline, _Inline);\n\t\n\t  function Underline() {\n\t    _classCallCheck(this, Underline);\n\t\n\t    return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n\t  }\n\t\n\t  return Underline;\n\t}(_inline2.default);\n\t\n\tUnderline.blotName = 'underline';\n\tUnderline.tagName = 'U';\n\t\n\texports.default = Underline;\n\n/***/ },\n/* 67 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _embed = __webpack_require__(32);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _link = __webpack_require__(63);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar ATTRIBUTES = ['alt', 'height', 'width'];\n\t\n\tvar Image = function (_Embed) {\n\t  _inherits(Image, _Embed);\n\t\n\t  function Image() {\n\t    _classCallCheck(this, Image);\n\t\n\t    return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(Image, [{\n\t    key: 'format',\n\t    value: function format(name, value) {\n\t      if (ATTRIBUTES.indexOf(name) > -1) {\n\t        if (value) {\n\t          this.domNode.setAttribute(name, value);\n\t        } else {\n\t          this.domNode.removeAttribute(name);\n\t        }\n\t      } else {\n\t        _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n\t      }\n\t    }\n\t  }], [{\n\t    key: 'create',\n\t    value: function create(value) {\n\t      var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n\t      if (typeof value === 'string') {\n\t        node.setAttribute('src', this.sanitize(value));\n\t      }\n\t      return node;\n\t    }\n\t  }, {\n\t    key: 'formats',\n\t    value: function formats(domNode) {\n\t      return ATTRIBUTES.reduce(function (formats, attribute) {\n\t        if (domNode.hasAttribute(attribute)) {\n\t          formats[attribute] = domNode.getAttribute(attribute);\n\t        }\n\t        return formats;\n\t      }, {});\n\t    }\n\t  }, {\n\t    key: 'match',\n\t    value: function match(url) {\n\t      return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n\t      );\n\t    }\n\t  }, {\n\t    key: 'sanitize',\n\t    value: function sanitize(url) {\n\t      return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n\t    }\n\t  }, {\n\t    key: 'value',\n\t    value: function value(domNode) {\n\t      return domNode.getAttribute('src');\n\t    }\n\t  }]);\n\t\n\t  return Image;\n\t}(_embed2.default);\n\t\n\tImage.blotName = 'image';\n\tImage.tagName = 'IMG';\n\t\n\texports.default = Image;\n\n/***/ },\n/* 68 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _link = __webpack_require__(63);\n\t\n\tvar _link2 = _interopRequireDefault(_link);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar ATTRIBUTES = ['height', 'width'];\n\t\n\tvar Video = function (_BlockEmbed) {\n\t  _inherits(Video, _BlockEmbed);\n\t\n\t  function Video() {\n\t    _classCallCheck(this, Video);\n\t\n\t    return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(Video, [{\n\t    key: 'format',\n\t    value: function format(name, value) {\n\t      if (ATTRIBUTES.indexOf(name) > -1) {\n\t        if (value) {\n\t          this.domNode.setAttribute(name, value);\n\t        } else {\n\t          this.domNode.removeAttribute(name);\n\t        }\n\t      } else {\n\t        _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n\t      }\n\t    }\n\t  }], [{\n\t    key: 'create',\n\t    value: function create(value) {\n\t      var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n\t      node.setAttribute('frameborder', '0');\n\t      node.setAttribute('allowfullscreen', true);\n\t      node.setAttribute('src', this.sanitize(value));\n\t      return node;\n\t    }\n\t  }, {\n\t    key: 'formats',\n\t    value: function formats(domNode) {\n\t      return ATTRIBUTES.reduce(function (formats, attribute) {\n\t        if (domNode.hasAttribute(attribute)) {\n\t          formats[attribute] = domNode.getAttribute(attribute);\n\t        }\n\t        return formats;\n\t      }, {});\n\t    }\n\t  }, {\n\t    key: 'sanitize',\n\t    value: function sanitize(url) {\n\t      return _link2.default.sanitize(url);\n\t    }\n\t  }, {\n\t    key: 'value',\n\t    value: function value(domNode) {\n\t      return domNode.getAttribute('src');\n\t    }\n\t  }]);\n\t\n\t  return Video;\n\t}(_block.BlockEmbed);\n\t\n\tVideo.blotName = 'video';\n\tVideo.className = 'ql-video';\n\tVideo.tagName = 'IFRAME';\n\t\n\texports.default = Video;\n\n/***/ },\n/* 69 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.default = exports.FormulaBlot = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _embed = __webpack_require__(32);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar FormulaBlot = function (_Embed) {\n\t  _inherits(FormulaBlot, _Embed);\n\t\n\t  function FormulaBlot() {\n\t    _classCallCheck(this, FormulaBlot);\n\t\n\t    return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(FormulaBlot, [{\n\t    key: 'index',\n\t    value: function index() {\n\t      return 1;\n\t    }\n\t  }], [{\n\t    key: 'create',\n\t    value: function create(value) {\n\t      var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n\t      if (typeof value === 'string') {\n\t        window.katex.render(value, node);\n\t        node.setAttribute('data-value', value);\n\t      }\n\t      node.setAttribute('contenteditable', false);\n\t      return node;\n\t    }\n\t  }, {\n\t    key: 'value',\n\t    value: function value(domNode) {\n\t      return domNode.getAttribute('data-value');\n\t    }\n\t  }]);\n\t\n\t  return FormulaBlot;\n\t}(_embed2.default);\n\t\n\tFormulaBlot.blotName = 'formula';\n\tFormulaBlot.className = 'ql-formula';\n\tFormulaBlot.tagName = 'SPAN';\n\t\n\tfunction Formula() {\n\t  if (window.katex == null) {\n\t    throw new Error('Formula module requires KaTeX.');\n\t  }\n\t  _quill2.default.register(FormulaBlot, true);\n\t}\n\t\n\texports.FormulaBlot = FormulaBlot;\n\texports.default = Formula;\n\n/***/ },\n/* 70 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tvar _module = __webpack_require__(43);\n\t\n\tvar _module2 = _interopRequireDefault(_module);\n\t\n\tvar _code = __webpack_require__(28);\n\t\n\tvar _code2 = _interopRequireDefault(_code);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar SyntaxCodeBlock = function (_CodeBlock) {\n\t  _inherits(SyntaxCodeBlock, _CodeBlock);\n\t\n\t  function SyntaxCodeBlock() {\n\t    _classCallCheck(this, SyntaxCodeBlock);\n\t\n\t    return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n\t  }\n\t\n\t  _createClass(SyntaxCodeBlock, [{\n\t    key: 'replaceWith',\n\t    value: function replaceWith(block) {\n\t      this.domNode.textContent = this.domNode.textContent;\n\t      this.attach();\n\t      _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n\t    }\n\t  }, {\n\t    key: 'highlight',\n\t    value: function highlight(_highlight) {\n\t      if (this.cachedHTML !== this.domNode.innerHTML) {\n\t        var text = this.domNode.textContent;\n\t        if (text.trim().length > 0 || this.cachedHTML == null) {\n\t          this.domNode.innerHTML = _highlight(text);\n\t          this.attach();\n\t        }\n\t        this.cachedHTML = this.domNode.innerHTML;\n\t      }\n\t    }\n\t  }]);\n\t\n\t  return SyntaxCodeBlock;\n\t}(_code2.default);\n\t\n\tSyntaxCodeBlock.className = 'ql-syntax';\n\t\n\tvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n\t  scope: _parchment2.default.Scope.INLINE\n\t});\n\t\n\tvar Syntax = function (_Module) {\n\t  _inherits(Syntax, _Module);\n\t\n\t  function Syntax(quill, options) {\n\t    _classCallCheck(this, Syntax);\n\t\n\t    var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\t\n\t    if (typeof _this2.options.highlight !== 'function') {\n\t      throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n\t    }\n\t    _quill2.default.register(CodeToken, true);\n\t    _quill2.default.register(SyntaxCodeBlock, true);\n\t    var timer = null;\n\t    _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n\t      if (timer != null) return;\n\t      timer = setTimeout(function () {\n\t        _this2.highlight();\n\t        timer = null;\n\t      }, 100);\n\t    });\n\t    _this2.highlight();\n\t    return _this2;\n\t  }\n\t\n\t  _createClass(Syntax, [{\n\t    key: 'highlight',\n\t    value: function highlight() {\n\t      var _this3 = this;\n\t\n\t      if (this.quill.selection.composing) return;\n\t      var range = this.quill.getSelection();\n\t      this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n\t        code.highlight(_this3.options.highlight);\n\t      });\n\t      this.quill.update(_quill2.default.sources.SILENT);\n\t      if (range != null) {\n\t        this.quill.setSelection(range, _quill2.default.sources.SILENT);\n\t      }\n\t    }\n\t  }]);\n\t\n\t  return Syntax;\n\t}(_module2.default);\n\t\n\tSyntax.DEFAULTS = {\n\t  highlight: function () {\n\t    if (window.hljs == null) return null;\n\t    return function (text) {\n\t      var result = window.hljs.highlightAuto(text);\n\t      return result.value;\n\t    };\n\t  }()\n\t};\n\t\n\texports.CodeBlock = SyntaxCodeBlock;\n\texports.CodeToken = CodeToken;\n\texports.default = Syntax;\n\n/***/ },\n/* 71 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.addControls = exports.default = undefined;\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tvar _logger = __webpack_require__(38);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _module = __webpack_require__(43);\n\t\n\tvar _module2 = _interopRequireDefault(_module);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar debug = (0, _logger2.default)('quill:toolbar');\n\t\n\tvar Toolbar = function (_Module) {\n\t  _inherits(Toolbar, _Module);\n\t\n\t  function Toolbar(quill, options) {\n\t    _classCallCheck(this, Toolbar);\n\t\n\t    var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\t\n\t    if (Array.isArray(_this.options.container)) {\n\t      var container = document.createElement('div');\n\t      addControls(container, _this.options.container);\n\t      quill.container.parentNode.insertBefore(container, quill.container);\n\t      _this.container = container;\n\t    } else if (typeof _this.options.container === 'string') {\n\t      _this.container = document.querySelector(_this.options.container);\n\t    } else {\n\t      _this.container = _this.options.container;\n\t    }\n\t    if (!(_this.container instanceof HTMLElement)) {\n\t      var _ret;\n\t\n\t      return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n\t    }\n\t    _this.container.classList.add('ql-toolbar');\n\t    _this.controls = [];\n\t    _this.handlers = {};\n\t    Object.keys(_this.options.handlers).forEach(function (format) {\n\t      _this.addHandler(format, _this.options.handlers[format]);\n\t    });\n\t    [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n\t      _this.attach(input);\n\t    });\n\t    _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n\t      if (type === _quill2.default.events.SELECTION_CHANGE) {\n\t        _this.update(range);\n\t      }\n\t    });\n\t    _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n\t      var _this$quill$selection = _this.quill.selection.getRange(),\n\t          _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n\t          range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\t\n\t\n\t      _this.update(range);\n\t    });\n\t    return _this;\n\t  }\n\t\n\t  _createClass(Toolbar, [{\n\t    key: 'addHandler',\n\t    value: function addHandler(format, handler) {\n\t      this.handlers[format] = handler;\n\t    }\n\t  }, {\n\t    key: 'attach',\n\t    value: function attach(input) {\n\t      var _this2 = this;\n\t\n\t      var format = [].find.call(input.classList, function (className) {\n\t        return className.indexOf('ql-') === 0;\n\t      });\n\t      if (!format) return;\n\t      format = format.slice('ql-'.length);\n\t      if (input.tagName === 'BUTTON') {\n\t        input.setAttribute('type', 'button');\n\t      }\n\t      if (this.handlers[format] == null) {\n\t        if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n\t          debug.warn('ignoring attaching to disabled format', format, input);\n\t          return;\n\t        }\n\t        if (_parchment2.default.query(format) == null) {\n\t          debug.warn('ignoring attaching to nonexistent format', format, input);\n\t          return;\n\t        }\n\t      }\n\t      var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n\t      input.addEventListener(eventName, function (e) {\n\t        var value = void 0;\n\t        if (input.tagName === 'SELECT') {\n\t          if (input.selectedIndex < 0) return;\n\t          var selected = input.options[input.selectedIndex];\n\t          if (selected.hasAttribute('selected')) {\n\t            value = false;\n\t          } else {\n\t            value = selected.value || false;\n\t          }\n\t        } else {\n\t          if (input.classList.contains('ql-active')) {\n\t            value = false;\n\t          } else {\n\t            value = input.value || !input.hasAttribute('value');\n\t          }\n\t          e.preventDefault();\n\t        }\n\t        _this2.quill.focus();\n\t\n\t        var _quill$selection$getR = _this2.quill.selection.getRange(),\n\t            _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n\t            range = _quill$selection$getR2[0];\n\t\n\t        if (_this2.handlers[format] != null) {\n\t          _this2.handlers[format].call(_this2, value);\n\t        } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n\t          value = prompt('Enter ' + format);\n\t          if (!value) return;\n\t          _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n\t        } else {\n\t          _this2.quill.format(format, value, _quill2.default.sources.USER);\n\t        }\n\t        _this2.update(range);\n\t      });\n\t      // TODO use weakmap\n\t      this.controls.push([format, input]);\n\t    }\n\t  }, {\n\t    key: 'update',\n\t    value: function update(range) {\n\t      var formats = range == null ? {} : this.quill.getFormat(range);\n\t      this.controls.forEach(function (pair) {\n\t        var _pair = _slicedToArray(pair, 2),\n\t            format = _pair[0],\n\t            input = _pair[1];\n\t\n\t        if (input.tagName === 'SELECT') {\n\t          var option = void 0;\n\t          if (range == null) {\n\t            option = null;\n\t          } else if (formats[format] == null) {\n\t            option = input.querySelector('option[selected]');\n\t          } else if (!Array.isArray(formats[format])) {\n\t            var value = formats[format];\n\t            if (typeof value === 'string') {\n\t              value = value.replace(/\\\"/g, '\\\\\"');\n\t            }\n\t            option = input.querySelector('option[value=\"' + value + '\"]');\n\t          }\n\t          if (option == null) {\n\t            input.value = ''; // TODO make configurable?\n\t            input.selectedIndex = -1;\n\t          } else {\n\t            option.selected = true;\n\t          }\n\t        } else {\n\t          if (range == null) {\n\t            input.classList.remove('ql-active');\n\t          } else if (input.hasAttribute('value')) {\n\t            // both being null should match (default values)\n\t            // '1' should match with 1 (headers)\n\t            var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n\t            input.classList.toggle('ql-active', isActive);\n\t          } else {\n\t            input.classList.toggle('ql-active', formats[format] != null);\n\t          }\n\t        }\n\t      });\n\t    }\n\t  }]);\n\t\n\t  return Toolbar;\n\t}(_module2.default);\n\t\n\tToolbar.DEFAULTS = {};\n\t\n\tfunction addButton(container, format, value) {\n\t  var input = document.createElement('button');\n\t  input.setAttribute('type', 'button');\n\t  input.classList.add('ql-' + format);\n\t  if (value != null) {\n\t    input.value = value;\n\t  }\n\t  container.appendChild(input);\n\t}\n\t\n\tfunction addControls(container, groups) {\n\t  if (!Array.isArray(groups[0])) {\n\t    groups = [groups];\n\t  }\n\t  groups.forEach(function (controls) {\n\t    var group = document.createElement('span');\n\t    group.classList.add('ql-formats');\n\t    controls.forEach(function (control) {\n\t      if (typeof control === 'string') {\n\t        addButton(group, control);\n\t      } else {\n\t        var format = Object.keys(control)[0];\n\t        var value = control[format];\n\t        if (Array.isArray(value)) {\n\t          addSelect(group, format, value);\n\t        } else {\n\t          addButton(group, format, value);\n\t        }\n\t      }\n\t    });\n\t    container.appendChild(group);\n\t  });\n\t}\n\t\n\tfunction addSelect(container, format, values) {\n\t  var input = document.createElement('select');\n\t  input.classList.add('ql-' + format);\n\t  values.forEach(function (value) {\n\t    var option = document.createElement('option');\n\t    if (value !== false) {\n\t      option.setAttribute('value', value);\n\t    } else {\n\t      option.setAttribute('selected', 'selected');\n\t    }\n\t    input.appendChild(option);\n\t  });\n\t  container.appendChild(input);\n\t}\n\t\n\tToolbar.DEFAULTS = {\n\t  container: null,\n\t  handlers: {\n\t    clean: function clean() {\n\t      var _this3 = this;\n\t\n\t      var range = this.quill.getSelection();\n\t      if (range == null) return;\n\t      if (range.length == 0) {\n\t        var formats = this.quill.getFormat();\n\t        Object.keys(formats).forEach(function (name) {\n\t          // Clean functionality in existing apps only clean inline formats\n\t          if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n\t            _this3.quill.format(name, false);\n\t          }\n\t        });\n\t      } else {\n\t        this.quill.removeFormat(range, _quill2.default.sources.USER);\n\t      }\n\t    },\n\t    direction: function direction(value) {\n\t      var align = this.quill.getFormat()['align'];\n\t      if (value === 'rtl' && align == null) {\n\t        this.quill.format('align', 'right', _quill2.default.sources.USER);\n\t      } else if (!value && align === 'right') {\n\t        this.quill.format('align', false, _quill2.default.sources.USER);\n\t      }\n\t      this.quill.format('direction', value, _quill2.default.sources.USER);\n\t    },\n\t    link: function link(value) {\n\t      if (value === true) {\n\t        value = prompt('Enter link URL:');\n\t      }\n\t      this.quill.format('link', value, _quill2.default.sources.USER);\n\t    },\n\t    indent: function indent(value) {\n\t      var range = this.quill.getSelection();\n\t      var formats = this.quill.getFormat(range);\n\t      var indent = parseInt(formats.indent || 0);\n\t      if (value === '+1' || value === '-1') {\n\t        var modifier = value === '+1' ? 1 : -1;\n\t        if (formats.direction === 'rtl') modifier *= -1;\n\t        this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n\t      }\n\t    }\n\t  }\n\t};\n\t\n\texports.default = Toolbar;\n\texports.addControls = addControls;\n\n/***/ },\n/* 72 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = {\n\t  'align': {\n\t    '': __webpack_require__(73),\n\t    'center': __webpack_require__(74),\n\t    'right': __webpack_require__(75),\n\t    'justify': __webpack_require__(76)\n\t  },\n\t  'background': __webpack_require__(77),\n\t  'blockquote': __webpack_require__(78),\n\t  'bold': __webpack_require__(79),\n\t  'clean': __webpack_require__(80),\n\t  'code': __webpack_require__(81),\n\t  'code-block': __webpack_require__(81),\n\t  'color': __webpack_require__(82),\n\t  'direction': {\n\t    '': __webpack_require__(83),\n\t    'rtl': __webpack_require__(84)\n\t  },\n\t  'float': {\n\t    'center': __webpack_require__(85),\n\t    'full': __webpack_require__(86),\n\t    'left': __webpack_require__(87),\n\t    'right': __webpack_require__(88)\n\t  },\n\t  'formula': __webpack_require__(89),\n\t  'header': {\n\t    '1': __webpack_require__(90),\n\t    '2': __webpack_require__(91)\n\t  },\n\t  'italic': __webpack_require__(92),\n\t  'image': __webpack_require__(93),\n\t  'indent': {\n\t    '+1': __webpack_require__(94),\n\t    '-1': __webpack_require__(95)\n\t  },\n\t  'link': __webpack_require__(96),\n\t  'list': {\n\t    'ordered': __webpack_require__(97),\n\t    'bullet': __webpack_require__(98)\n\t  },\n\t  'script': {\n\t    'sub': __webpack_require__(99),\n\t    'super': __webpack_require__(100)\n\t  },\n\t  'strike': __webpack_require__(101),\n\t  'underline': __webpack_require__(102),\n\t  'video': __webpack_require__(103)\n\t};\n\n/***/ },\n/* 73 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ },\n/* 74 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>\";\n\n/***/ },\n/* 75 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ },\n/* 76 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>\";\n\n/***/ },\n/* 77 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <g class=\\\"ql-fill ql-color-label\\\"> <polygon points=\\\"6 6.868 6 6 5 6 5 7 5.942 7 6 6.868\\\"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points=\\\"6.817 5 6 5 6 6 6.38 6 6.817 5\\\"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points=\\\"4 11.439 4 11 3 11 3 12 3.755 12 4 11.439\\\"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points=\\\"4.63 10 4 10 4 11 4.192 11 4.63 10\\\"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points=\\\"13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174\\\"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points=\\\"12 6.868 12 6 11.62 6 12 6.868\\\"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points=\\\"12.933 9 13 9 13 8 12.495 8 12.933 9\\\"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points=\\\"5.5 13 9 5 12.5 13\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>\";\n\n/***/ },\n/* 78 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=4 y=5></rect> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=11 y=5></rect> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M7,8c0,4.031-3,5-3,5></path> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M14,8c0,4.031-3,5-3,5></path> </svg>\";\n\n/***/ },\n/* 79 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>\";\n\n/***/ },\n/* 80 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>\";\n\n/***/ },\n/* 81 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"5 7 3 9 5 11\\\"></polyline> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"13 7 15 9 13 11\\\"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>\";\n\n/***/ },\n/* 82 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-color-label ql-stroke ql-transparent\\\" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points=\\\"5.5 11 9 3 12.5 11\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>\";\n\n/***/ },\n/* 83 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"3 11 5 9 3 7 3 11\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>\";\n\n/***/ },\n/* 84 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"15 12 13 10 15 8 15 12\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>\";\n\n/***/ },\n/* 85 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ },\n/* 86 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ },\n/* 87 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ },\n/* 88 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform=\\\"translate(24 18) rotate(-180)\\\"/> </svg>\";\n\n/***/ },\n/* 89 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>\";\n\n/***/ },\n/* 90 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=3 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=11 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=3 y1=9 y2=9></line> <line class=\\\"ql-stroke ql-thin\\\" x1=13.5 x2=15.5 y1=14.5 y2=14.5></line> <path class=ql-fill d=M14.5,15a0.5,0.5,0,0,1-.5-0.5V12.085l-0.276.138A0.5,0.5,0,0,1,13.053,12c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,15,11.5v3A0.5,0.5,0,0,1,14.5,15Z></path> </svg>\";\n\n/***/ },\n/* 91 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=3 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=11 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=3 y1=9 y2=9></line> <path class=\\\"ql-stroke ql-thin\\\" d=M15.5,14.5h-2c0-.234,1.85-1.076,1.85-2.234a0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n/***/ },\n/* 92 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>\";\n\n/***/ },\n/* 93 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class=\\\"ql-even ql-fill\\\" points=\\\"5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12\\\"></polyline> </svg>\";\n\n/***/ },\n/* 94 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=\\\"ql-fill ql-stroke\\\" points=\\\"3 7 3 11 5 9 3 7\\\"></polyline> </svg>\";\n\n/***/ },\n/* 95 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"5 7 5 11 3 9 5 7\\\"></polyline> </svg>\";\n\n/***/ },\n/* 96 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class=\\\"ql-even ql-stroke\\\" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class=\\\"ql-even ql-stroke\\\" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>\";\n\n/***/ },\n/* 97 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class=\\\"ql-stroke ql-thin\\\" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class=\\\"ql-stroke ql-thin\\\" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class=\\\"ql-stroke ql-thin\\\" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n/***/ },\n/* 98 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>\";\n\n/***/ },\n/* 99 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>\";\n\n/***/ },\n/* 100 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>\";\n\n/***/ },\n/* 101 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-stroke ql-thin\\\" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>\";\n\n/***/ },\n/* 102 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>\";\n\n/***/ },\n/* 103 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>\";\n\n/***/ },\n/* 104 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _dropdown = __webpack_require__(105);\n\t\n\tvar _dropdown2 = _interopRequireDefault(_dropdown);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar Picker = function () {\n\t  function Picker(select) {\n\t    var _this = this;\n\t\n\t    _classCallCheck(this, Picker);\n\t\n\t    this.select = select;\n\t    this.container = document.createElement('span');\n\t    this.buildPicker();\n\t    this.select.style.display = 'none';\n\t    this.select.parentNode.insertBefore(this.container, this.select);\n\t    this.label.addEventListener('click', function () {\n\t      _this.container.classList.toggle('ql-expanded');\n\t    });\n\t    this.select.addEventListener('change', this.update.bind(this));\n\t  }\n\t\n\t  _createClass(Picker, [{\n\t    key: 'buildItem',\n\t    value: function buildItem(option) {\n\t      var _this2 = this;\n\t\n\t      var item = document.createElement('span');\n\t      item.classList.add('ql-picker-item');\n\t      if (option.hasAttribute('value')) {\n\t        item.setAttribute('data-value', option.getAttribute('value'));\n\t      }\n\t      if (option.textContent) {\n\t        item.setAttribute('data-label', option.textContent);\n\t      }\n\t      item.addEventListener('click', function () {\n\t        _this2.selectItem(item, true);\n\t      });\n\t      return item;\n\t    }\n\t  }, {\n\t    key: 'buildLabel',\n\t    value: function buildLabel() {\n\t      var label = document.createElement('span');\n\t      label.classList.add('ql-picker-label');\n\t      label.innerHTML = _dropdown2.default;\n\t      this.container.appendChild(label);\n\t      return label;\n\t    }\n\t  }, {\n\t    key: 'buildOptions',\n\t    value: function buildOptions() {\n\t      var _this3 = this;\n\t\n\t      var options = document.createElement('span');\n\t      options.classList.add('ql-picker-options');\n\t      [].slice.call(this.select.options).forEach(function (option) {\n\t        var item = _this3.buildItem(option);\n\t        options.appendChild(item);\n\t        if (option.hasAttribute('selected')) {\n\t          _this3.selectItem(item);\n\t        }\n\t      });\n\t      this.container.appendChild(options);\n\t    }\n\t  }, {\n\t    key: 'buildPicker',\n\t    value: function buildPicker() {\n\t      var _this4 = this;\n\t\n\t      [].slice.call(this.select.attributes).forEach(function (item) {\n\t        _this4.container.setAttribute(item.name, item.value);\n\t      });\n\t      this.container.classList.add('ql-picker');\n\t      this.label = this.buildLabel();\n\t      this.buildOptions();\n\t    }\n\t  }, {\n\t    key: 'close',\n\t    value: function close() {\n\t      this.container.classList.remove('ql-expanded');\n\t    }\n\t  }, {\n\t    key: 'selectItem',\n\t    value: function selectItem(item) {\n\t      var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t      var selected = this.container.querySelector('.ql-selected');\n\t      if (item === selected) return;\n\t      if (selected != null) {\n\t        selected.classList.remove('ql-selected');\n\t      }\n\t      if (item != null) {\n\t        item.classList.add('ql-selected');\n\t        this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n\t        if (item.hasAttribute('data-value')) {\n\t          this.label.setAttribute('data-value', item.getAttribute('data-value'));\n\t        } else {\n\t          this.label.removeAttribute('data-value');\n\t        }\n\t        if (item.hasAttribute('data-label')) {\n\t          this.label.setAttribute('data-label', item.getAttribute('data-label'));\n\t        } else {\n\t          this.label.removeAttribute('data-label');\n\t        }\n\t        if (trigger) {\n\t          if (typeof Event === 'function') {\n\t            this.select.dispatchEvent(new Event('change'));\n\t          } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n\t            // IE11\n\t            var event = document.createEvent('Event');\n\t            event.initEvent('change', true, true);\n\t            this.select.dispatchEvent(event);\n\t          }\n\t          this.close();\n\t        }\n\t      } else {\n\t        this.label.removeAttribute('data-value');\n\t        this.label.removeAttribute('data-label');\n\t      }\n\t    }\n\t  }, {\n\t    key: 'update',\n\t    value: function update() {\n\t      var option = void 0;\n\t      if (this.select.selectedIndex > -1) {\n\t        var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n\t        option = this.select.options[this.select.selectedIndex];\n\t        this.selectItem(item);\n\t      } else {\n\t        this.selectItem(null);\n\t      }\n\t      var isActive = option != null && option !== this.select.querySelector('option[selected]');\n\t      this.label.classList.toggle('ql-active', isActive);\n\t    }\n\t  }]);\n\t\n\t  return Picker;\n\t}();\n\t\n\texports.default = Picker;\n\n/***/ },\n/* 105 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=ql-stroke points=\\\"7 11 9 13 11 11 7 11\\\"></polygon> <polygon class=ql-stroke points=\\\"7 7 9 5 11 7 7 7\\\"></polygon> </svg>\";\n\n/***/ },\n/* 106 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _picker = __webpack_require__(104);\n\t\n\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar ColorPicker = function (_Picker) {\n\t  _inherits(ColorPicker, _Picker);\n\t\n\t  function ColorPicker(select, label) {\n\t    _classCallCheck(this, ColorPicker);\n\t\n\t    var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\t\n\t    _this.label.innerHTML = label;\n\t    _this.container.classList.add('ql-color-picker');\n\t    [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n\t      item.classList.add('ql-primary');\n\t    });\n\t    return _this;\n\t  }\n\t\n\t  _createClass(ColorPicker, [{\n\t    key: 'buildItem',\n\t    value: function buildItem(option) {\n\t      var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n\t      item.style.backgroundColor = option.getAttribute('value') || '';\n\t      return item;\n\t    }\n\t  }, {\n\t    key: 'selectItem',\n\t    value: function selectItem(item, trigger) {\n\t      _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\t      var colorLabel = this.label.querySelector('.ql-color-label');\n\t      var value = item ? item.getAttribute('data-value') || '' : '';\n\t      if (colorLabel) {\n\t        if (colorLabel.tagName === 'line') {\n\t          colorLabel.style.stroke = value;\n\t        } else {\n\t          colorLabel.style.fill = value;\n\t        }\n\t      }\n\t    }\n\t  }]);\n\t\n\t  return ColorPicker;\n\t}(_picker2.default);\n\t\n\texports.default = ColorPicker;\n\n/***/ },\n/* 107 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _picker = __webpack_require__(104);\n\t\n\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar IconPicker = function (_Picker) {\n\t  _inherits(IconPicker, _Picker);\n\t\n\t  function IconPicker(select, icons) {\n\t    _classCallCheck(this, IconPicker);\n\t\n\t    var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\t\n\t    _this.container.classList.add('ql-icon-picker');\n\t    [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n\t      item.innerHTML = icons[item.getAttribute('data-value') || ''];\n\t    });\n\t    _this.defaultItem = _this.container.querySelector('.ql-selected');\n\t    _this.selectItem(_this.defaultItem);\n\t    return _this;\n\t  }\n\t\n\t  _createClass(IconPicker, [{\n\t    key: 'selectItem',\n\t    value: function selectItem(item, trigger) {\n\t      _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\t      item = item || this.defaultItem;\n\t      this.label.innerHTML = item.innerHTML;\n\t    }\n\t  }]);\n\t\n\t  return IconPicker;\n\t}(_picker2.default);\n\t\n\texports.default = IconPicker;\n\n/***/ },\n/* 108 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar Tooltip = function () {\n\t  function Tooltip(quill, boundsContainer) {\n\t    var _this = this;\n\t\n\t    _classCallCheck(this, Tooltip);\n\t\n\t    this.quill = quill;\n\t    this.boundsContainer = boundsContainer || document.body;\n\t    this.root = quill.addContainer('ql-tooltip');\n\t    this.root.innerHTML = this.constructor.TEMPLATE;\n\t    var offset = parseInt(window.getComputedStyle(this.root).marginTop);\n\t    this.quill.root.addEventListener('scroll', function () {\n\t      _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + offset + 'px';\n\t      _this.checkBounds();\n\t    });\n\t    this.hide();\n\t  }\n\t\n\t  _createClass(Tooltip, [{\n\t    key: 'checkBounds',\n\t    value: function checkBounds() {\n\t      this.root.classList.toggle('ql-out-top', this.root.offsetTop <= 0);\n\t      this.root.classList.remove('ql-out-bottom');\n\t      this.root.classList.toggle('ql-out-bottom', this.root.offsetTop + this.root.offsetHeight >= this.quill.root.offsetHeight);\n\t    }\n\t  }, {\n\t    key: 'hide',\n\t    value: function hide() {\n\t      this.root.classList.add('ql-hidden');\n\t    }\n\t  }, {\n\t    key: 'position',\n\t    value: function position(reference) {\n\t      var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n\t      var top = reference.bottom + this.quill.root.scrollTop;\n\t      this.root.style.left = left + 'px';\n\t      this.root.style.top = top + 'px';\n\t      var containerBounds = this.boundsContainer.getBoundingClientRect();\n\t      var rootBounds = this.root.getBoundingClientRect();\n\t      var shift = 0;\n\t      if (rootBounds.right > containerBounds.right) {\n\t        shift = containerBounds.right - rootBounds.right;\n\t        this.root.style.left = left + shift + 'px';\n\t      }\n\t      if (rootBounds.left < containerBounds.left) {\n\t        shift = containerBounds.left - rootBounds.left;\n\t        this.root.style.left = left + shift + 'px';\n\t      }\n\t      this.checkBounds();\n\t      return shift;\n\t    }\n\t  }, {\n\t    key: 'show',\n\t    value: function show() {\n\t      this.root.classList.remove('ql-editing');\n\t      this.root.classList.remove('ql-hidden');\n\t    }\n\t  }]);\n\t\n\t  return Tooltip;\n\t}();\n\t\n\texports.default = Tooltip;\n\n/***/ },\n/* 109 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.default = exports.BubbleTooltip = undefined;\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _extend = __webpack_require__(30);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _emitter = __webpack_require__(36);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\tvar _base = __webpack_require__(110);\n\t\n\tvar _base2 = _interopRequireDefault(_base);\n\t\n\tvar _selection = __webpack_require__(44);\n\t\n\tvar _icons = __webpack_require__(72);\n\t\n\tvar _icons2 = _interopRequireDefault(_icons);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\t\n\tvar BubbleTheme = function (_BaseTheme) {\n\t  _inherits(BubbleTheme, _BaseTheme);\n\t\n\t  function BubbleTheme(quill, options) {\n\t    _classCallCheck(this, BubbleTheme);\n\t\n\t    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n\t      options.modules.toolbar.container = TOOLBAR_CONFIG;\n\t    }\n\t\n\t    var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\t\n\t    _this.quill.container.classList.add('ql-bubble');\n\t    return _this;\n\t  }\n\t\n\t  _createClass(BubbleTheme, [{\n\t    key: 'extendToolbar',\n\t    value: function extendToolbar(toolbar) {\n\t      this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n\t      this.tooltip.root.appendChild(toolbar.container);\n\t      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n\t      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n\t    }\n\t  }]);\n\t\n\t  return BubbleTheme;\n\t}(_base2.default);\n\t\n\tBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n\t  modules: {\n\t    toolbar: {\n\t      handlers: {\n\t        link: function link(value) {\n\t          if (!value) {\n\t            this.quill.format('link', false);\n\t          } else {\n\t            this.quill.theme.tooltip.edit();\n\t          }\n\t        }\n\t      }\n\t    }\n\t  }\n\t});\n\t\n\tvar BubbleTooltip = function (_BaseTooltip) {\n\t  _inherits(BubbleTooltip, _BaseTooltip);\n\t\n\t  function BubbleTooltip(quill, bounds) {\n\t    _classCallCheck(this, BubbleTooltip);\n\t\n\t    var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\t\n\t    _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range) {\n\t      if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n\t      if (range != null && range.length > 0) {\n\t        _this2.show();\n\t        // Lock our width so we will expand beyond our offsetParent boundaries\n\t        _this2.root.style.left = '0px';\n\t        _this2.root.style.width = '';\n\t        _this2.root.style.width = _this2.root.offsetWidth + 'px';\n\t        var lines = _this2.quill.scroll.lines(range.index, range.length);\n\t        if (lines.length === 1) {\n\t          _this2.position(_this2.quill.getBounds(range));\n\t        } else {\n\t          var lastLine = lines[lines.length - 1];\n\t          var index = lastLine.offset(_this2.quill.scroll);\n\t          var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n\t          var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n\t          _this2.position(_bounds);\n\t        }\n\t      } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n\t        _this2.hide();\n\t      }\n\t    });\n\t    return _this2;\n\t  }\n\t\n\t  _createClass(BubbleTooltip, [{\n\t    key: 'listen',\n\t    value: function listen() {\n\t      var _this3 = this;\n\t\n\t      _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n\t      this.root.querySelector('.ql-close').addEventListener('click', function () {\n\t        _this3.root.classList.remove('ql-editing');\n\t      });\n\t      this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n\t        // Let selection be restored by toolbar handlers before repositioning\n\t        setTimeout(function () {\n\t          if (_this3.root.classList.contains('ql-hidden')) return;\n\t          var range = _this3.quill.getSelection();\n\t          if (range != null) {\n\t            _this3.position(_this3.quill.getBounds(range));\n\t          }\n\t        }, 1);\n\t      });\n\t    }\n\t  }, {\n\t    key: 'cancel',\n\t    value: function cancel() {\n\t      this.show();\n\t    }\n\t  }, {\n\t    key: 'position',\n\t    value: function position(reference) {\n\t      var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n\t      var arrow = this.root.querySelector('.ql-tooltip-arrow');\n\t      arrow.style.marginLeft = '';\n\t      if (shift === 0) return shift;\n\t      arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n\t    }\n\t  }]);\n\t\n\t  return BubbleTooltip;\n\t}(_base.BaseTooltip);\n\t\n\tBubbleTooltip.TEMPLATE = ['<span class=\"ql-tooltip-arrow\"></span>', '<div class=\"ql-tooltip-editor\">', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-close\"></a>', '</div>'].join('');\n\t\n\texports.BubbleTooltip = BubbleTooltip;\n\texports.default = BubbleTheme;\n\n/***/ },\n/* 110 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.default = exports.BaseTooltip = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _extend = __webpack_require__(30);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _emitter = __webpack_require__(36);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\tvar _keyboard = __webpack_require__(56);\n\t\n\tvar _keyboard2 = _interopRequireDefault(_keyboard);\n\t\n\tvar _theme = __webpack_require__(45);\n\t\n\tvar _theme2 = _interopRequireDefault(_theme);\n\t\n\tvar _colorPicker = __webpack_require__(106);\n\t\n\tvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\t\n\tvar _iconPicker = __webpack_require__(107);\n\t\n\tvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\t\n\tvar _picker = __webpack_require__(104);\n\t\n\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\tvar _tooltip = __webpack_require__(108);\n\t\n\tvar _tooltip2 = _interopRequireDefault(_tooltip);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar ALIGNS = [false, 'center', 'right', 'justify'];\n\t\n\tvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\t\n\tvar FONTS = [false, 'serif', 'monospace'];\n\t\n\tvar HEADERS = ['1', '2', '3', false];\n\t\n\tvar SIZES = ['small', false, 'large', 'huge'];\n\t\n\tvar BaseTheme = function (_Theme) {\n\t  _inherits(BaseTheme, _Theme);\n\t\n\t  function BaseTheme(quill, options) {\n\t    _classCallCheck(this, BaseTheme);\n\t\n\t    var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\t\n\t    var listener = function listener(e) {\n\t      if (!document.body.contains(quill.root)) {\n\t        return document.body.removeEventListener('click', listener);\n\t      }\n\t      if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n\t        _this.tooltip.hide();\n\t      }\n\t      if (_this.pickers != null) {\n\t        _this.pickers.forEach(function (picker) {\n\t          if (!picker.container.contains(e.target)) {\n\t            picker.close();\n\t          }\n\t        });\n\t      }\n\t    };\n\t    document.body.addEventListener('click', listener);\n\t    return _this;\n\t  }\n\t\n\t  _createClass(BaseTheme, [{\n\t    key: 'addModule',\n\t    value: function addModule(name) {\n\t      var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n\t      if (name === 'toolbar') {\n\t        this.extendToolbar(module);\n\t      }\n\t      return module;\n\t    }\n\t  }, {\n\t    key: 'buildButtons',\n\t    value: function buildButtons(buttons, icons) {\n\t      buttons.forEach(function (button) {\n\t        var className = button.getAttribute('class') || '';\n\t        className.split(/\\s+/).forEach(function (name) {\n\t          if (!name.startsWith('ql-')) return;\n\t          name = name.slice('ql-'.length);\n\t          if (icons[name] == null) return;\n\t          if (name === 'direction') {\n\t            button.innerHTML = icons[name][''] + icons[name]['rtl'];\n\t          } else if (typeof icons[name] === 'string') {\n\t            button.innerHTML = icons[name];\n\t          } else {\n\t            var value = button.value || '';\n\t            if (value != null && icons[name][value]) {\n\t              button.innerHTML = icons[name][value];\n\t            }\n\t          }\n\t        });\n\t      });\n\t    }\n\t  }, {\n\t    key: 'buildPickers',\n\t    value: function buildPickers(selects, icons) {\n\t      var _this2 = this;\n\t\n\t      this.pickers = selects.map(function (select) {\n\t        if (select.classList.contains('ql-align')) {\n\t          if (select.querySelector('option') == null) {\n\t            fillSelect(select, ALIGNS);\n\t          }\n\t          return new _iconPicker2.default(select, icons.align);\n\t        } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n\t          var format = select.classList.contains('ql-background') ? 'background' : 'color';\n\t          if (select.querySelector('option') == null) {\n\t            fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n\t          }\n\t          return new _colorPicker2.default(select, icons[format]);\n\t        } else {\n\t          if (select.querySelector('option') == null) {\n\t            if (select.classList.contains('ql-font')) {\n\t              fillSelect(select, FONTS);\n\t            } else if (select.classList.contains('ql-header')) {\n\t              fillSelect(select, HEADERS);\n\t            } else if (select.classList.contains('ql-size')) {\n\t              fillSelect(select, SIZES);\n\t            }\n\t          }\n\t          return new _picker2.default(select);\n\t        }\n\t      });\n\t      var update = function update() {\n\t        _this2.pickers.forEach(function (picker) {\n\t          picker.update();\n\t        });\n\t      };\n\t      this.quill.on(_emitter2.default.events.SELECTION_CHANGE, update).on(_emitter2.default.events.SCROLL_OPTIMIZE, update);\n\t    }\n\t  }]);\n\t\n\t  return BaseTheme;\n\t}(_theme2.default);\n\t\n\tBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n\t  modules: {\n\t    toolbar: {\n\t      handlers: {\n\t        formula: function formula() {\n\t          this.quill.theme.tooltip.edit('formula');\n\t        },\n\t        image: function image() {\n\t          var _this3 = this;\n\t\n\t          var fileInput = this.container.querySelector('input.ql-image[type=file]');\n\t          if (fileInput == null) {\n\t            fileInput = document.createElement('input');\n\t            fileInput.setAttribute('type', 'file');\n\t            fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon, image/svg+xml');\n\t            fileInput.classList.add('ql-image');\n\t            fileInput.addEventListener('change', function () {\n\t              if (fileInput.files != null && fileInput.files[0] != null) {\n\t                var reader = new FileReader();\n\t                reader.onload = function (e) {\n\t                  var range = _this3.quill.getSelection(true);\n\t                  _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n\t                  fileInput.value = \"\";\n\t                };\n\t                reader.readAsDataURL(fileInput.files[0]);\n\t              }\n\t            });\n\t            this.container.appendChild(fileInput);\n\t          }\n\t          fileInput.click();\n\t        },\n\t        video: function video() {\n\t          this.quill.theme.tooltip.edit('video');\n\t        }\n\t      }\n\t    }\n\t  }\n\t});\n\t\n\tvar BaseTooltip = function (_Tooltip) {\n\t  _inherits(BaseTooltip, _Tooltip);\n\t\n\t  function BaseTooltip(quill, boundsContainer) {\n\t    _classCallCheck(this, BaseTooltip);\n\t\n\t    var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\t\n\t    _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n\t    _this4.listen();\n\t    return _this4;\n\t  }\n\t\n\t  _createClass(BaseTooltip, [{\n\t    key: 'listen',\n\t    value: function listen() {\n\t      var _this5 = this;\n\t\n\t      this.textbox.addEventListener('keydown', function (event) {\n\t        if (_keyboard2.default.match(event, 'enter')) {\n\t          _this5.save();\n\t          event.preventDefault();\n\t        } else if (_keyboard2.default.match(event, 'escape')) {\n\t          _this5.cancel();\n\t          event.preventDefault();\n\t        }\n\t      });\n\t    }\n\t  }, {\n\t    key: 'cancel',\n\t    value: function cancel() {\n\t      this.hide();\n\t    }\n\t  }, {\n\t    key: 'edit',\n\t    value: function edit() {\n\t      var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n\t      var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\t\n\t      this.root.classList.remove('ql-hidden');\n\t      this.root.classList.add('ql-editing');\n\t      if (preview != null) {\n\t        this.textbox.value = preview;\n\t      } else if (mode !== this.root.getAttribute('data-mode')) {\n\t        this.textbox.value = '';\n\t      }\n\t      this.position(this.quill.getBounds(this.quill.selection.savedRange));\n\t      this.textbox.select();\n\t      this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n\t      this.root.setAttribute('data-mode', mode);\n\t    }\n\t  }, {\n\t    key: 'restoreFocus',\n\t    value: function restoreFocus() {\n\t      var scrollTop = this.quill.root.scrollTop;\n\t      this.quill.focus();\n\t      this.quill.root.scrollTop = scrollTop;\n\t    }\n\t  }, {\n\t    key: 'save',\n\t    value: function save() {\n\t      var value = this.textbox.value;\n\t      switch (this.root.getAttribute('data-mode')) {\n\t        case 'link':\n\t          {\n\t            var scrollTop = this.quill.root.scrollTop;\n\t            if (this.linkRange) {\n\t              this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n\t              delete this.linkRange;\n\t            } else {\n\t              this.restoreFocus();\n\t              this.quill.format('link', value, _emitter2.default.sources.USER);\n\t            }\n\t            this.quill.root.scrollTop = scrollTop;\n\t            break;\n\t          }\n\t        case 'video':\n\t          {\n\t            var match = value.match(/^(https?):\\/\\/(www\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || value.match(/^(https?):\\/\\/(www\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n\t            if (match) {\n\t              value = match[1] + '://www.youtube.com/embed/' + match[3] + '?showinfo=0';\n\t            } else if (match = value.match(/^(https?):\\/\\/(www\\.)?vimeo\\.com\\/(\\d+)/)) {\n\t              // eslint-disable-line no-cond-assign\n\t              value = match[1] + '://player.vimeo.com/video/' + match[3] + '/';\n\t            }\n\t          } // eslint-disable-next-line no-fallthrough\n\t        case 'formula':\n\t          {\n\t            var range = this.quill.getSelection(true);\n\t            var index = range.index + range.length;\n\t            if (range != null) {\n\t              this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n\t              if (this.root.getAttribute('data-mode') === 'formula') {\n\t                this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n\t              }\n\t              this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n\t            }\n\t            break;\n\t          }\n\t        default:\n\t      }\n\t      this.textbox.value = '';\n\t      this.hide();\n\t    }\n\t  }]);\n\t\n\t  return BaseTooltip;\n\t}(_tooltip2.default);\n\t\n\tfunction fillSelect(select, values) {\n\t  var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t\n\t  values.forEach(function (value) {\n\t    var option = document.createElement('option');\n\t    if (value === defaultValue) {\n\t      option.setAttribute('selected', 'selected');\n\t    } else {\n\t      option.setAttribute('value', value);\n\t    }\n\t    select.appendChild(option);\n\t  });\n\t}\n\t\n\texports.BaseTooltip = BaseTooltip;\n\texports.default = BaseTheme;\n\n/***/ },\n/* 111 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _extend = __webpack_require__(30);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _emitter = __webpack_require__(36);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\tvar _base = __webpack_require__(110);\n\t\n\tvar _base2 = _interopRequireDefault(_base);\n\t\n\tvar _link = __webpack_require__(63);\n\t\n\tvar _link2 = _interopRequireDefault(_link);\n\t\n\tvar _selection = __webpack_require__(44);\n\t\n\tvar _icons = __webpack_require__(72);\n\t\n\tvar _icons2 = _interopRequireDefault(_icons);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\t\n\tvar SnowTheme = function (_BaseTheme) {\n\t  _inherits(SnowTheme, _BaseTheme);\n\t\n\t  function SnowTheme(quill, options) {\n\t    _classCallCheck(this, SnowTheme);\n\t\n\t    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n\t      options.modules.toolbar.container = TOOLBAR_CONFIG;\n\t    }\n\t\n\t    var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\t\n\t    _this.quill.container.classList.add('ql-snow');\n\t    return _this;\n\t  }\n\t\n\t  _createClass(SnowTheme, [{\n\t    key: 'extendToolbar',\n\t    value: function extendToolbar(toolbar) {\n\t      toolbar.container.classList.add('ql-snow');\n\t      this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n\t      this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n\t      this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n\t      if (toolbar.container.querySelector('.ql-link')) {\n\t        this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n\t          toolbar.handlers['link'].call(toolbar, !context.format.link);\n\t        });\n\t      }\n\t    }\n\t  }]);\n\t\n\t  return SnowTheme;\n\t}(_base2.default);\n\t\n\tSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n\t  modules: {\n\t    toolbar: {\n\t      handlers: {\n\t        link: function link(value) {\n\t          if (value) {\n\t            var range = this.quill.getSelection();\n\t            if (range == null || range.length == 0) return;\n\t            var preview = this.quill.getText(range);\n\t            if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n\t              preview = 'mailto:' + preview;\n\t            }\n\t            var tooltip = this.quill.theme.tooltip;\n\t            tooltip.edit('link', preview);\n\t          } else {\n\t            this.quill.format('link', false);\n\t          }\n\t        }\n\t      }\n\t    }\n\t  }\n\t});\n\t\n\tvar SnowTooltip = function (_BaseTooltip) {\n\t  _inherits(SnowTooltip, _BaseTooltip);\n\t\n\t  function SnowTooltip(quill, bounds) {\n\t    _classCallCheck(this, SnowTooltip);\n\t\n\t    var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\t\n\t    _this2.preview = _this2.root.querySelector('a.ql-preview');\n\t    return _this2;\n\t  }\n\t\n\t  _createClass(SnowTooltip, [{\n\t    key: 'listen',\n\t    value: function listen() {\n\t      var _this3 = this;\n\t\n\t      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n\t      this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n\t        if (_this3.root.classList.contains('ql-editing')) {\n\t          _this3.save();\n\t        } else {\n\t          _this3.edit('link', _this3.preview.textContent);\n\t        }\n\t        event.preventDefault();\n\t      });\n\t      this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n\t        if (_this3.linkRange != null) {\n\t          _this3.restoreFocus();\n\t          _this3.quill.formatText(_this3.linkRange, 'link', false, _emitter2.default.sources.USER);\n\t          delete _this3.linkRange;\n\t        }\n\t        event.preventDefault();\n\t        _this3.hide();\n\t      });\n\t      this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range) {\n\t        if (range == null) return;\n\t        if (range.length === 0) {\n\t          var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n\t              _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n\t              link = _quill$scroll$descend2[0],\n\t              offset = _quill$scroll$descend2[1];\n\t\n\t          if (link != null) {\n\t            _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n\t            var preview = _link2.default.formats(link.domNode);\n\t            _this3.preview.textContent = preview;\n\t            _this3.preview.setAttribute('href', preview);\n\t            _this3.show();\n\t            _this3.position(_this3.quill.getBounds(_this3.linkRange));\n\t            return;\n\t          }\n\t        } else {\n\t          delete _this3.linkRange;\n\t        }\n\t        _this3.hide();\n\t      });\n\t    }\n\t  }, {\n\t    key: 'show',\n\t    value: function show() {\n\t      _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n\t      this.root.removeAttribute('data-mode');\n\t    }\n\t  }]);\n\t\n\t  return SnowTooltip;\n\t}(_base.BaseTooltip);\n\t\n\tSnowTooltip.TEMPLATE = ['<a class=\"ql-preview\" target=\"_blank\" href=\"about:blank\"></a>', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-action\"></a>', '<a class=\"ql-remove\"></a>'].join('');\n\t\n\texports.default = SnowTheme;\n\n/***/ },\n/* 112 */\n/***/ function(module, exports, __webpack_require__, __webpack_module_template_argument_0__, __webpack_module_template_argument_1__) {\n\n\tvar pSlice = Array.prototype.slice;\n\tvar objectKeys = __webpack_require__(__webpack_module_template_argument_0__);\n\tvar isArguments = __webpack_require__(__webpack_module_template_argument_1__);\n\t\n\tvar deepEqual = module.exports = function (actual, expected, opts) {\n\t  if (!opts) opts = {};\n\t  // 7.1. All identical values are equivalent, as determined by ===.\n\t  if (actual === expected) {\n\t    return true;\n\t\n\t  } else if (actual instanceof Date && expected instanceof Date) {\n\t    return actual.getTime() === expected.getTime();\n\t\n\t  // 7.3. Other pairs that do not both pass typeof value == 'object',\n\t  // equivalence is determined by ==.\n\t  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n\t    return opts.strict ? actual === expected : actual == expected;\n\t\n\t  // 7.4. For all other Object pairs, including Array objects, equivalence is\n\t  // determined by having the same number of owned properties (as verified\n\t  // with Object.prototype.hasOwnProperty.call), the same set of keys\n\t  // (although not necessarily the same order), equivalent values for every\n\t  // corresponding key, and an identical 'prototype' property. Note: this\n\t  // accounts for both named and indexed properties on Arrays.\n\t  } else {\n\t    return objEquiv(actual, expected, opts);\n\t  }\n\t}\n\t\n\tfunction isUndefinedOrNull(value) {\n\t  return value === null || value === undefined;\n\t}\n\t\n\tfunction isBuffer (x) {\n\t  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n\t  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n\t    return false;\n\t  }\n\t  if (x.length > 0 && typeof x[0] !== 'number') return false;\n\t  return true;\n\t}\n\t\n\tfunction objEquiv(a, b, opts) {\n\t  var i, key;\n\t  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n\t    return false;\n\t  // an identical 'prototype' property.\n\t  if (a.prototype !== b.prototype) return false;\n\t  //~~~I've managed to break Object.keys through screwy arguments passing.\n\t  //   Converting to array solves the problem.\n\t  if (isArguments(a)) {\n\t    if (!isArguments(b)) {\n\t      return false;\n\t    }\n\t    a = pSlice.call(a);\n\t    b = pSlice.call(b);\n\t    return deepEqual(a, b, opts);\n\t  }\n\t  if (isBuffer(a)) {\n\t    if (!isBuffer(b)) {\n\t      return false;\n\t    }\n\t    if (a.length !== b.length) return false;\n\t    for (i = 0; i < a.length; i++) {\n\t      if (a[i] !== b[i]) return false;\n\t    }\n\t    return true;\n\t  }\n\t  try {\n\t    var ka = objectKeys(a),\n\t        kb = objectKeys(b);\n\t  } catch (e) {//happens when one is a string literal and the other isn't\n\t    return false;\n\t  }\n\t  // having the same number of owned properties (keys incorporates\n\t  // hasOwnProperty)\n\t  if (ka.length != kb.length)\n\t    return false;\n\t  //the same set of keys (although not necessarily the same order),\n\t  ka.sort();\n\t  kb.sort();\n\t  //~~~cheap key test\n\t  for (i = ka.length - 1; i >= 0; i--) {\n\t    if (ka[i] != kb[i])\n\t      return false;\n\t  }\n\t  //equivalent values for every corresponding key, and\n\t  //~~~possibly expensive deep test\n\t  for (i = ka.length - 1; i >= 0; i--) {\n\t    key = ka[i];\n\t    if (!deepEqual(a[key], b[key], opts)) return false;\n\t  }\n\t  return typeof a === typeof b;\n\t}\n\n\n/***/ }\n/******/ ])))\n});\n;\n\n\n// WEBPACK FOOTER //\n// quill.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 12da403d1f2adb6b6342","import Quill from './core';\n\nimport { AlignClass, AlignStyle } from './formats/align';\nimport { DirectionAttribute, DirectionClass, DirectionStyle } from './formats/direction';\nimport { IndentClass as Indent } from './formats/indent';\n\nimport Blockquote from './formats/blockquote';\nimport Header from './formats/header';\nimport List, { ListItem } from './formats/list';\n\nimport { BackgroundClass, BackgroundStyle } from './formats/background';\nimport { ColorClass, ColorStyle } from './formats/color';\nimport { FontClass, FontStyle } from './formats/font';\nimport { SizeClass, SizeStyle } from './formats/size';\n\nimport Bold from './formats/bold';\nimport Italic from './formats/italic';\nimport Link from './formats/link';\nimport Script from './formats/script';\nimport Strike from './formats/strike';\nimport Underline from './formats/underline';\n\nimport Image from './formats/image';\nimport Video from './formats/video';\n\nimport CodeBlock, { Code as InlineCode } from './formats/code';\n\nimport Formula from './modules/formula';\nimport Syntax from './modules/syntax';\nimport Toolbar from './modules/toolbar';\n\nimport Icons from './ui/icons';\nimport Picker from './ui/picker';\nimport ColorPicker from './ui/color-picker';\nimport IconPicker from './ui/icon-picker';\nimport Tooltip from './ui/tooltip';\n\nimport BubbleTheme from './themes/bubble';\nimport SnowTheme from './themes/snow';\n\n\nQuill.register({\n  'attributors/attribute/direction': DirectionAttribute,\n\n  'attributors/class/align': AlignClass,\n  'attributors/class/background': BackgroundClass,\n  'attributors/class/color': ColorClass,\n  'attributors/class/direction': DirectionClass,\n  'attributors/class/font': FontClass,\n  'attributors/class/size': SizeClass,\n\n  'attributors/style/align': AlignStyle,\n  'attributors/style/background': BackgroundStyle,\n  'attributors/style/color': ColorStyle,\n  'attributors/style/direction': DirectionStyle,\n  'attributors/style/font': FontStyle,\n  'attributors/style/size': SizeStyle\n}, true);\n\n\nQuill.register({\n  'formats/align': AlignClass,\n  'formats/direction': DirectionClass,\n  'formats/indent': Indent,\n\n  'formats/background': BackgroundStyle,\n  'formats/color': ColorStyle,\n  'formats/font': FontClass,\n  'formats/size': SizeClass,\n\n  'formats/blockquote': Blockquote,\n  'formats/code-block': CodeBlock,\n  'formats/header': Header,\n  'formats/list': List,\n\n  'formats/bold': Bold,\n  'formats/code': InlineCode,\n  'formats/italic': Italic,\n  'formats/link': Link,\n  'formats/script': Script,\n  'formats/strike': Strike,\n  'formats/underline': Underline,\n\n  'formats/image': Image,\n  'formats/video': Video,\n\n  'formats/list/item': ListItem,\n\n  'modules/formula': Formula,\n  'modules/syntax': Syntax,\n  'modules/toolbar': Toolbar,\n\n  'themes/bubble': BubbleTheme,\n  'themes/snow': SnowTheme,\n\n  'ui/icons': Icons,\n  'ui/picker': Picker,\n  'ui/icon-picker': IconPicker,\n  'ui/color-picker': ColorPicker,\n  'ui/tooltip': Tooltip\n}, true);\n\n\nmodule.exports = Quill;\n\n\n\n// WEBPACK FOOTER //\n// ./quill.js","import Parchment from 'parchment';\nimport Quill from './core/quill';\n\nimport Block, { BlockEmbed } from './blots/block';\nimport Break from './blots/break';\nimport Container from './blots/container';\nimport Cursor from './blots/cursor';\nimport Embed from './blots/embed';\nimport Inline from './blots/inline';\nimport Scroll from './blots/scroll';\nimport TextBlot from './blots/text';\n\nimport Clipboard from './modules/clipboard';\nimport History from './modules/history';\nimport Keyboard from './modules/keyboard';\n\nQuill.register({\n  'blots/block'        : Block,\n  'blots/block/embed'  : BlockEmbed,\n  'blots/break'        : Break,\n  'blots/container'    : Container,\n  'blots/cursor'       : Cursor,\n  'blots/embed'        : Embed,\n  'blots/inline'       : Inline,\n  'blots/scroll'       : Scroll,\n  'blots/text'         : TextBlot,\n\n  'modules/clipboard'  : Clipboard,\n  'modules/history'    : History,\n  'modules/keyboard'   : Keyboard\n});\n\nParchment.register(Block, Break, Cursor, Inline, Scroll, TextBlot);\n\n\nmodule.exports = Quill;\n\n\n\n// WEBPACK FOOTER //\n// ./core.js","\"use strict\";\nvar container_1 = require('./blot/abstract/container');\nvar format_1 = require('./blot/abstract/format');\nvar leaf_1 = require('./blot/abstract/leaf');\nvar scroll_1 = require('./blot/scroll');\nvar inline_1 = require('./blot/inline');\nvar block_1 = require('./blot/block');\nvar embed_1 = require('./blot/embed');\nvar text_1 = require('./blot/text');\nvar attributor_1 = require('./attributor/attributor');\nvar class_1 = require('./attributor/class');\nvar style_1 = require('./attributor/style');\nvar store_1 = require('./attributor/store');\nvar Registry = require('./registry');\nvar Parchment = {\n    Scope: Registry.Scope,\n    create: Registry.create,\n    find: Registry.find,\n    query: Registry.query,\n    register: Registry.register,\n    Container: container_1.default,\n    Format: format_1.default,\n    Leaf: leaf_1.default,\n    Embed: embed_1.default,\n    Scroll: scroll_1.default,\n    Block: block_1.default,\n    Inline: inline_1.default,\n    Text: text_1.default,\n    Attributor: {\n        Attribute: attributor_1.default,\n        Class: class_1.default,\n        Style: style_1.default,\n        Store: store_1.default\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Parchment;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/parchment.ts\n// module id = 2\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar linked_list_1 = require('../../collection/linked-list');\nvar shadow_1 = require('./shadow');\nvar Registry = require('../../registry');\nvar ContainerBlot = (function (_super) {\n    __extends(ContainerBlot, _super);\n    function ContainerBlot() {\n        _super.apply(this, arguments);\n    }\n    ContainerBlot.prototype.appendChild = function (other) {\n        this.insertBefore(other);\n    };\n    ContainerBlot.prototype.attach = function () {\n        var _this = this;\n        _super.prototype.attach.call(this);\n        this.children = new linked_list_1.default();\n        // Need to be reversed for if DOM nodes already in order\n        [].slice.call(this.domNode.childNodes).reverse().forEach(function (node) {\n            try {\n                var child = makeBlot(node);\n                _this.insertBefore(child, _this.children.head);\n            }\n            catch (err) {\n                if (err instanceof Registry.ParchmentError)\n                    return;\n                else\n                    throw err;\n            }\n        });\n    };\n    ContainerBlot.prototype.deleteAt = function (index, length) {\n        if (index === 0 && length === this.length()) {\n            return this.remove();\n        }\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.deleteAt(offset, length);\n        });\n    };\n    ContainerBlot.prototype.descendant = function (criteria, index) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if ((criteria.blotName == null && criteria(child)) ||\n            (criteria.blotName != null && child instanceof criteria)) {\n            return [child, offset];\n        }\n        else if (child instanceof ContainerBlot) {\n            return child.descendant(criteria, offset);\n        }\n        else {\n            return [null, -1];\n        }\n    };\n    ContainerBlot.prototype.descendants = function (criteria, index, length) {\n        if (index === void 0) { index = 0; }\n        if (length === void 0) { length = Number.MAX_VALUE; }\n        var descendants = [], lengthLeft = length;\n        this.children.forEachAt(index, length, function (child, index, length) {\n            if ((criteria.blotName == null && criteria(child)) ||\n                (criteria.blotName != null && child instanceof criteria)) {\n                descendants.push(child);\n            }\n            if (child instanceof ContainerBlot) {\n                descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n            }\n            lengthLeft -= length;\n        });\n        return descendants;\n    };\n    ContainerBlot.prototype.detach = function () {\n        this.children.forEach(function (child) {\n            child.detach();\n        });\n        _super.prototype.detach.call(this);\n    };\n    ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n        this.children.forEachAt(index, length, function (child, offset, length) {\n            child.formatAt(offset, length, name, value);\n        });\n    };\n    ContainerBlot.prototype.insertAt = function (index, value, def) {\n        var _a = this.children.find(index), child = _a[0], offset = _a[1];\n        if (child) {\n            child.insertAt(offset, value, def);\n        }\n        else {\n            var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n            this.appendChild(blot);\n        }\n    };\n    ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n        if (this.statics.allowedChildren != null && !this.statics.allowedChildren.some(function (child) {\n            return childBlot instanceof child;\n        })) {\n            throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n        }\n        childBlot.insertInto(this, refBlot);\n    };\n    ContainerBlot.prototype.length = function () {\n        return this.children.reduce(function (memo, child) {\n            return memo + child.length();\n        }, 0);\n    };\n    ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n        this.children.forEach(function (child) {\n            targetParent.insertBefore(child, refNode);\n        });\n    };\n    ContainerBlot.prototype.optimize = function () {\n        _super.prototype.optimize.call(this);\n        if (this.children.length === 0) {\n            if (this.statics.defaultChild != null) {\n                var child = Registry.create(this.statics.defaultChild);\n                this.appendChild(child);\n                child.optimize();\n            }\n            else {\n                this.remove();\n            }\n        }\n    };\n    ContainerBlot.prototype.path = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n        var position = [[this, index]];\n        if (child instanceof ContainerBlot) {\n            return position.concat(child.path(offset, inclusive));\n        }\n        else if (child != null) {\n            position.push([child, offset]);\n        }\n        return position;\n    };\n    ContainerBlot.prototype.removeChild = function (child) {\n        this.children.remove(child);\n    };\n    ContainerBlot.prototype.replace = function (target) {\n        if (target instanceof ContainerBlot) {\n            target.moveChildren(this);\n        }\n        _super.prototype.replace.call(this, target);\n    };\n    ContainerBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = this.clone();\n        this.parent.insertBefore(after, this.next);\n        this.children.forEachAt(index, this.length(), function (child, offset, length) {\n            child = child.split(offset, force);\n            after.appendChild(child);\n        });\n        return after;\n    };\n    ContainerBlot.prototype.unwrap = function () {\n        this.moveChildren(this.parent, this.next);\n        this.remove();\n    };\n    ContainerBlot.prototype.update = function (mutations) {\n        var _this = this;\n        var addedNodes = [], removedNodes = [];\n        mutations.forEach(function (mutation) {\n            if (mutation.target === _this.domNode && mutation.type === 'childList') {\n                addedNodes.push.apply(addedNodes, mutation.addedNodes);\n                removedNodes.push.apply(removedNodes, mutation.removedNodes);\n            }\n        });\n        removedNodes.forEach(function (node) {\n            if (node.parentNode != null &&\n                (document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY)) {\n                // Node has not actually been removed\n                return;\n            }\n            var blot = Registry.find(node);\n            if (blot == null)\n                return;\n            if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n                blot.detach();\n            }\n        });\n        addedNodes.filter(function (node) {\n            return node.parentNode == _this.domNode;\n        }).sort(function (a, b) {\n            if (a === b)\n                return 0;\n            if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n                return 1;\n            }\n            return -1;\n        }).forEach(function (node) {\n            var refBlot = null;\n            if (node.nextSibling != null) {\n                refBlot = Registry.find(node.nextSibling);\n            }\n            var blot = makeBlot(node);\n            if (blot.next != refBlot || blot.next == null) {\n                if (blot.parent != null) {\n                    blot.parent.removeChild(_this);\n                }\n                _this.insertBefore(blot, refBlot);\n            }\n        });\n    };\n    return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n    var blot = Registry.find(node);\n    if (blot == null) {\n        try {\n            blot = Registry.create(node);\n        }\n        catch (e) {\n            blot = Registry.create(Registry.Scope.INLINE);\n            [].slice.call(node.childNodes).forEach(function (child) {\n                blot.domNode.appendChild(child);\n            });\n            node.parentNode.replaceChild(blot.domNode, node);\n            blot.attach();\n        }\n    }\n    return blot;\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = ContainerBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/abstract/container.ts\n// module id = 3\n// module chunks = 0","\"use strict\";\nvar LinkedList = (function () {\n    function LinkedList() {\n        this.head = this.tail = undefined;\n        this.length = 0;\n    }\n    LinkedList.prototype.append = function () {\n        var nodes = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            nodes[_i - 0] = arguments[_i];\n        }\n        this.insertBefore(nodes[0], undefined);\n        if (nodes.length > 1) {\n            this.append.apply(this, nodes.slice(1));\n        }\n    };\n    LinkedList.prototype.contains = function (node) {\n        var cur, next = this.iterator();\n        while (cur = next()) {\n            if (cur === node)\n                return true;\n        }\n        return false;\n    };\n    LinkedList.prototype.insertBefore = function (node, refNode) {\n        node.next = refNode;\n        if (refNode != null) {\n            node.prev = refNode.prev;\n            if (refNode.prev != null) {\n                refNode.prev.next = node;\n            }\n            refNode.prev = node;\n            if (refNode === this.head) {\n                this.head = node;\n            }\n        }\n        else if (this.tail != null) {\n            this.tail.next = node;\n            node.prev = this.tail;\n            this.tail = node;\n        }\n        else {\n            node.prev = undefined;\n            this.head = this.tail = node;\n        }\n        this.length += 1;\n    };\n    LinkedList.prototype.offset = function (target) {\n        var index = 0, cur = this.head;\n        while (cur != null) {\n            if (cur === target)\n                return index;\n            index += cur.length();\n            cur = cur.next;\n        }\n        return -1;\n    };\n    LinkedList.prototype.remove = function (node) {\n        if (!this.contains(node))\n            return;\n        if (node.prev != null)\n            node.prev.next = node.next;\n        if (node.next != null)\n            node.next.prev = node.prev;\n        if (node === this.head)\n            this.head = node.next;\n        if (node === this.tail)\n            this.tail = node.prev;\n        this.length -= 1;\n    };\n    LinkedList.prototype.iterator = function (curNode) {\n        if (curNode === void 0) { curNode = this.head; }\n        // TODO use yield when we can\n        return function () {\n            var ret = curNode;\n            if (curNode != null)\n                curNode = curNode.next;\n            return ret;\n        };\n    };\n    LinkedList.prototype.find = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        var cur, next = this.iterator();\n        while (cur = next()) {\n            var length_1 = cur.length();\n            if (index < length_1 || (inclusive && index === length_1 && (cur.next == null || cur.next.length() !== 0))) {\n                return [cur, index];\n            }\n            index -= length_1;\n        }\n        return [null, 0];\n    };\n    LinkedList.prototype.forEach = function (callback) {\n        var cur, next = this.iterator();\n        while (cur = next()) {\n            callback(cur);\n        }\n    };\n    LinkedList.prototype.forEachAt = function (index, length, callback) {\n        if (length <= 0)\n            return;\n        var _a = this.find(index), startNode = _a[0], offset = _a[1];\n        var cur, curIndex = index - offset, next = this.iterator(startNode);\n        while ((cur = next()) && curIndex < index + length) {\n            var curLength = cur.length();\n            if (index > curIndex) {\n                callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n            }\n            else {\n                callback(cur, 0, Math.min(curLength, index + length - curIndex));\n            }\n            curIndex += curLength;\n        }\n    };\n    LinkedList.prototype.map = function (callback) {\n        return this.reduce(function (memo, cur) {\n            memo.push(callback(cur));\n            return memo;\n        }, []);\n    };\n    LinkedList.prototype.reduce = function (callback, memo) {\n        var cur, next = this.iterator();\n        while (cur = next()) {\n            memo = callback(memo, cur);\n        }\n        return memo;\n    };\n    return LinkedList;\n}());\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = LinkedList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/collection/linked-list.ts\n// module id = 4\n// module chunks = 0","\"use strict\";\nvar Registry = require('../../registry');\nvar ShadowBlot = (function () {\n    function ShadowBlot(domNode) {\n        this.domNode = domNode;\n        this.attach();\n    }\n    Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n        // Hack for accessing inherited static methods\n        get: function () {\n            return this.constructor;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ShadowBlot.create = function (value) {\n        if (this.tagName == null) {\n            throw new Registry.ParchmentError('Blot definition missing tagName');\n        }\n        var node;\n        if (Array.isArray(this.tagName)) {\n            if (typeof value === 'string') {\n                value = value.toUpperCase();\n                if (parseInt(value).toString() === value) {\n                    value = parseInt(value);\n                }\n            }\n            if (typeof value === 'number') {\n                node = document.createElement(this.tagName[value - 1]);\n            }\n            else if (this.tagName.indexOf(value) > -1) {\n                node = document.createElement(value);\n            }\n            else {\n                node = document.createElement(this.tagName[0]);\n            }\n        }\n        else {\n            node = document.createElement(this.tagName);\n        }\n        if (this.className) {\n            node.classList.add(this.className);\n        }\n        return node;\n    };\n    ShadowBlot.prototype.attach = function () {\n        this.domNode[Registry.DATA_KEY] = { blot: this };\n    };\n    ShadowBlot.prototype.clone = function () {\n        var domNode = this.domNode.cloneNode();\n        return Registry.create(domNode);\n    };\n    ShadowBlot.prototype.detach = function () {\n        if (this.parent != null)\n            this.parent.removeChild(this);\n        delete this.domNode[Registry.DATA_KEY];\n    };\n    ShadowBlot.prototype.deleteAt = function (index, length) {\n        var blot = this.isolate(index, length);\n        blot.remove();\n    };\n    ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n        var blot = this.isolate(index, length);\n        if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n            blot.wrap(name, value);\n        }\n        else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n            var parent_1 = Registry.create(this.statics.scope);\n            blot.wrap(parent_1);\n            parent_1.format(name, value);\n        }\n    };\n    ShadowBlot.prototype.insertAt = function (index, value, def) {\n        var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n        var ref = this.split(index);\n        this.parent.insertBefore(blot, ref);\n    };\n    ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n        if (this.parent != null) {\n            this.parent.children.remove(this);\n        }\n        parentBlot.children.insertBefore(this, refBlot);\n        if (refBlot != null) {\n            var refDomNode = refBlot.domNode;\n        }\n        if (this.next == null || this.domNode.nextSibling != refDomNode) {\n            parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n        }\n        this.parent = parentBlot;\n    };\n    ShadowBlot.prototype.isolate = function (index, length) {\n        var target = this.split(index);\n        target.split(length);\n        return target;\n    };\n    ShadowBlot.prototype.length = function () {\n        return 1;\n    };\n    ;\n    ShadowBlot.prototype.offset = function (root) {\n        if (root === void 0) { root = this.parent; }\n        if (this.parent == null || this == root)\n            return 0;\n        return this.parent.children.offset(this) + this.parent.offset(root);\n    };\n    ShadowBlot.prototype.optimize = function () {\n        // TODO clean up once we use WeakMap\n        if (this.domNode[Registry.DATA_KEY] != null) {\n            delete this.domNode[Registry.DATA_KEY].mutations;\n        }\n    };\n    ShadowBlot.prototype.remove = function () {\n        if (this.domNode.parentNode != null) {\n            this.domNode.parentNode.removeChild(this.domNode);\n        }\n        this.detach();\n    };\n    ShadowBlot.prototype.replace = function (target) {\n        if (target.parent == null)\n            return;\n        target.parent.insertBefore(this, target.next);\n        target.remove();\n    };\n    ShadowBlot.prototype.replaceWith = function (name, value) {\n        var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n        replacement.replace(this);\n        return replacement;\n    };\n    ShadowBlot.prototype.split = function (index, force) {\n        return index === 0 ? this : this.next;\n    };\n    ShadowBlot.prototype.update = function (mutations) {\n        if (mutations === void 0) { mutations = []; }\n        // Nothing to do by default\n    };\n    ShadowBlot.prototype.wrap = function (name, value) {\n        var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n        if (this.parent != null) {\n            this.parent.insertBefore(wrapper, this.next);\n        }\n        wrapper.appendChild(this);\n        return wrapper;\n    };\n    ShadowBlot.blotName = 'abstract';\n    return ShadowBlot;\n}());\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = ShadowBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/abstract/shadow.ts\n// module id = 5\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar ParchmentError = (function (_super) {\n    __extends(ParchmentError, _super);\n    function ParchmentError(message) {\n        message = '[Parchment] ' + message;\n        _super.call(this, message);\n        this.message = message;\n        this.name = this.constructor.name;\n    }\n    return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\n(function (Scope) {\n    Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n    Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n    Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n    Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n    Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n    Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n    Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n    Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n    Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n    Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n    Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(exports.Scope || (exports.Scope = {}));\nvar Scope = exports.Scope;\n;\nfunction create(input, value) {\n    var match = query(input);\n    if (match == null) {\n        throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n    }\n    var BlotClass = match;\n    var node = input instanceof Node ? input : BlotClass.create(value);\n    return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n    if (bubble === void 0) { bubble = false; }\n    if (node == null)\n        return null;\n    if (node[exports.DATA_KEY] != null)\n        return node[exports.DATA_KEY].blot;\n    if (bubble)\n        return find(node.parentNode, bubble);\n    return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n    if (scope === void 0) { scope = Scope.ANY; }\n    var match;\n    if (typeof query === 'string') {\n        match = types[query] || attributes[query];\n    }\n    else if (query instanceof Text) {\n        match = types['text'];\n    }\n    else if (typeof query === 'number') {\n        if (query & Scope.LEVEL & Scope.BLOCK) {\n            match = types['block'];\n        }\n        else if (query & Scope.LEVEL & Scope.INLINE) {\n            match = types['inline'];\n        }\n    }\n    else if (query instanceof HTMLElement) {\n        var names = (query.getAttribute('class') || '').split(/\\s+/);\n        for (var i in names) {\n            match = classes[names[i]];\n            if (match)\n                break;\n        }\n        match = match || tags[query.tagName];\n    }\n    if (match == null) {\n        if (query instanceof Node) {\n            console.log(query.nodeType);\n        }\n    }\n    if (match == null)\n        return null;\n    if ((scope & Scope.LEVEL & match.scope) && (scope & Scope.TYPE & match.scope))\n        return match;\n    return null;\n}\nexports.query = query;\nfunction register() {\n    var Definitions = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        Definitions[_i - 0] = arguments[_i];\n    }\n    if (Definitions.length > 1) {\n        return Definitions.map(function (d) {\n            return register(d);\n        });\n    }\n    var Definition = Definitions[0];\n    if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n        throw new ParchmentError('Invalid definition');\n    }\n    else if (Definition.blotName === 'abstract') {\n        throw new ParchmentError('Cannot register abstract class');\n    }\n    types[Definition.blotName || Definition.attrName] = Definition;\n    if (typeof Definition.keyName === 'string') {\n        attributes[Definition.keyName] = Definition;\n    }\n    else {\n        if (Definition.className != null) {\n            classes[Definition.className] = Definition;\n        }\n        if (Definition.tagName != null) {\n            if (Array.isArray(Definition.tagName)) {\n                Definition.tagName = Definition.tagName.map(function (tagName) {\n                    return tagName.toUpperCase();\n                });\n            }\n            else {\n                Definition.tagName = Definition.tagName.toUpperCase();\n            }\n            var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n            tagNames.forEach(function (tag) {\n                if (tags[tag] == null || Definition.className == null) {\n                    tags[tag] = Definition;\n                }\n            });\n        }\n    }\n    return Definition;\n}\nexports.register = register;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/registry.ts\n// module id = 6\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar attributor_1 = require('../../attributor/attributor');\nvar store_1 = require('../../attributor/store');\nvar container_1 = require('./container');\nvar Registry = require('../../registry');\nvar FormatBlot = (function (_super) {\n    __extends(FormatBlot, _super);\n    function FormatBlot() {\n        _super.apply(this, arguments);\n    }\n    FormatBlot.formats = function (domNode) {\n        if (typeof this.tagName === 'string') {\n            return true;\n        }\n        else if (Array.isArray(this.tagName)) {\n            return domNode.tagName.toLowerCase();\n        }\n        return undefined;\n    };\n    FormatBlot.prototype.attach = function () {\n        _super.prototype.attach.call(this);\n        this.attributes = new store_1.default(this.domNode);\n    };\n    FormatBlot.prototype.format = function (name, value) {\n        var format = Registry.query(name);\n        if (format instanceof attributor_1.default) {\n            this.attributes.attribute(format, value);\n        }\n        else if (value) {\n            if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n                this.replaceWith(name, value);\n            }\n        }\n    };\n    FormatBlot.prototype.formats = function () {\n        var formats = this.attributes.values();\n        var format = this.statics.formats(this.domNode);\n        if (format != null) {\n            formats[this.statics.blotName] = format;\n        }\n        return formats;\n    };\n    FormatBlot.prototype.replaceWith = function (name, value) {\n        var replacement = _super.prototype.replaceWith.call(this, name, value);\n        this.attributes.copy(replacement);\n        return replacement;\n    };\n    FormatBlot.prototype.update = function (mutations) {\n        var _this = this;\n        _super.prototype.update.call(this, mutations);\n        if (mutations.some(function (mutation) {\n            return mutation.target === _this.domNode && mutation.type === 'attributes';\n        })) {\n            this.attributes.build();\n        }\n    };\n    FormatBlot.prototype.wrap = function (name, value) {\n        var wrapper = _super.prototype.wrap.call(this, name, value);\n        if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n            this.attributes.move(wrapper);\n        }\n        return wrapper;\n    };\n    return FormatBlot;\n}(container_1.default));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = FormatBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/abstract/format.ts\n// module id = 7\n// module chunks = 0","\"use strict\";\nvar Registry = require('../registry');\nvar Attributor = (function () {\n    function Attributor(attrName, keyName, options) {\n        if (options === void 0) { options = {}; }\n        this.attrName = attrName;\n        this.keyName = keyName;\n        var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n        if (options.scope != null) {\n            // Ignore type bits, force attribute bit\n            this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n        }\n        else {\n            this.scope = Registry.Scope.ATTRIBUTE;\n        }\n        if (options.whitelist != null)\n            this.whitelist = options.whitelist;\n    }\n    Attributor.keys = function (node) {\n        return [].map.call(node.attributes, function (item) {\n            return item.name;\n        });\n    };\n    Attributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        node.setAttribute(this.keyName, value);\n        return true;\n    };\n    Attributor.prototype.canAdd = function (node, value) {\n        var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n        if (match != null && (this.whitelist == null || this.whitelist.indexOf(value) > -1)) {\n            return true;\n        }\n        return false;\n    };\n    Attributor.prototype.remove = function (node) {\n        node.removeAttribute(this.keyName);\n    };\n    Attributor.prototype.value = function (node) {\n        return node.getAttribute(this.keyName);\n    };\n    return Attributor;\n}());\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Attributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/attributor/attributor.ts\n// module id = 8\n// module chunks = 0","\"use strict\";\nvar attributor_1 = require('./attributor');\nvar class_1 = require('./class');\nvar style_1 = require('./style');\nvar Registry = require('../registry');\nvar AttributorStore = (function () {\n    function AttributorStore(domNode) {\n        this.attributes = {};\n        this.domNode = domNode;\n        this.build();\n    }\n    AttributorStore.prototype.attribute = function (attribute, value) {\n        if (value) {\n            if (attribute.add(this.domNode, value)) {\n                if (attribute.value(this.domNode) != null) {\n                    this.attributes[attribute.attrName] = attribute;\n                }\n                else {\n                    delete this.attributes[attribute.attrName];\n                }\n            }\n        }\n        else {\n            attribute.remove(this.domNode);\n            delete this.attributes[attribute.attrName];\n        }\n    };\n    AttributorStore.prototype.build = function () {\n        var _this = this;\n        this.attributes = {};\n        var attributes = attributor_1.default.keys(this.domNode);\n        var classes = class_1.default.keys(this.domNode);\n        var styles = style_1.default.keys(this.domNode);\n        attributes.concat(classes).concat(styles).forEach(function (name) {\n            var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n            if (attr instanceof attributor_1.default) {\n                _this.attributes[attr.attrName] = attr;\n            }\n        });\n    };\n    AttributorStore.prototype.copy = function (target) {\n        var _this = this;\n        Object.keys(this.attributes).forEach(function (key) {\n            var value = _this.attributes[key].value(_this.domNode);\n            target.format(key, value);\n        });\n    };\n    AttributorStore.prototype.move = function (target) {\n        var _this = this;\n        this.copy(target);\n        Object.keys(this.attributes).forEach(function (key) {\n            _this.attributes[key].remove(_this.domNode);\n        });\n        this.attributes = {};\n    };\n    AttributorStore.prototype.values = function () {\n        var _this = this;\n        return Object.keys(this.attributes).reduce(function (attributes, name) {\n            attributes[name] = _this.attributes[name].value(_this.domNode);\n            return attributes;\n        }, {});\n    };\n    return AttributorStore;\n}());\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = AttributorStore;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/attributor/store.ts\n// module id = 9\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar attributor_1 = require('./attributor');\nfunction match(node, prefix) {\n    var className = node.getAttribute('class') || '';\n    return className.split(/\\s+/).filter(function (name) {\n        return name.indexOf(prefix + \"-\") === 0;\n    });\n}\nvar ClassAttributor = (function (_super) {\n    __extends(ClassAttributor, _super);\n    function ClassAttributor() {\n        _super.apply(this, arguments);\n    }\n    ClassAttributor.keys = function (node) {\n        return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n            return name.split('-').slice(0, -1).join('-');\n        });\n    };\n    ClassAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        this.remove(node);\n        node.classList.add(this.keyName + \"-\" + value);\n        return true;\n    };\n    ClassAttributor.prototype.remove = function (node) {\n        var matches = match(node, this.keyName);\n        matches.forEach(function (name) {\n            node.classList.remove(name);\n        });\n        if (node.classList.length === 0) {\n            node.removeAttribute('class');\n        }\n    };\n    ClassAttributor.prototype.value = function (node) {\n        var result = match(node, this.keyName)[0] || '';\n        return result.slice(this.keyName.length + 1); // +1 for hyphen\n    };\n    return ClassAttributor;\n}(attributor_1.default));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = ClassAttributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/attributor/class.ts\n// module id = 10\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar attributor_1 = require('./attributor');\nfunction camelize(name) {\n    var parts = name.split('-');\n    var rest = parts.slice(1).map(function (part) {\n        return part[0].toUpperCase() + part.slice(1);\n    }).join('');\n    return parts[0] + rest;\n}\nvar StyleAttributor = (function (_super) {\n    __extends(StyleAttributor, _super);\n    function StyleAttributor() {\n        _super.apply(this, arguments);\n    }\n    StyleAttributor.keys = function (node) {\n        return (node.getAttribute('style') || '').split(';').map(function (value) {\n            var arr = value.split(':');\n            return arr[0].trim();\n        });\n    };\n    StyleAttributor.prototype.add = function (node, value) {\n        if (!this.canAdd(node, value))\n            return false;\n        node.style[camelize(this.keyName)] = value;\n        return true;\n    };\n    StyleAttributor.prototype.remove = function (node) {\n        node.style[camelize(this.keyName)] = '';\n        if (!node.getAttribute('style')) {\n            node.removeAttribute('style');\n        }\n    };\n    StyleAttributor.prototype.value = function (node) {\n        return node.style[camelize(this.keyName)];\n    };\n    return StyleAttributor;\n}(attributor_1.default));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = StyleAttributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/attributor/style.ts\n// module id = 11\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar shadow_1 = require('./shadow');\nvar Registry = require('../../registry');\nvar LeafBlot = (function (_super) {\n    __extends(LeafBlot, _super);\n    function LeafBlot() {\n        _super.apply(this, arguments);\n    }\n    LeafBlot.value = function (domNode) {\n        return true;\n    };\n    LeafBlot.prototype.index = function (node, offset) {\n        if (node !== this.domNode)\n            return -1;\n        return Math.min(offset, 1);\n    };\n    LeafBlot.prototype.position = function (index, inclusive) {\n        var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n        if (index > 0)\n            offset += 1;\n        return [this.parent.domNode, offset];\n    };\n    LeafBlot.prototype.value = function () {\n        return (_a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a);\n        var _a;\n    };\n    LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n    return LeafBlot;\n}(shadow_1.default));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = LeafBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/abstract/leaf.ts\n// module id = 12\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar container_1 = require('./abstract/container');\nvar Registry = require('../registry');\nvar OBSERVER_CONFIG = {\n    attributes: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = (function (_super) {\n    __extends(ScrollBlot, _super);\n    function ScrollBlot(node) {\n        var _this = this;\n        _super.call(this, node);\n        this.parent = null;\n        this.observer = new MutationObserver(function (mutations) {\n            _this.update(mutations);\n        });\n        this.observer.observe(this.domNode, OBSERVER_CONFIG);\n    }\n    ScrollBlot.prototype.detach = function () {\n        _super.prototype.detach.call(this);\n        this.observer.disconnect();\n    };\n    ScrollBlot.prototype.deleteAt = function (index, length) {\n        this.update();\n        if (index === 0 && length === this.length()) {\n            this.children.forEach(function (child) {\n                child.remove();\n            });\n        }\n        else {\n            _super.prototype.deleteAt.call(this, index, length);\n        }\n    };\n    ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n        this.update();\n        _super.prototype.formatAt.call(this, index, length, name, value);\n    };\n    ScrollBlot.prototype.insertAt = function (index, value, def) {\n        this.update();\n        _super.prototype.insertAt.call(this, index, value, def);\n    };\n    ScrollBlot.prototype.optimize = function (mutations) {\n        var _this = this;\n        if (mutations === void 0) { mutations = []; }\n        _super.prototype.optimize.call(this);\n        mutations.push.apply(mutations, this.observer.takeRecords());\n        // TODO use WeakMap\n        var mark = function (blot, markParent) {\n            if (markParent === void 0) { markParent = true; }\n            if (blot == null || blot === _this)\n                return;\n            if (blot.domNode.parentNode == null)\n                return;\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                blot.domNode[Registry.DATA_KEY].mutations = [];\n            }\n            if (markParent)\n                mark(blot.parent);\n        };\n        var optimize = function (blot) {\n            if (blot.domNode[Registry.DATA_KEY] == null || blot.domNode[Registry.DATA_KEY].mutations == null) {\n                return;\n            }\n            if (blot instanceof container_1.default) {\n                blot.children.forEach(optimize);\n            }\n            blot.optimize();\n        };\n        var remaining = mutations;\n        for (var i = 0; remaining.length > 0; i += 1) {\n            if (i >= MAX_OPTIMIZE_ITERATIONS) {\n                throw new Error('[Parchment] Maximum optimize iterations reached');\n            }\n            remaining.forEach(function (mutation) {\n                var blot = Registry.find(mutation.target, true);\n                if (blot == null)\n                    return;\n                if (blot.domNode === mutation.target) {\n                    if (mutation.type === 'childList') {\n                        mark(Registry.find(mutation.previousSibling, false));\n                        [].forEach.call(mutation.addedNodes, function (node) {\n                            var child = Registry.find(node, false);\n                            mark(child, false);\n                            if (child instanceof container_1.default) {\n                                child.children.forEach(function (grandChild) {\n                                    mark(grandChild, false);\n                                });\n                            }\n                        });\n                    }\n                    else if (mutation.type === 'attributes') {\n                        mark(blot.prev);\n                    }\n                }\n                mark(blot);\n            });\n            this.children.forEach(optimize);\n            remaining = this.observer.takeRecords();\n            mutations.push.apply(mutations, remaining);\n        }\n    };\n    ScrollBlot.prototype.update = function (mutations) {\n        var _this = this;\n        mutations = mutations || this.observer.takeRecords();\n        // TODO use WeakMap\n        mutations.map(function (mutation) {\n            var blot = Registry.find(mutation.target, true);\n            if (blot == null)\n                return;\n            if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n                blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n                return blot;\n            }\n            else {\n                blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n                return null;\n            }\n        }).forEach(function (blot) {\n            if (blot == null || blot === _this || blot.domNode[Registry.DATA_KEY] == null)\n                return;\n            blot.update(blot.domNode[Registry.DATA_KEY].mutations || []);\n        });\n        if (this.domNode[Registry.DATA_KEY].mutations != null) {\n            _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations);\n        }\n        this.optimize(mutations);\n    };\n    ScrollBlot.blotName = 'scroll';\n    ScrollBlot.defaultChild = 'block';\n    ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n    ScrollBlot.tagName = 'DIV';\n    return ScrollBlot;\n}(container_1.default));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = ScrollBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/scroll.ts\n// module id = 13\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar format_1 = require('./abstract/format');\nvar Registry = require('../registry');\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n    if (Object.keys(obj1).length !== Object.keys(obj2).length)\n        return false;\n    for (var prop in obj1) {\n        if (obj1[prop] !== obj2[prop])\n            return false;\n    }\n    return true;\n}\nvar InlineBlot = (function (_super) {\n    __extends(InlineBlot, _super);\n    function InlineBlot() {\n        _super.apply(this, arguments);\n    }\n    InlineBlot.formats = function (domNode) {\n        if (domNode.tagName === InlineBlot.tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    InlineBlot.prototype.format = function (name, value) {\n        var _this = this;\n        if (name === this.statics.blotName && !value) {\n            this.children.forEach(function (child) {\n                if (!(child instanceof format_1.default)) {\n                    child = child.wrap(InlineBlot.blotName, true);\n                }\n                _this.attributes.copy(child);\n            });\n            this.unwrap();\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    InlineBlot.prototype.formatAt = function (index, length, name, value) {\n        if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n            var blot = this.isolate(index, length);\n            blot.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    InlineBlot.prototype.optimize = function () {\n        _super.prototype.optimize.call(this);\n        var formats = this.formats();\n        if (Object.keys(formats).length === 0) {\n            return this.unwrap(); // unformatted span\n        }\n        var next = this.next;\n        if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n            next.moveChildren(this);\n            next.remove();\n        }\n    };\n    InlineBlot.blotName = 'inline';\n    InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n    InlineBlot.tagName = 'SPAN';\n    return InlineBlot;\n}(format_1.default));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = InlineBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/inline.ts\n// module id = 14\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar format_1 = require('./abstract/format');\nvar Registry = require('../registry');\nvar BlockBlot = (function (_super) {\n    __extends(BlockBlot, _super);\n    function BlockBlot() {\n        _super.apply(this, arguments);\n    }\n    BlockBlot.formats = function (domNode) {\n        var tagName = Registry.query(BlockBlot.blotName).tagName;\n        if (domNode.tagName === tagName)\n            return undefined;\n        return _super.formats.call(this, domNode);\n    };\n    BlockBlot.prototype.format = function (name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n            return;\n        }\n        else if (name === this.statics.blotName && !value) {\n            this.replaceWith(BlockBlot.blotName);\n        }\n        else {\n            _super.prototype.format.call(this, name, value);\n        }\n    };\n    BlockBlot.prototype.formatAt = function (index, length, name, value) {\n        if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    BlockBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n            // Insert text or inline\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n        else {\n            var after = this.split(index);\n            var blot = Registry.create(value, def);\n            after.parent.insertBefore(blot, after);\n        }\n    };\n    BlockBlot.blotName = 'block';\n    BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n    BlockBlot.tagName = 'P';\n    return BlockBlot;\n}(format_1.default));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = BlockBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/block.ts\n// module id = 15\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar leaf_1 = require('./abstract/leaf');\nvar EmbedBlot = (function (_super) {\n    __extends(EmbedBlot, _super);\n    function EmbedBlot() {\n        _super.apply(this, arguments);\n    }\n    EmbedBlot.formats = function (domNode) {\n        return undefined;\n    };\n    EmbedBlot.prototype.format = function (name, value) {\n        // super.formatAt wraps, which is what we want in general,\n        // but this allows subclasses to overwrite for formats\n        // that just apply to particular embeds\n        _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n    };\n    EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n        if (index === 0 && length === this.length()) {\n            this.format(name, value);\n        }\n        else {\n            _super.prototype.formatAt.call(this, index, length, name, value);\n        }\n    };\n    EmbedBlot.prototype.formats = function () {\n        return this.statics.formats(this.domNode);\n    };\n    return EmbedBlot;\n}(leaf_1.default));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = EmbedBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/embed.ts\n// module id = 16\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar leaf_1 = require('./abstract/leaf');\nvar Registry = require('../registry');\nvar TextBlot = (function (_super) {\n    __extends(TextBlot, _super);\n    function TextBlot(node) {\n        _super.call(this, node);\n        this.text = this.statics.value(this.domNode);\n    }\n    TextBlot.create = function (value) {\n        return document.createTextNode(value);\n    };\n    TextBlot.value = function (domNode) {\n        return domNode.data;\n    };\n    TextBlot.prototype.deleteAt = function (index, length) {\n        this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n    };\n    TextBlot.prototype.index = function (node, offset) {\n        if (this.domNode === node) {\n            return offset;\n        }\n        return -1;\n    };\n    TextBlot.prototype.insertAt = function (index, value, def) {\n        if (def == null) {\n            this.text = this.text.slice(0, index) + value + this.text.slice(index);\n            this.domNode.data = this.text;\n        }\n        else {\n            _super.prototype.insertAt.call(this, index, value, def);\n        }\n    };\n    TextBlot.prototype.length = function () {\n        return this.text.length;\n    };\n    TextBlot.prototype.optimize = function () {\n        _super.prototype.optimize.call(this);\n        this.text = this.statics.value(this.domNode);\n        if (this.text.length === 0) {\n            this.remove();\n        }\n        else if (this.next instanceof TextBlot && this.next.prev === this) {\n            this.insertAt(this.length(), this.next.value());\n            this.next.remove();\n        }\n    };\n    TextBlot.prototype.position = function (index, inclusive) {\n        if (inclusive === void 0) { inclusive = false; }\n        return [this.domNode, index];\n    };\n    TextBlot.prototype.split = function (index, force) {\n        if (force === void 0) { force = false; }\n        if (!force) {\n            if (index === 0)\n                return this;\n            if (index === this.length())\n                return this.next;\n        }\n        var after = Registry.create(this.domNode.splitText(index));\n        this.parent.insertBefore(after, this.next);\n        this.text = this.statics.value(this.domNode);\n        return after;\n    };\n    TextBlot.prototype.update = function (mutations) {\n        var _this = this;\n        if (mutations.some(function (mutation) {\n            return mutation.type === 'characterData' && mutation.target === _this.domNode;\n        })) {\n            this.text = this.statics.value(this.domNode);\n        }\n    };\n    TextBlot.prototype.value = function () {\n        return this.text;\n    };\n    TextBlot.blotName = 'text';\n    TextBlot.scope = Registry.Scope.INLINE_BLOT;\n    return TextBlot;\n}(leaf_1.default));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = TextBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../parchment/src/blot/text.ts\n// module id = 17\n// module chunks = 0","import './polyfill';\nimport Delta from 'quill-delta';\nimport Editor from './editor';\nimport Emitter from './emitter';\nimport Module from './module';\nimport Parchment from 'parchment';\nimport Selection, { Range } from './selection';\nimport extend from 'extend';\nimport logger from './logger';\nimport Theme from './theme';\n\nlet debug = logger('quill');\n\n\nclass Quill {\n  static debug(limit) {\n    if (limit === true) {\n      limit = 'log';\n    }\n    logger.level(limit);\n  }\n\n  static import(name) {\n    if (this.imports[name] == null) {\n      debug.error(`Cannot import ${name}. Are you sure it was registered?`);\n    }\n    return this.imports[name];\n  }\n\n  static register(path, target, overwrite = false) {\n    if (typeof path !== 'string') {\n      let name = path.attrName || path.blotName;\n      if (typeof name === 'string') {\n        // register(Blot | Attributor, overwrite)\n        this.register('formats/' + name, path, target);\n      } else {\n        Object.keys(path).forEach((key) => {\n          this.register(key, path[key], target);\n        });\n      }\n    } else {\n      if (this.imports[path] != null && !overwrite) {\n        debug.warn(`Overwriting ${path} with`, target);\n      }\n      this.imports[path] = target;\n      if ((path.startsWith('blots/') || path.startsWith('formats/')) &&\n          target.blotName !== 'abstract') {\n        Parchment.register(target);\n      }\n    }\n  }\n\n  constructor(container, options = {}) {\n    this.options = expandConfig(container, options);\n    this.container = this.options.container;\n    if (this.container == null) {\n      return debug.error('Invalid Quill container', container);\n    }\n    if (this.options.debug) {\n      Quill.debug(this.options.debug);\n    }\n    let html = this.container.innerHTML.trim();\n    this.container.classList.add('ql-container');\n    this.container.innerHTML = '';\n    this.root = this.addContainer('ql-editor');\n    this.root.classList.add('ql-blank');\n    this.emitter = new Emitter();\n    this.scroll = Parchment.create(this.root, {\n      emitter: this.emitter,\n      whitelist: this.options.formats\n    });\n    this.editor = new Editor(this.scroll);\n    this.selection = new Selection(this.scroll, this.emitter);\n    this.theme = new this.options.theme(this, this.options);\n    this.keyboard = this.theme.addModule('keyboard');\n    this.clipboard = this.theme.addModule('clipboard');\n    this.history = this.theme.addModule('history');\n    this.theme.init();\n    this.emitter.on(Emitter.events.EDITOR_CHANGE, (type) => {\n      if (type === Emitter.events.TEXT_CHANGE) {\n        this.root.classList.toggle('ql-blank', this.editor.isBlank());\n      }\n    });\n    this.emitter.on(Emitter.events.SCROLL_UPDATE, (source, mutations) => {\n      let range = this.selection.lastRange;\n      let index = range && range.length === 0 ? range.index : undefined;\n      modify.call(this, () => {\n        return this.editor.update(null, mutations, index);\n      }, source);\n    });\n    let contents = this.clipboard.convert(`<div class='ql-editor' style=\"white-space: normal;\">${html}<p><br></p></div>`);\n    this.setContents(contents);\n    this.history.clear();\n    if (this.options.placeholder) {\n      this.root.setAttribute('data-placeholder', this.options.placeholder);\n    }\n    if (this.options.readOnly) {\n      this.disable();\n    }\n  }\n\n  addContainer(container, refNode = null) {\n    if (typeof container === 'string') {\n      let className = container;\n      container = document.createElement('div');\n      container.classList.add(className);\n    }\n    this.container.insertBefore(container, refNode);\n    return container;\n  }\n\n  blur() {\n    this.selection.setRange(null);\n  }\n\n  deleteText(index, length, source) {\n    [index, length, , source] = overload(index, length, source);\n    return modify.call(this, () => {\n      return this.editor.deleteText(index, length);\n    }, source, index, -1*length);\n  }\n\n  disable() {\n    this.enable(false);\n  }\n\n  enable(enabled = true) {\n    this.scroll.enable(enabled);\n    this.container.classList.toggle('ql-disabled', !enabled);\n    if (!enabled) {\n      this.blur();\n    }\n  }\n\n  focus() {\n    this.selection.focus();\n    this.selection.scrollIntoView();\n  }\n\n  format(name, value, source = Emitter.sources.API) {\n    return modify.call(this, () => {\n      let range = this.getSelection(true);\n      let change = new Delta();\n      if (range == null) {\n        return change;\n      } else if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n        change = this.editor.formatLine(range.index, range.length, { [name]: value });\n      } else if (range.length === 0) {\n        this.selection.format(name, value);\n        return change;\n      } else {\n        change = this.editor.formatText(range.index, range.length, { [name]: value });\n      }\n      this.setSelection(range, Emitter.sources.SILENT);\n      return change;\n    }, source);\n  }\n\n  formatLine(index, length, name, value, source) {\n    let formats;\n    [index, length, formats, source] = overload(index, length, name, value, source);\n    return modify.call(this, () => {\n      return this.editor.formatLine(index, length, formats);\n    }, source, index, 0);\n  }\n\n  formatText(index, length, name, value, source) {\n    let formats;\n    [index, length, formats, source] = overload(index, length, name, value, source);\n    return modify.call(this, () => {\n      return this.editor.formatText(index, length, formats);\n    }, source, index, 0);\n  }\n\n  getBounds(index, length = 0) {\n    if (typeof index === 'number') {\n      return this.selection.getBounds(index, length);\n    } else {\n      return this.selection.getBounds(index.index, index.length);\n    }\n  }\n\n  getContents(index = 0, length = this.getLength() - index) {\n    [index, length] = overload(index, length);\n    return this.editor.getContents(index, length);\n  }\n\n  getFormat(index = this.getSelection(), length = 0) {\n    if (typeof index === 'number') {\n      return this.editor.getFormat(index, length);\n    } else {\n      return this.editor.getFormat(index.index, index.length);\n    }\n  }\n\n  getLength() {\n    return this.scroll.length();\n  }\n\n  getModule(name) {\n    return this.theme.modules[name];\n  }\n\n  getSelection(focus = false) {\n    if (focus) this.focus();\n    this.update();  // Make sure we access getRange with editor in consistent state\n    return this.selection.getRange()[0];\n  }\n\n  getText(index = 0, length = this.getLength() - index) {\n    [index, length] = overload(index, length);\n    return this.editor.getText(index, length);\n  }\n\n  hasFocus() {\n    return this.selection.hasFocus();\n  }\n\n  insertEmbed(index, embed, value, source = Quill.sources.API) {\n    return modify.call(this, () => {\n      return this.editor.insertEmbed(index, embed, value);\n    }, source, index);\n  }\n\n  insertText(index, text, name, value, source) {\n    let formats;\n    [index, , formats, source] = overload(index, 0, name, value, source);\n    return modify.call(this, () => {\n      return this.editor.insertText(index, text, formats);\n    }, source, index, text.length);\n  }\n\n  isEnabled() {\n    return !this.container.classList.contains('ql-disabled');\n  }\n\n  off() {\n    return this.emitter.off.apply(this.emitter, arguments);\n  }\n\n  on() {\n    return this.emitter.on.apply(this.emitter, arguments);\n  }\n\n  once() {\n    return this.emitter.once.apply(this.emitter, arguments);\n  }\n\n  pasteHTML(index, html, source) {\n    this.clipboard.dangerouslyPasteHTML(index, html, source);\n  }\n\n  removeFormat(index, length, source) {\n    [index, length, , source] = overload(index, length, source);\n    return modify.call(this, () => {\n      return this.editor.removeFormat(index, length);\n    }, source, index);\n  }\n\n  setContents(delta, source = Emitter.sources.API) {\n    return modify.call(this, () => {\n      delta = new Delta(delta);\n      let length = this.getLength();\n      let deleted = this.editor.deleteText(0, length);\n      let applied = this.editor.applyDelta(delta);\n      let lastOp = applied.ops[applied.ops.length - 1];\n      if (lastOp != null && typeof(lastOp.insert) === 'string' && lastOp.insert[lastOp.insert.length-1] === '\\n') {\n        this.editor.deleteText(this.getLength() - 1, 1);\n        applied.delete(1);\n      }\n      let ret = deleted.compose(applied);\n      return ret;\n    }, source);\n  }\n\n  setSelection(index, length, source) {\n    if (index == null) {\n      this.selection.setRange(null, length || Quill.sources.API);\n    } else {\n      [index, length, , source] = overload(index, length, source);\n      this.selection.setRange(new Range(index, length), source);\n    }\n    this.selection.scrollIntoView();\n  }\n\n  setText(text, source = Emitter.sources.API) {\n    let delta = new Delta().insert(text);\n    return this.setContents(delta, source);\n  }\n\n  update(source = Emitter.sources.USER) {\n    let change = this.scroll.update(source);   // Will update selection before selection.update() does if text changes\n    this.selection.update(source);\n    return change;\n  }\n\n  updateContents(delta, source = Emitter.sources.API) {\n    return modify.call(this, () => {\n      delta = new Delta(delta);\n      return this.editor.applyDelta(delta, source);\n    }, source, true);\n  }\n}\nQuill.DEFAULTS = {\n  bounds: null,\n  formats: null,\n  modules: {},\n  placeholder: '',\n  readOnly: false,\n  strict: true,\n  theme: 'default'\n};\nQuill.events = Emitter.events;\nQuill.sources = Emitter.sources;\n// eslint-disable-next-line no-undef\nQuill.version = typeof(QUILL_VERSION) === 'undefined' ? 'dev' : QUILL_VERSION;\n\nQuill.imports = {\n  'delta'       : Delta,\n  'parchment'   : Parchment,\n  'core/module' : Module,\n  'core/theme'  : Theme\n};\n\n\nfunction expandConfig(container, userConfig) {\n  userConfig = extend(true, {\n    container: container,\n    modules: {\n      clipboard: true,\n      keyboard: true,\n      history: true\n    }\n  }, userConfig);\n  if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n    userConfig.theme = Theme;\n  } else {\n    userConfig.theme = Quill.import(`themes/${userConfig.theme}`);\n    if (userConfig.theme == null) {\n      throw new Error(`Invalid theme ${userConfig.theme}. Did you register it?`);\n    }\n  }\n  let themeConfig = extend(true, {}, userConfig.theme.DEFAULTS);\n  [themeConfig, userConfig].forEach(function(config) {\n    config.modules = config.modules || {};\n    Object.keys(config.modules).forEach(function(module) {\n      if (config.modules[module] === true) {\n        config.modules[module] = {};\n      }\n    });\n  });\n  let moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n  let moduleConfig = moduleNames.reduce(function(config, name) {\n    let moduleClass = Quill.import(`modules/${name}`);\n    if (moduleClass == null) {\n      debug.error(`Cannot load ${name} module. Are you sure you registered it?`);\n    } else {\n      config[name] = moduleClass.DEFAULTS || {};\n    }\n    return config;\n  }, {});\n  // Special case toolbar shorthand\n  if (userConfig.modules != null && userConfig.modules.toolbar &&\n      userConfig.modules.toolbar.constructor !== Object) {\n    userConfig.modules.toolbar = {\n      container: userConfig.modules.toolbar\n    };\n  }\n  userConfig = extend(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n  ['bounds', 'container'].forEach(function(key) {\n    if (typeof userConfig[key] === 'string') {\n      userConfig[key] = document.querySelector(userConfig[key]);\n    }\n  });\n  userConfig.modules = Object.keys(userConfig.modules).reduce(function(config, name) {\n    if (userConfig.modules[name]) {\n      config[name] = userConfig.modules[name];\n    }\n    return config;\n  }, {});\n  return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n  if (!this.options.strict && !this.isEnabled() && source === Emitter.sources.USER) {\n    return new Delta();\n  }\n  let range = index == null ? null : this.getSelection();\n  let oldDelta = this.editor.delta;\n  let change = modifier();\n  if (range != null) {\n    if (index === true) index = range.index;\n    if (shift == null) {\n      range = shiftRange(range, change, source);\n    } else if (shift !== 0) {\n      range = shiftRange(range, index, shift, source);\n    }\n    this.setSelection(range, Emitter.sources.SILENT);\n  }\n  if (change.length() > 0) {\n    let args = [Emitter.events.TEXT_CHANGE, change, oldDelta, source];\n    this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n    if (source !== Emitter.sources.SILENT) {\n      this.emitter.emit(...args);\n    }\n  }\n  return change;\n}\n\nfunction overload(index, length, name, value, source) {\n  let formats = {};\n  if (typeof index.index === 'number' && typeof index.length === 'number') {\n    // Allow for throwaway end (used by insertText/insertEmbed)\n    if (typeof length !== 'number') {\n      source = value, value = name, name = length, length = index.length, index = index.index;\n    } else {\n      length = index.length, index = index.index;\n    }\n  } else if (typeof length !== 'number') {\n    source = value, value = name, name = length, length = 0;\n  }\n  // Handle format being object, two format name/value strings or excluded\n  if (typeof name === 'object') {\n    formats = name;\n    source = value;\n  } else if (typeof name === 'string') {\n    if (value != null) {\n      formats[name] = value;\n    } else {\n      source = name;\n    }\n  }\n  // Handle optional source\n  source = source || Emitter.sources.API;\n  return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n  if (range == null) return null;\n  let start, end;\n  if (index instanceof Delta) {\n    [start, end] = [range.index, range.index + range.length].map(function(pos) {\n      return index.transformPosition(pos, source === Emitter.sources.USER);\n    });\n  } else {\n    [start, end] = [range.index, range.index + range.length].map(function(pos) {\n      if (pos < index || (pos === index && source !== Emitter.sources.USER)) return pos;\n      if (length >= 0) {\n        return pos + length;\n      } else {\n        return Math.max(index, pos + length);\n      }\n    });\n  }\n  return new Range(start, end - start);\n}\n\n\nexport { expandConfig, overload, Quill as default };\n\n\n\n// WEBPACK FOOTER //\n// ./core/quill.js","let elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n  let _toggle = DOMTokenList.prototype.toggle;\n  DOMTokenList.prototype.toggle = function(token, force) {\n    if (arguments.length > 1 && !this.contains(token) === !force) {\n      return force;\n    } else {\n      return _toggle.call(this, token);\n    }\n  };\n}\n\nif (!String.prototype.startsWith) {\n  String.prototype.startsWith = function(searchString, position){\n    position = position || 0;\n    return this.substr(position, searchString.length) === searchString;\n  };\n}\n\nif (!String.prototype.endsWith) {\n  String.prototype.endsWith = function(searchString, position) {\n    var subjectString = this.toString();\n    if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n      position = subjectString.length;\n    }\n    position -= searchString.length;\n    var lastIndex = subjectString.indexOf(searchString, position);\n    return lastIndex !== -1 && lastIndex === position;\n  };\n}\n\nif (!Array.prototype.find) {\n  Object.defineProperty(Array.prototype, \"find\", {\n    value: function(predicate) {\n      if (this === null) {\n        throw new TypeError('Array.prototype.find called on null or undefined');\n      }\n      if (typeof predicate !== 'function') {\n        throw new TypeError('predicate must be a function');\n      }\n      var list = Object(this);\n      var length = list.length >>> 0;\n      var thisArg = arguments[1];\n      var value;\n\n      for (var i = 0; i < length; i++) {\n        value = list[i];\n        if (predicate.call(thisArg, value, i, list)) {\n          return value;\n        }\n      }\n      return undefined;\n    }\n  });\n}\n\n// Disable resizing in Firefox\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n  document.execCommand(\"enableObjectResizing\", false, false);\n});\n\n\n\n// WEBPACK FOOTER //\n// ./core/polyfill.js","var diff = require('fast-diff');\nvar equal = require('deep-equal');\nvar extend = require('extend');\nvar op = require('./op');\n\n\nvar NULL_CHARACTER = String.fromCharCode(0);  // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n  // Assume we are given a well formed ops\n  if (Array.isArray(ops)) {\n    this.ops = ops;\n  } else if (ops != null && Array.isArray(ops.ops)) {\n    this.ops = ops.ops;\n  } else {\n    this.ops = [];\n  }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n  var newOp = {};\n  if (text.length === 0) return this;\n  newOp.insert = text;\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n  if (length <= 0) return this;\n  return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n  if (length <= 0) return this;\n  var newOp = { retain: length };\n  if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n    newOp.attributes = attributes;\n  }\n  return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n  var index = this.ops.length;\n  var lastOp = this.ops[index - 1];\n  newOp = extend(true, {}, newOp);\n  if (typeof lastOp === 'object') {\n    if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n      this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n      return this;\n    }\n    // Since it does not matter if we insert before or after deleting at the same index,\n    // always prefer to insert first\n    if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n      index -= 1;\n      lastOp = this.ops[index - 1];\n      if (typeof lastOp !== 'object') {\n        this.ops.unshift(newOp);\n        return this;\n      }\n    }\n    if (equal(newOp.attributes, lastOp.attributes)) {\n      if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n        this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n        this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n        if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n        return this;\n      }\n    }\n  }\n  if (index === this.ops.length) {\n    this.ops.push(newOp);\n  } else {\n    this.ops.splice(index, 0, newOp);\n  }\n  return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n  return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n  this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n  return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n  var passed = [], failed = [];\n  this.forEach(function(op) {\n    var target = predicate(op) ? passed : failed;\n    target.push(op);\n  });\n  return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n  return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.chop = function () {\n  var lastOp = this.ops[this.ops.length - 1];\n  if (lastOp && lastOp.retain && !lastOp.attributes) {\n    this.ops.pop();\n  }\n  return this;\n};\n\nDelta.prototype.length = function () {\n  return this.reduce(function (length, elem) {\n    return length + op.length(elem);\n  }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n  start = start || 0;\n  if (typeof end !== 'number') end = Infinity;\n  var ops = [];\n  var iter = op.iterator(this.ops);\n  var index = 0;\n  while (index < end && iter.hasNext()) {\n    var nextOp;\n    if (index < start) {\n      nextOp = iter.next(start - index);\n    } else {\n      nextOp = iter.next(end - index);\n      ops.push(nextOp);\n    }\n    index += op.length(nextOp);\n  }\n  return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var delta = new Delta();\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else if (thisIter.peekType() === 'delete') {\n      delta.push(thisIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (typeof otherOp.retain === 'number') {\n        var newOp = {};\n        if (typeof thisOp.retain === 'number') {\n          newOp.retain = length;\n        } else {\n          newOp.insert = thisOp.insert;\n        }\n        // Preserve null when composing with a retain, otherwise remove it for inserts\n        var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n        if (attributes) newOp.attributes = attributes;\n        delta.push(newOp);\n      // Other op should be delete, we could be an insert or retain\n      // Insert + delete cancels out\n      } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n        delta.push(otherOp);\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n  var delta = new Delta(this.ops.slice());\n  if (other.ops.length > 0) {\n    delta.push(other.ops[0]);\n    delta.ops = delta.ops.concat(other.ops.slice(1));\n  }\n  return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n  if (this.ops === other.ops) {\n    return new Delta();\n  }\n  var strings = [this, other].map(function (delta) {\n    return delta.map(function (op) {\n      if (op.insert != null) {\n        return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n      }\n      var prep = (delta === other) ? 'on' : 'with';\n      throw new Error('diff() called ' + prep + ' non-document');\n    }).join('');\n  });\n  var delta = new Delta();\n  var diffResult = diff(strings[0], strings[1], index);\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  diffResult.forEach(function (component) {\n    var length = component[1].length;\n    while (length > 0) {\n      var opLength = 0;\n      switch (component[0]) {\n        case diff.INSERT:\n          opLength = Math.min(otherIter.peekLength(), length);\n          delta.push(otherIter.next(opLength));\n          break;\n        case diff.DELETE:\n          opLength = Math.min(length, thisIter.peekLength());\n          thisIter.next(opLength);\n          delta['delete'](opLength);\n          break;\n        case diff.EQUAL:\n          opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n          var thisOp = thisIter.next(opLength);\n          var otherOp = otherIter.next(opLength);\n          if (equal(thisOp.insert, otherOp.insert)) {\n            delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n          } else {\n            delta.push(otherOp)['delete'](opLength);\n          }\n          break;\n      }\n      length -= opLength;\n    }\n  });\n  return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n  newline = newline || '\\n';\n  var iter = op.iterator(this.ops);\n  var line = new Delta();\n  while (iter.hasNext()) {\n    if (iter.peekType() !== 'insert') return;\n    var thisOp = iter.peek();\n    var start = op.length(thisOp) - iter.peekLength();\n    var index = typeof thisOp.insert === 'string' ?\n      thisOp.insert.indexOf(newline, start) - start : -1;\n    if (index < 0) {\n      line.push(iter.next());\n    } else if (index > 0) {\n      line.push(iter.next(index));\n    } else {\n      predicate(line, iter.next(1).attributes || {});\n      line = new Delta();\n    }\n  }\n  if (line.length() > 0) {\n    predicate(line, {});\n  }\n};\n\nDelta.prototype.transform = function (other, priority) {\n  priority = !!priority;\n  if (typeof other === 'number') {\n    return this.transformPosition(other, priority);\n  }\n  var thisIter = op.iterator(this.ops);\n  var otherIter = op.iterator(other.ops);\n  var delta = new Delta();\n  while (thisIter.hasNext() || otherIter.hasNext()) {\n    if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n      delta.retain(op.length(thisIter.next()));\n    } else if (otherIter.peekType() === 'insert') {\n      delta.push(otherIter.next());\n    } else {\n      var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n      var thisOp = thisIter.next(length);\n      var otherOp = otherIter.next(length);\n      if (thisOp['delete']) {\n        // Our delete either makes their delete redundant or removes their retain\n        continue;\n      } else if (otherOp['delete']) {\n        delta.push(otherOp);\n      } else {\n        // We retain either their retain or insert\n        delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n      }\n    }\n  }\n  return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n  priority = !!priority;\n  var thisIter = op.iterator(this.ops);\n  var offset = 0;\n  while (thisIter.hasNext() && offset <= index) {\n    var length = thisIter.peekLength();\n    var nextType = thisIter.peekType();\n    thisIter.next();\n    if (nextType === 'delete') {\n      index -= Math.min(length, index - offset);\n      continue;\n    } else if (nextType === 'insert' && (offset < index || !priority)) {\n      index += length;\n    }\n    offset += length;\n  }\n  return index;\n};\n\n\nmodule.exports = Delta;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../delta/lib/delta.js\n// module id = 20\n// module chunks = 0","/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts.  Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n  // Check for equality (speedup).\n  if (text1 == text2) {\n    if (text1) {\n      return [[DIFF_EQUAL, text1]];\n    }\n    return [];\n  }\n\n  // Check cursor_pos within bounds\n  if (cursor_pos < 0 || text1.length < cursor_pos) {\n    cursor_pos = null;\n  }\n\n  // Trim off common prefix (speedup).\n  var commonlength = diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = diff_compute_(text1, text2);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift([DIFF_EQUAL, commonprefix]);\n  }\n  if (commonsuffix) {\n    diffs.push([DIFF_EQUAL, commonsuffix]);\n  }\n  diff_cleanupMerge(diffs);\n  if (cursor_pos != null) {\n    diffs = fix_cursor(diffs, cursor_pos);\n  }\n  return diffs;\n};\n\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n  var diffs;\n\n  if (!text1) {\n    // Just add some text (speedup).\n    return [[DIFF_INSERT, text2]];\n  }\n\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [[DIFF_DELETE, text1]];\n  }\n\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i != -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n             [DIFF_EQUAL, shorttext],\n             [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n\n  if (shorttext.length == 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = diff_main(text1_a, text2_a);\n    var diffs_b = diff_main(text1_b, text2_b);\n    // Merge the results.\n    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n  }\n\n  return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = (delta % 2 != 0);\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (x1 < text1_length && y1 < text2_length &&\n             text1.charAt(x1) == text2.charAt(y1)) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (x2 < text1_length && y2 < text2_length &&\n             text1.charAt(text1_length - x2 - 1) ==\n             text2.charAt(text2_length - y2 - 1)) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = diff_main(text1a, text2a);\n  var diffsb = diff_main(text1b, text2b);\n\n  return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\nfunction diff_commonPrefix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(pointerstart, pointermid) ==\n        text2.substring(pointerstart, pointermid)) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 ||\n      text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n        text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null;  // Pointless.\n  }\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = '';\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n      var prefixLength = diff_commonPrefix(longtext.substring(i),\n                                           shorttext.substring(j));\n      var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n                                           shorttext.substring(0, j));\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext.substring(j - suffixLength, j) +\n            shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [best_longtext_a, best_longtext_b,\n              best_shorttext_a, best_shorttext_b, best_common];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 4));\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 2));\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n  diffs.push([DIFF_EQUAL, '']);  // Add a dummy entry at the end.\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if ((pointer - count_delete - count_insert) > 0 &&\n                  diffs[pointer - count_delete - count_insert - 1][0] ==\n                  DIFF_EQUAL) {\n                diffs[pointer - count_delete - count_insert - 1][1] +=\n                    text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(0, 0, [DIFF_EQUAL,\n                                    text_insert.substring(0, commonlength)]);\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixies.\n            commonlength = diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] = text_insert.substring(text_insert.length -\n                  commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(0, text_insert.length -\n                  commonlength);\n              text_delete = text_delete.substring(0, text_delete.length -\n                  commonlength);\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          if (count_delete === 0) {\n            diffs.splice(pointer - count_insert,\n                count_delete + count_insert, [DIFF_INSERT, text_insert]);\n          } else if (count_insert === 0) {\n            diffs.splice(pointer - count_delete,\n                count_delete + count_insert, [DIFF_DELETE, text_delete]);\n          } else {\n            diffs.splice(pointer - count_delete - count_insert,\n                count_delete + count_insert, [DIFF_DELETE, text_delete],\n                [DIFF_INSERT, text_insert]);\n          }\n          pointer = pointer - count_delete - count_insert +\n                    (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop();  // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n        diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      if (diffs[pointer][1].substring(diffs[pointer][1].length -\n          diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] = diffs[pointer - 1][1] +\n            diffs[pointer][1].substring(0, diffs[pointer][1].length -\n                                        diffs[pointer - 1][1].length);\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n          diffs[pointer + 1][1]) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n            diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n            diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n *   cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n *     => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n *   cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n *     => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n  if (cursor_pos === 0) {\n    return [DIFF_EQUAL, diffs];\n  }\n  for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n    var d = diffs[i];\n    if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n      var next_pos = current_pos + d[1].length;\n      if (cursor_pos === next_pos) {\n        return [i + 1, diffs];\n      } else if (cursor_pos < next_pos) {\n        // copy to prevent side effects\n        diffs = diffs.slice();\n        // split d into two diff changes\n        var split_pos = cursor_pos - current_pos;\n        var d_left = [d[0], d[1].slice(0, split_pos)];\n        var d_right = [d[0], d[1].slice(split_pos)];\n        diffs.splice(i, 1, d_left, d_right);\n        return [i + 1, diffs];\n      } else {\n        current_pos = next_pos;\n      }\n    }\n  }\n  throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n *   Check if a naive shift is possible:\n *     [0, X], [ 1, Y] -> [ 1, Y], [0, X]    (if X + Y === Y + X)\n *     [0, X], [-1, Y] -> [-1, Y], [0, X]    (if X + Y === Y + X) - holds same result\n * Case 2)\n *   Check if the following shifts are possible:\n *     [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n *     [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n *         ^            ^\n *         d          d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n  var norm = cursor_normalize_diff(diffs, cursor_pos);\n  var ndiffs = norm[1];\n  var cursor_pointer = norm[0];\n  var d = ndiffs[cursor_pointer];\n  var d_next = ndiffs[cursor_pointer + 1];\n\n  if (d == null) {\n    // Text was deleted from end of original string,\n    // cursor is now out of bounds in new string\n    return diffs;\n  } else if (d[0] !== DIFF_EQUAL) {\n    // A modification happened at the cursor location.\n    // This is the expected outcome, so we can return the original diff.\n    return diffs;\n  } else {\n    if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n      // Case 1)\n      // It is possible to perform a naive shift\n      ndiffs.splice(cursor_pointer, 2, d_next, d)\n      return merge_tuples(ndiffs, cursor_pointer, 2)\n    } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n      // Case 2)\n      // d[1] is a prefix of d_next[1]\n      // We can assume that d_next[0] !== 0, since d[0] === 0\n      // Shift edit locations..\n      ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n      var suffix = d_next[1].slice(d[1].length);\n      if (suffix.length > 0) {\n        ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n      }\n      return merge_tuples(ndiffs, cursor_pointer, 3)\n    } else {\n      // Not possible to perform any modification\n      return diffs;\n    }\n  }\n\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n  // Check from (start-1) to (start+length).\n  for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n    if (i + 1 < diffs.length) {\n      var left_d = diffs[i];\n      var right_d = diffs[i+1];\n      if (left_d[0] === right_d[1]) {\n        diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n      }\n    }\n  }\n  return diffs;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../delta/~/fast-diff/diff.js\n// module id = 21\n// module chunks = 0","exports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../delta/~/deep-equal/lib/keys.js\n// module id = 23\n// module chunks = 0","var supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../delta/~/deep-equal/lib/is_arguments.js\n// module id = 24\n// module chunks = 0","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) {/**/}\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0],\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t} else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../delta/~/extend/index.js\n// module id = 25\n// module chunks = 0","var equal = require('deep-equal');\nvar extend = require('extend');\n\n\nvar lib = {\n  attributes: {\n    compose: function (a, b, keepNull) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = extend(true, {}, b);\n      if (!keepNull) {\n        attributes = Object.keys(attributes).reduce(function (copy, key) {\n          if (attributes[key] != null) {\n            copy[key] = attributes[key];\n          }\n          return copy;\n        }, {});\n      }\n      for (var key in a) {\n        if (a[key] !== undefined && b[key] === undefined) {\n          attributes[key] = a[key];\n        }\n      }\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    diff: function(a, b) {\n      if (typeof a !== 'object') a = {};\n      if (typeof b !== 'object') b = {};\n      var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n        if (!equal(a[key], b[key])) {\n          attributes[key] = b[key] === undefined ? null : b[key];\n        }\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    },\n\n    transform: function (a, b, priority) {\n      if (typeof a !== 'object') return b;\n      if (typeof b !== 'object') return undefined;\n      if (!priority) return b;  // b simply overwrites us without priority\n      var attributes = Object.keys(b).reduce(function (attributes, key) {\n        if (a[key] === undefined) attributes[key] = b[key];  // null is a valid value\n        return attributes;\n      }, {});\n      return Object.keys(attributes).length > 0 ? attributes : undefined;\n    }\n  },\n\n  iterator: function (ops) {\n    return new Iterator(ops);\n  },\n\n  length: function (op) {\n    if (typeof op['delete'] === 'number') {\n      return op['delete'];\n    } else if (typeof op.retain === 'number') {\n      return op.retain;\n    } else {\n      return typeof op.insert === 'string' ? op.insert.length : 1;\n    }\n  }\n};\n\n\nfunction Iterator(ops) {\n  this.ops = ops;\n  this.index = 0;\n  this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n  return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n  if (!length) length = Infinity;\n  var nextOp = this.ops[this.index];\n  if (nextOp) {\n    var offset = this.offset;\n    var opLength = lib.length(nextOp)\n    if (length >= opLength - offset) {\n      length = opLength - offset;\n      this.index += 1;\n      this.offset = 0;\n    } else {\n      this.offset += length;\n    }\n    if (typeof nextOp['delete'] === 'number') {\n      return { 'delete': length };\n    } else {\n      var retOp = {};\n      if (nextOp.attributes) {\n        retOp.attributes = nextOp.attributes;\n      }\n      if (typeof nextOp.retain === 'number') {\n        retOp.retain = length;\n      } else if (typeof nextOp.insert === 'string') {\n        retOp.insert = nextOp.insert.substr(offset, length);\n      } else {\n        // offset should === 0, length should === 1\n        retOp.insert = nextOp.insert;\n      }\n      return retOp;\n    }\n  } else {\n    return { retain: Infinity };\n  }\n};\n\nIterator.prototype.peek = function () {\n  return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n  if (this.ops[this.index]) {\n    // Should never return 0 if our index is being managed correctly\n    return lib.length(this.ops[this.index]) - this.offset;\n  } else {\n    return Infinity;\n  }\n};\n\nIterator.prototype.peekType = function () {\n  if (this.ops[this.index]) {\n    if (typeof this.ops[this.index]['delete'] === 'number') {\n      return 'delete';\n    } else if (typeof this.ops[this.index].retain === 'number') {\n      return 'retain';\n    } else {\n      return 'insert';\n    }\n  }\n  return 'retain';\n};\n\n\nmodule.exports = lib;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../delta/lib/op.js\n// module id = 26\n// module chunks = 0","import Delta from 'quill-delta';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport CodeBlock from '../formats/code';\nimport CursorBlot from '../blots/cursor';\nimport Block, { bubbleFormats } from '../blots/block';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\n\n\nclass Editor {\n  constructor(scroll) {\n    this.scroll = scroll;\n    this.delta = this.getDelta();\n  }\n\n  applyDelta(delta) {\n    let consumeNextNewline = false;\n    this.scroll.update();\n    let scrollLength = this.scroll.length();\n    this.scroll.batch = true;\n    delta = normalizeDelta(delta);\n    delta.reduce((index, op) => {\n      let length = op.retain || op.delete || op.insert.length || 1;\n      let attributes = op.attributes || {};\n      if (op.insert != null) {\n        if (typeof op.insert === 'string') {\n          let text = op.insert;\n          if (text.endsWith('\\n') && consumeNextNewline) {\n            consumeNextNewline = false;\n            text = text.slice(0, -1);\n          }\n          if (index >= scrollLength && !text.endsWith('\\n')) {\n            consumeNextNewline = true;\n          }\n          this.scroll.insertAt(index, text);\n          let [line, offset] = this.scroll.line(index);\n          let formats = extend({}, bubbleFormats(line));\n          if (line instanceof Block) {\n            let [leaf, ] = line.descendant(Parchment.Leaf, offset);\n            formats = extend(formats, bubbleFormats(leaf));\n          }\n          attributes = DeltaOp.attributes.diff(formats, attributes) || {};\n        } else if (typeof op.insert === 'object') {\n          let key = Object.keys(op.insert)[0];  // There should only be one key\n          if (key == null) return index;\n          this.scroll.insertAt(index, key, op.insert[key]);\n        }\n        scrollLength += length;\n      }\n      Object.keys(attributes).forEach((name) => {\n        this.scroll.formatAt(index, length, name, attributes[name]);\n      });\n      return index + length;\n    }, 0);\n    delta.reduce((index, op) => {\n      if (typeof op.delete === 'number') {\n        this.scroll.deleteAt(index, op.delete);\n        return index;\n      }\n      return index + (op.retain || op.insert.length || 1);\n    }, 0);\n    this.scroll.batch = false;\n    this.scroll.optimize();\n    return this.update(delta);\n  }\n\n  deleteText(index, length) {\n    this.scroll.deleteAt(index, length);\n    return this.update(new Delta().retain(index).delete(length));\n  }\n\n  formatLine(index, length, formats = {}) {\n    this.scroll.update();\n    Object.keys(formats).forEach((format) => {\n      let lines = this.scroll.lines(index, Math.max(length, 1));\n      let lengthRemaining = length;\n      lines.forEach((line) => {\n        let lineLength = line.length();\n        if (!(line instanceof CodeBlock)) {\n          line.format(format, formats[format]);\n        } else {\n          let codeIndex = index - line.offset(this.scroll);\n          let codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n          line.formatAt(codeIndex, codeLength, format, formats[format]);\n        }\n        lengthRemaining -= lineLength;\n      });\n    });\n    this.scroll.optimize();\n    return this.update(new Delta().retain(index).retain(length, clone(formats)));\n  }\n\n  formatText(index, length, formats = {}) {\n    Object.keys(formats).forEach((format) => {\n      this.scroll.formatAt(index, length, format, formats[format]);\n    });\n    return this.update(new Delta().retain(index).retain(length, clone(formats)));\n  }\n\n  getContents(index, length) {\n    return this.delta.slice(index, index + length);\n  }\n\n  getDelta() {\n    return this.scroll.lines().reduce((delta, line) => {\n      return delta.concat(line.delta());\n    }, new Delta());\n  }\n\n  getFormat(index, length = 0) {\n    let lines = [], leaves = [];\n    if (length === 0) {\n      this.scroll.path(index).forEach(function(path) {\n        let [blot, ] = path;\n        if (blot instanceof Block) {\n          lines.push(blot);\n        } else if (blot instanceof Parchment.Leaf) {\n          leaves.push(blot);\n        }\n      });\n    } else {\n      lines = this.scroll.lines(index, length);\n      leaves = this.scroll.descendants(Parchment.Leaf, index, length);\n    }\n    let formatsArr = [lines, leaves].map(function(blots) {\n      if (blots.length === 0) return {};\n      let formats = bubbleFormats(blots.shift());\n      while (Object.keys(formats).length > 0) {\n        let blot = blots.shift();\n        if (blot == null) return formats;\n        formats = combineFormats(bubbleFormats(blot), formats);\n      }\n      return formats;\n    });\n    return extend.apply(extend, formatsArr);\n  }\n\n  getText(index, length) {\n    return this.getContents(index, length).filter(function(op) {\n      return typeof op.insert === 'string';\n    }).map(function(op) {\n      return op.insert;\n    }).join('');\n  }\n\n  insertEmbed(index, embed, value) {\n    this.scroll.insertAt(index, embed, value);\n    return this.update(new Delta().retain(index).insert({ [embed]: value }));\n  }\n\n  insertText(index, text, formats = {}) {\n    text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n    this.scroll.insertAt(index, text);\n    Object.keys(formats).forEach((format) => {\n      this.scroll.formatAt(index, text.length, format, formats[format]);\n    });\n    return this.update(new Delta().retain(index).insert(text, clone(formats)));\n  }\n\n  isBlank() {\n    if (this.scroll.children.length == 0) return true;\n    if (this.scroll.children.length > 1) return false;\n    let child = this.scroll.children.head;\n    return child.length() <= 1 && Object.keys(child.formats()).length == 0;\n  }\n\n  removeFormat(index, length) {\n    let text = this.getText(index, length);\n    let [line, offset] = this.scroll.line(index + length);\n    let suffixLength = 0, suffix = new Delta();\n    if (line != null) {\n      if (!(line instanceof CodeBlock)) {\n        suffixLength = line.length() - offset;\n      } else {\n        suffixLength = line.newlineIndex(offset) - offset + 1;\n      }\n      suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n    }\n    let contents = this.getContents(index, length + suffixLength);\n    let diff = contents.diff(new Delta().insert(text).concat(suffix));\n    let delta = new Delta().retain(index).concat(diff);\n    return this.applyDelta(delta);\n  }\n\n  update(change, mutations = [], cursorIndex = undefined) {\n    let oldDelta = this.delta;\n    if (mutations.length === 1 &&\n        mutations[0].type === 'characterData' &&\n        Parchment.find(mutations[0].target)) {\n      // Optimization for character changes\n      let textBlot = Parchment.find(mutations[0].target);\n      let formats = bubbleFormats(textBlot);\n      let index = textBlot.offset(this.scroll);\n      let oldValue = mutations[0].oldValue.replace(CursorBlot.CONTENTS, '');\n      let oldText = new Delta().insert(oldValue);\n      let newText = new Delta().insert(textBlot.value());\n      let diffDelta = new Delta().retain(index).concat(oldText.diff(newText, cursorIndex));\n      change = diffDelta.reduce(function(delta, op) {\n        if (op.insert) {\n          return delta.insert(op.insert, formats);\n        } else {\n          return delta.push(op);\n        }\n      }, new Delta());\n      this.delta = oldDelta.compose(change);\n    } else {\n      this.delta = this.getDelta();\n      if (!change || !equal(oldDelta.compose(change), this.delta)) {\n        change = oldDelta.diff(this.delta, cursorIndex);\n      }\n    }\n    return change;\n  }\n}\n\n\nfunction combineFormats(formats, combined) {\n  return Object.keys(combined).reduce(function(merged, name) {\n    if (formats[name] == null) return merged;\n    if (combined[name] === formats[name]) {\n      merged[name] = combined[name];\n    } else if (Array.isArray(combined[name])) {\n      if (combined[name].indexOf(formats[name]) < 0) {\n        merged[name] = combined[name].concat([formats[name]]);\n      }\n    } else {\n      merged[name] = [combined[name], formats[name]];\n    }\n    return merged;\n  }, {});\n}\n\nfunction normalizeDelta(delta) {\n  return delta.reduce(function(delta, op) {\n    if (op.insert === 1) {\n      let attributes = clone(op.attributes);\n      delete attributes['image'];\n      return delta.insert({ image: op.attributes.image }, attributes);\n    }\n    if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n      op = clone(op);\n      if (op.attributes.list) {\n        op.attributes.list = 'ordered';\n      } else {\n        op.attributes.list = 'bullet';\n        delete op.attributes.bullet;\n      }\n    }\n    if (typeof op.insert === 'string') {\n      let text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n      return delta.insert(text, op.attributes);\n    }\n    return delta.push(op);\n  }, new Delta());\n}\n\n\nexport default Editor;\n\n\n\n// WEBPACK FOOTER //\n// ./core/editor.js","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Inline from '../blots/inline';\nimport TextBlot from '../blots/text';\n\n\nclass Code extends Inline {}\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\n\nclass CodeBlock extends Block {\n  static create(value) {\n    let domNode = super.create(value);\n    domNode.setAttribute('spellcheck', false);\n    return domNode;\n  }\n\n  static formats() {\n    return true;\n  }\n\n  delta() {\n    let text = this.domNode.textContent;\n    if (text.endsWith('\\n')) {      // Should always be true\n      text = text.slice(0, -1);\n    }\n    return text.split('\\n').reduce((delta, frag) => {\n      return delta.insert(frag).insert('\\n', this.formats());\n    }, new Delta());\n  }\n\n  format(name, value) {\n    if (name === this.statics.blotName && value) return;\n    let [text, ] = this.descendant(TextBlot, this.length() - 1);\n    if (text != null) {\n      text.deleteAt(text.length() - 1, 1);\n    }\n    super.format(name, value);\n  }\n\n  formatAt(index, length, name, value) {\n    if (length === 0) return;\n    if (Parchment.query(name, Parchment.Scope.BLOCK) == null ||\n        (name === this.statics.blotName && value === this.statics.formats(this.domNode))) {\n      return;\n    }\n    let nextNewline = this.newlineIndex(index);\n    if (nextNewline < 0 || nextNewline >= index + length) return;\n    let prevNewline = this.newlineIndex(index, true) + 1;\n    let isolateLength = nextNewline - prevNewline + 1;\n    let blot = this.isolate(prevNewline, isolateLength);\n    let next = blot.next;\n    blot.format(name, value);\n    if (next instanceof CodeBlock) {\n      next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n    }\n  }\n\n  insertAt(index, value, def) {\n    if (def != null) return;\n    let [text, offset] = this.descendant(TextBlot, index);\n    text.insertAt(offset, value);\n  }\n\n  length() {\n    let length = this.domNode.textContent.length;\n    if (!this.domNode.textContent.endsWith('\\n')) {\n      return length + 1;\n    }\n    return length;\n  }\n\n  newlineIndex(searchIndex, reverse = false) {\n    if (!reverse) {\n      let offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n      return offset > -1 ? searchIndex + offset : -1;\n    } else {\n      return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n    }\n  }\n\n  optimize() {\n    if (!this.domNode.textContent.endsWith('\\n')) {\n      this.appendChild(Parchment.create('text', '\\n'));\n    }\n    super.optimize();\n    let next = this.next;\n    if (next != null && next.prev === this &&\n        next.statics.blotName === this.statics.blotName &&\n        this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n      next.optimize();\n      next.moveChildren(this);\n      next.remove();\n    }\n  }\n\n  replace(target) {\n    super.replace(target);\n    [].slice.call(this.domNode.querySelectorAll('*')).forEach(function(node) {\n      let blot = Parchment.find(node);\n      if (blot == null) {\n        node.parentNode.removeChild(node);\n      } else if (blot instanceof Parchment.Embed) {\n        blot.remove();\n      } else {\n        blot.unwrap();\n      }\n    });\n  }\n}\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = '  ';\n\n\nexport { Code, CodeBlock as default };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/code.js","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Break from './break';\nimport Embed from './embed';\nimport Inline from './inline';\nimport TextBlot from './text';\n\n\nconst NEWLINE_LENGTH = 1;\n\n\nclass BlockEmbed extends Embed {\n  attach() {\n    super.attach();\n    this.attributes = new Parchment.Attributor.Store(this.domNode);\n  }\n\n  delta() {\n    return new Delta().insert(this.value(), extend(this.formats(), this.attributes.values()));\n  }\n\n  format(name, value) {\n    let attribute = Parchment.query(name, Parchment.Scope.BLOCK_ATTRIBUTE);\n    if (attribute != null) {\n      this.attributes.attribute(attribute, value);\n    }\n  }\n\n  formatAt(index, length, name, value) {\n    this.format(name, value);\n  }\n\n  insertAt(index, value, def) {\n    if (typeof value === 'string' && value.endsWith('\\n')) {\n      let block = Parchment.create(Block.blotName);\n      this.parent.insertBefore(block, index === 0 ? this : this.next);\n      block.insertAt(0, value.slice(0, -1));\n    } else {\n      super.insertAt(index, value, def);\n    }\n  }\n}\nBlockEmbed.scope = Parchment.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nclass Block extends Parchment.Block {\n  constructor(domNode) {\n    super(domNode);\n    this.cache = {};\n  }\n\n  delta() {\n    if (this.cache.delta == null) {\n      this.cache.delta = this.descendants(Parchment.Leaf).reduce((delta, leaf) => {\n        if (leaf.length() === 0) {\n          return delta;\n        } else {\n          return delta.insert(leaf.value(), bubbleFormats(leaf));\n        }\n      }, new Delta()).insert('\\n', bubbleFormats(this));\n    }\n    return this.cache.delta;\n  }\n\n  deleteAt(index, length) {\n    super.deleteAt(index, length);\n    this.cache = {};\n  }\n\n  formatAt(index, length, name, value) {\n    if (length <= 0) return;\n    if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n      if (index + length === this.length()) {\n        this.format(name, value);\n      }\n    } else {\n      super.formatAt(index, Math.min(length, this.length() - index - 1), name, value);\n    }\n    this.cache = {};\n  }\n\n  insertAt(index, value, def) {\n    if (def != null) return super.insertAt(index, value, def);\n    if (value.length === 0) return;\n    let lines = value.split('\\n');\n    let text = lines.shift();\n    if (text.length > 0) {\n      if (index < this.length() - 1 || this.children.tail == null) {\n        super.insertAt(Math.min(index, this.length() - 1), text);\n      } else {\n        this.children.tail.insertAt(this.children.tail.length(), text);\n      }\n      this.cache = {};\n    }\n    let block = this;\n    lines.reduce(function(index, line) {\n      block = block.split(index, true);\n      block.insertAt(0, line);\n      return line.length;\n    }, index + text.length);\n  }\n\n  insertBefore(blot, ref) {\n    let head = this.children.head;\n    super.insertBefore(blot, ref);\n    if (head instanceof Break) {\n      head.remove();\n    }\n    this.cache = {};\n  }\n\n  length() {\n    if (this.cache.length == null) {\n      this.cache.length = super.length() + NEWLINE_LENGTH;\n    }\n    return this.cache.length;\n  }\n\n  moveChildren(target, ref) {\n    super.moveChildren(target, ref);\n    this.cache = {};\n  }\n\n  optimize() {\n    super.optimize();\n    this.cache = {};\n  }\n\n  path(index) {\n    return super.path(index, true);\n  }\n\n  removeChild(child) {\n    super.removeChild(child);\n    this.cache = {};\n  }\n\n  split(index, force = false) {\n    if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n      let clone = this.clone();\n      if (index === 0) {\n        this.parent.insertBefore(clone, this);\n        return this;\n      } else {\n        this.parent.insertBefore(clone, this.next);\n        return clone;\n      }\n    } else {\n      let next = super.split(index, force);\n      this.cache = {};\n      return next;\n    }\n  }\n}\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [Inline, Embed, TextBlot];\n\n\nfunction bubbleFormats(blot, formats = {}) {\n  if (blot == null) return formats;\n  if (typeof blot.formats === 'function') {\n    formats = extend(formats, blot.formats());\n  }\n  if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n    return formats;\n  }\n  return bubbleFormats(blot.parent, formats);\n}\n\n\nexport { bubbleFormats, BlockEmbed, Block as default };\n\n\n\n// WEBPACK FOOTER //\n// ./blots/block.js","import Embed from './embed';\n\n\nclass Break extends Embed {\n  static value() {\n    return undefined;\n  }\n\n  insertInto(parent, ref) {\n    if (parent.children.length === 0) {\n      super.insertInto(parent, ref);\n    } else {\n      this.remove();\n    }\n  }\n\n  length() {\n    return 0;\n  }\n\n  value() {\n    return '';\n  }\n}\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\n\nexport default Break;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/break.js","import Parchment from 'parchment';\n\nclass Embed extends Parchment.Embed { }\n\nexport default Embed;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/embed.js","import Embed from './embed';\nimport Text from './text';\nimport Parchment from 'parchment';\n\n\nclass Inline extends Parchment.Inline {\n  static compare(self, other) {\n    let selfIndex = Inline.order.indexOf(self);\n    let otherIndex = Inline.order.indexOf(other);\n    if (selfIndex >= 0 || otherIndex >= 0) {\n      return selfIndex - otherIndex;\n    } else if (self === other) {\n      return 0;\n    } else if (self < other) {\n      return -1;\n    } else {\n      return 1;\n    }\n  }\n\n  formatAt(index, length, name, value) {\n    if (Inline.compare(this.statics.blotName, name) < 0 && Parchment.query(name, Parchment.Scope.BLOT)) {\n      let blot = this.isolate(index, length);\n      if (value) {\n        blot.wrap(name, value);\n      }\n    } else {\n      super.formatAt(index, length, name, value);\n    }\n  }\n\n  optimize() {\n    super.optimize();\n    if (this.parent instanceof Inline &&\n        Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n      let parent = this.parent.isolate(this.offset(), this.length());\n      this.moveChildren(parent);\n      parent.wrap(this);\n    }\n  }\n}\nInline.allowedChildren = [Inline, Embed, Text];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = [\n  'cursor', 'inline',   // Must be lower\n  'code', 'underline', 'strike', 'italic', 'bold', 'script',\n  'link'                // Must be higher\n];\n\n\nexport default Inline;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/inline.js","import Parchment from 'parchment';\n\nclass TextBlot extends Parchment.Text { }\n\nexport default TextBlot;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/text.js","import Parchment from 'parchment';\nimport Embed from './embed';\nimport TextBlot from './text';\nimport Emitter from '../core/emitter';\n\n\nclass Cursor extends Embed {\n  static value() {\n    return undefined;\n  }\n\n  constructor(domNode, selection) {\n    super(domNode);\n    this.selection = selection;\n    this.textNode = document.createTextNode(Cursor.CONTENTS);\n    this.domNode.appendChild(this.textNode);\n    this._length = 0;\n  }\n\n  detach() {\n    // super.detach() will also clear domNode.__blot\n    if (this.parent != null) this.parent.removeChild(this);\n  }\n\n  format(name, value) {\n    if (this._length !== 0) {\n      return super.format(name, value);\n    }\n    let target = this, index = 0;\n    while (target != null && target.statics.scope !== Parchment.Scope.BLOCK_BLOT) {\n      index += target.offset(target.parent);\n      target = target.parent;\n    }\n    if (target != null) {\n      this._length = Cursor.CONTENTS.length;\n      target.optimize();\n      target.formatAt(index, Cursor.CONTENTS.length, name, value);\n      this._length = 0;\n    }\n  }\n\n  index(node, offset) {\n    if (node === this.textNode) return 0;\n    return super.index(node, offset);\n  }\n\n  length() {\n    return this._length;\n  }\n\n  position() {\n    return [this.textNode, this.textNode.data.length];\n  }\n\n  remove() {\n    super.remove();\n    this.parent = null;\n  }\n\n  restore() {\n    if (this.selection.composing) return;\n    if (this.parent == null) return;\n    let textNode = this.textNode;\n    let range = this.selection.getNativeRange();\n    let restoreText, start, end;\n    if (range != null && range.start.node === textNode && range.end.node === textNode) {\n      [restoreText, start, end] = [textNode, range.start.offset, range.end.offset];\n    }\n    // Link format will insert text outside of anchor tag\n    while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n      this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n    }\n    if (this.textNode.data !== Cursor.CONTENTS) {\n      let text = this.textNode.data.split(Cursor.CONTENTS).join('');\n      if (this.next instanceof TextBlot) {\n        restoreText = this.next.domNode;\n        this.next.insertAt(0, text);\n        this.textNode.data = Cursor.CONTENTS;\n      } else {\n        this.textNode.data = text;\n        this.parent.insertBefore(Parchment.create(this.textNode), this);\n        this.textNode = document.createTextNode(Cursor.CONTENTS);\n        this.domNode.appendChild(this.textNode);\n      }\n    }\n    this.remove();\n    if (start == null) return;\n    this.selection.emitter.once(Emitter.events.SCROLL_OPTIMIZE, () => {\n      [start, end] = [start, end].map(function(offset) {\n        return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n      });\n      this.selection.setNativeRange(restoreText, start, restoreText, end);\n    });\n  }\n\n  update(mutations) {\n    mutations.forEach((mutation) => {\n      if (mutation.type === 'characterData' && mutation.target === this.textNode) {\n        this.restore();\n      }\n    });\n  }\n\n  value() {\n    return '';\n  }\n}\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = \"\\uFEFF\";   // Zero width no break space\n\n\nexport default Cursor;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/cursor.js","import EventEmitter from 'eventemitter3';\nimport logger from './logger';\n\nlet debug = logger('quill:events');\n\n\nclass Emitter extends EventEmitter {\n  constructor() {\n    super();\n    this.on('error', debug.error);\n  }\n\n  emit() {\n    debug.log.apply(debug, arguments);\n    super.emit.apply(this, arguments);\n  }\n}\n\nEmitter.events = {\n  EDITOR_CHANGE        : 'editor-change',\n  SCROLL_BEFORE_UPDATE : 'scroll-before-update',\n  SCROLL_OPTIMIZE      : 'scroll-optimize',\n  SCROLL_UPDATE        : 'scroll-update',\n  SELECTION_CHANGE     : 'selection-change',\n  TEXT_CHANGE          : 'text-change'\n};\nEmitter.sources = {\n  API    : 'api',\n  SILENT : 'silent',\n  USER   : 'user'\n};\n\n\nexport default Emitter;\n\n\n\n// WEBPACK FOOTER //\n// ./core/emitter.js","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n  var evt = prefix ? prefix + event : event\n    , available = this._events[evt];\n\n  if (exists) return !!available;\n  if (!available) return [];\n  if (available.fn) return [available.fn];\n\n  for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n    ee[i] = available[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  var listener = new EE(fn, context || this)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  var listener = new EE(fn, context || this, true)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n         listeners.fn === fn\n      && (!once || listeners.once)\n      && (!context || listeners.context === context)\n    ) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n           listeners[i].fn !== fn\n        || (once && !listeners[i].once)\n        || (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n  return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/eventemitter3/index.js\n// module id = 37\n// module chunks = 0","let levels = ['error', 'warn', 'log', 'info'];\nlet level = 'warn';\n\nfunction debug(method, ...args) {\n  if (levels.indexOf(method) <= levels.indexOf(level)) {\n    console[method].apply(console, args);  // eslint-disable-line no-console\n  }\n}\n\nfunction namespace(ns) {\n  return levels.reduce(function(logger, method) {\n    logger[method] = debug.bind(console, method, ns);\n    return logger;\n  }, {});\n}\n\ndebug.level = namespace.level = function(newLevel) {\n  level = newLevel;\n};\n\n\nexport default namespace;\n\n\n\n// WEBPACK FOOTER //\n// ./core/logger.js","var clone = (function() {\n'use strict';\n\nvar nativeMap;\ntry {\n  nativeMap = Map;\n} catch(_) {\n  // maybe a reference error because no `Map`. Give it a dummy value that no\n  // value will ever be an instanceof.\n  nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n  nativeSet = Set;\n} catch(_) {\n  nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n  nativePromise = Promise;\n} catch(_) {\n  nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n *    circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n *    a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n *    (optional - defaults to parent prototype).\n*/\nfunction clone(parent, circular, depth, prototype) {\n  var filter;\n  if (typeof circular === 'object') {\n    depth = circular.depth;\n    prototype = circular.prototype;\n    filter = circular.filter;\n    circular = circular.circular;\n  }\n  // maintain two arrays for circular references, where corresponding parents\n  // and children have the same index\n  var allParents = [];\n  var allChildren = [];\n\n  var useBuffer = typeof Buffer != 'undefined';\n\n  if (typeof circular == 'undefined')\n    circular = true;\n\n  if (typeof depth == 'undefined')\n    depth = Infinity;\n\n  // recurse this function so we don't reset allParents and allChildren\n  function _clone(parent, depth) {\n    // cloning null always returns null\n    if (parent === null)\n      return null;\n\n    if (depth === 0)\n      return parent;\n\n    var child;\n    var proto;\n    if (typeof parent != 'object') {\n      return parent;\n    }\n\n    if (parent instanceof nativeMap) {\n      child = new nativeMap();\n    } else if (parent instanceof nativeSet) {\n      child = new nativeSet();\n    } else if (parent instanceof nativePromise) {\n      child = new nativePromise(function (resolve, reject) {\n        parent.then(function(value) {\n          resolve(_clone(value, depth - 1));\n        }, function(err) {\n          reject(_clone(err, depth - 1));\n        });\n      });\n    } else if (clone.__isArray(parent)) {\n      child = [];\n    } else if (clone.__isRegExp(parent)) {\n      child = new RegExp(parent.source, __getRegExpFlags(parent));\n      if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n    } else if (clone.__isDate(parent)) {\n      child = new Date(parent.getTime());\n    } else if (useBuffer && Buffer.isBuffer(parent)) {\n      child = new Buffer(parent.length);\n      parent.copy(child);\n      return child;\n    } else {\n      if (typeof prototype == 'undefined') {\n        proto = Object.getPrototypeOf(parent);\n        child = Object.create(proto);\n      }\n      else {\n        child = Object.create(prototype);\n        proto = prototype;\n      }\n    }\n\n    if (circular) {\n      var index = allParents.indexOf(parent);\n\n      if (index != -1) {\n        return allChildren[index];\n      }\n      allParents.push(parent);\n      allChildren.push(child);\n    }\n\n    if (parent instanceof nativeMap) {\n      var keyIterator = parent.keys();\n      while(true) {\n        var next = keyIterator.next();\n        if (next.done) {\n          break;\n        }\n        var keyChild = _clone(next.value, depth - 1);\n        var valueChild = _clone(parent.get(next.value), depth - 1);\n        child.set(keyChild, valueChild);\n      }\n    }\n    if (parent instanceof nativeSet) {\n      var iterator = parent.keys();\n      while(true) {\n        var next = iterator.next();\n        if (next.done) {\n          break;\n        }\n        var entryChild = _clone(next.value, depth - 1);\n        child.add(entryChild);\n      }\n    }\n\n    for (var i in parent) {\n      var attrs;\n      if (proto) {\n        attrs = Object.getOwnPropertyDescriptor(proto, i);\n      }\n\n      if (attrs && attrs.set == null) {\n        continue;\n      }\n      child[i] = _clone(parent[i], depth - 1);\n    }\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(parent);\n      for (var i = 0; i < symbols.length; i++) {\n        // Don't need to worry about cloning a symbol because it is a primitive,\n        // like a number or string.\n        var symbol = symbols[i];\n        child[symbol] = _clone(parent[symbol], depth - 1);\n      }\n    }\n\n    return child;\n  }\n\n  return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n  if (parent === null)\n    return null;\n\n  var c = function () {};\n  c.prototype = parent;\n  return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n  return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n  var flags = '';\n  if (re.global) flags += 'g';\n  if (re.ignoreCase) flags += 'i';\n  if (re.multiline) flags += 'm';\n  return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n  module.exports = clone;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/clone/clone.js\n// module id = 39\n// module chunks = 0","class Module {\n  constructor(quill, options = {}) {\n    this.quill = quill;\n    this.options = options;\n  }\n}\nModule.DEFAULTS = {};\n\n\nexport default Module;\n\n\n\n// WEBPACK FOOTER //\n// ./core/module.js","import Parchment from 'parchment';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport Emitter from './emitter';\nimport logger from './logger';\n\nlet debug = logger('quill:selection');\n\n\nclass Range {\n  constructor(index, length = 0) {\n    this.index = index;\n    this.length = length;\n  }\n}\n\n\nclass Selection {\n  constructor(scroll, emitter) {\n    this.emitter = emitter;\n    this.scroll = scroll;\n    this.composing = false;\n    this.root = this.scroll.domNode;\n    this.root.addEventListener('compositionstart', () => {\n      this.composing = true;\n    });\n    this.root.addEventListener('compositionend', () => {\n      this.composing = false;\n    });\n    this.cursor = Parchment.create('cursor', this);\n    // savedRange is last non-null range\n    this.lastRange = this.savedRange = new Range(0, 0);\n    ['keyup', 'mouseup', 'mouseleave', 'touchend', 'touchleave', 'focus', 'blur'].forEach((eventName) => {\n      this.root.addEventListener(eventName, () => {\n        // When range used to be a selection and user click within the selection,\n        // the range now being a cursor has not updated yet without setTimeout\n        setTimeout(this.update.bind(this, Emitter.sources.USER), 100);\n      });\n    });\n    this.emitter.on(Emitter.events.EDITOR_CHANGE, (type, delta) => {\n      if (type === Emitter.events.TEXT_CHANGE && delta.length() > 0) {\n        this.update(Emitter.sources.SILENT);\n      }\n    });\n    this.emitter.on(Emitter.events.SCROLL_BEFORE_UPDATE, () => {\n      let native = this.getNativeRange();\n      if (native == null) return;\n      if (native.start.node === this.cursor.textNode) return;  // cursor.restore() will handle\n      // TODO unclear if this has negative side effects\n      this.emitter.once(Emitter.events.SCROLL_UPDATE, () => {\n        try {\n          this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n        } catch (ignored) {}\n      });\n    });\n    this.update(Emitter.sources.SILENT);\n  }\n\n  focus() {\n    if (this.hasFocus()) return;\n    let bodyTop = document.body.scrollTop;\n    this.root.focus();\n    document.body.scrollTop = bodyTop;\n    this.setRange(this.savedRange);\n  }\n\n  format(format, value) {\n    this.scroll.update();\n    let nativeRange = this.getNativeRange();\n    if (nativeRange == null || !nativeRange.native.collapsed || Parchment.query(format, Parchment.Scope.BLOCK)) return;\n    if (nativeRange.start.node !== this.cursor.textNode) {\n      let blot = Parchment.find(nativeRange.start.node, false);\n      if (blot == null) return;\n      // TODO Give blot ability to not split\n      if (blot instanceof Parchment.Leaf) {\n        let after = blot.split(nativeRange.start.offset);\n        blot.parent.insertBefore(this.cursor, after);\n      } else {\n        blot.insertBefore(this.cursor, nativeRange.start.node);  // Should never happen\n      }\n      this.cursor.attach();\n    }\n    this.cursor.format(format, value);\n    this.scroll.optimize();\n    this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n    this.update();\n  }\n\n  getBounds(index, length = 0) {\n    let scrollLength = this.scroll.length();\n    index = Math.min(index, scrollLength - 1);\n    length = Math.min(index + length, scrollLength - 1) - index;\n    let bounds, node, [leaf, offset] = this.scroll.leaf(index);\n    if (leaf == null) return null;\n    [node, offset] = leaf.position(offset, true);\n    let range = document.createRange();\n    if (length > 0) {\n      range.setStart(node, offset);\n      [leaf, offset] = this.scroll.leaf(index + length);\n      if (leaf == null) return null;\n      [node, offset] = leaf.position(offset, true);\n      range.setEnd(node, offset);\n      bounds = range.getBoundingClientRect();\n    } else {\n      let side = 'left';\n      let rect;\n      if (node instanceof Text) {\n        if (offset < node.data.length) {\n          range.setStart(node, offset);\n          range.setEnd(node, offset + 1);\n        } else {\n          range.setStart(node, offset - 1);\n          range.setEnd(node, offset);\n          side = 'right';\n        }\n        rect = range.getBoundingClientRect();\n      } else {\n        rect = leaf.domNode.getBoundingClientRect();\n        if (offset > 0) side = 'right';\n      }\n      bounds = {\n        height: rect.height,\n        left: rect[side],\n        width: 0,\n        top: rect.top\n      };\n    }\n    let containerBounds = this.root.parentNode.getBoundingClientRect();\n    return {\n      left: bounds.left - containerBounds.left,\n      right: bounds.left + bounds.width - containerBounds.left,\n      top: bounds.top - containerBounds.top,\n      bottom: bounds.top + bounds.height - containerBounds.top,\n      height: bounds.height,\n      width: bounds.width\n    };\n  }\n\n  getNativeRange() {\n    let selection = document.getSelection();\n    if (selection == null || selection.rangeCount <= 0) return null;\n    let nativeRange = selection.getRangeAt(0);\n    if (nativeRange == null) return null;\n    if (!contains(this.root, nativeRange.startContainer) ||\n        (!nativeRange.collapsed && !contains(this.root, nativeRange.endContainer))) {\n      return null;\n    }\n    let range = {\n      start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n      end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n      native: nativeRange\n    };\n    [range.start, range.end].forEach(function(position) {\n      let node = position.node, offset = position.offset;\n      while (!(node instanceof Text) && node.childNodes.length > 0) {\n        if (node.childNodes.length > offset) {\n          node = node.childNodes[offset];\n          offset = 0;\n        } else if (node.childNodes.length === offset) {\n          node = node.lastChild;\n          offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n        } else {\n          break;\n        }\n      }\n      position.node = node, position.offset = offset;\n    });\n    debug.info('getNativeRange', range);\n    return range;\n  }\n\n  getRange() {\n    let range = this.getNativeRange();\n    if (range == null) return [null, null];\n    let positions = [[range.start.node, range.start.offset]];\n    if (!range.native.collapsed) {\n      positions.push([range.end.node, range.end.offset]);\n    }\n    let indexes = positions.map((position) => {\n      let [node, offset] = position;\n      let blot = Parchment.find(node, true);\n      let index = blot.offset(this.scroll);\n      if (offset === 0) {\n        return index;\n      } else if (blot instanceof Parchment.Container) {\n        return index + blot.length();\n      } else {\n        return index + blot.index(node, offset);\n      }\n    });\n    let start = Math.min(...indexes), end = Math.max(...indexes);\n    return [new Range(start, end-start), range];\n  }\n\n  hasFocus() {\n    return document.activeElement === this.root;\n  }\n\n  scrollIntoView(range = this.lastRange) {\n    if (range == null) return;\n    let bounds = this.getBounds(range.index, range.length);\n    if (bounds == null) return;\n    if (this.root.offsetHeight < bounds.bottom) {\n      let [line, ] = this.scroll.line(Math.min(range.index + range.length, this.scroll.length()-1));\n      this.root.scrollTop = line.domNode.offsetTop + line.domNode.offsetHeight - this.root.offsetHeight;\n    } else if (bounds.top < 0) {\n      let [line, ] = this.scroll.line(Math.min(range.index, this.scroll.length()-1));\n      this.root.scrollTop = line.domNode.offsetTop;\n    }\n  }\n\n  setNativeRange(startNode, startOffset, endNode = startNode, endOffset = startOffset, force = false) {\n    debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n    if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n      return;\n    }\n    let selection = document.getSelection();\n    if (selection == null) return;\n    if (startNode != null) {\n      if (!this.hasFocus()) this.root.focus();\n      let nativeRange = this.getNativeRange();\n      if (nativeRange == null || force ||\n          startNode !== nativeRange.start.node || startOffset !== nativeRange.start.offset ||\n          endNode !== nativeRange.end.node || endOffset !== nativeRange.end.offset) {\n        let range = document.createRange();\n        range.setStart(startNode, startOffset);\n        range.setEnd(endNode, endOffset);\n        selection.removeAllRanges();\n        selection.addRange(range);\n      }\n    } else {\n      selection.removeAllRanges();\n      this.root.blur();\n      document.body.focus();  // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n    }\n  }\n\n  setRange(range, force = false, source = Emitter.sources.API) {\n    if (typeof force === 'string') {\n      source = force;\n      force = false;\n    }\n    debug.info('setRange', range);\n    if (range != null) {\n      let indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n      let args = [];\n      let scrollLength = this.scroll.length();\n      indexes.forEach((index, i) => {\n        index = Math.min(scrollLength - 1, index);\n        let node, [leaf, offset] = this.scroll.leaf(index);\n        [node, offset] = leaf.position(offset, i !== 0);\n        args.push(node, offset);\n      });\n      if (args.length < 2) {\n        args = args.concat(args);\n      }\n      this.setNativeRange(...args, force);\n    } else {\n      this.setNativeRange(null);\n    }\n    this.update(source);\n  }\n\n  update(source = Emitter.sources.USER) {\n    let nativeRange, oldRange = this.lastRange;\n    [this.lastRange, nativeRange] = this.getRange();\n    if (this.lastRange != null) {\n      this.savedRange = this.lastRange;\n    }\n    if (!equal(oldRange, this.lastRange)) {\n      if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n        this.cursor.restore();\n      }\n      let args = [Emitter.events.SELECTION_CHANGE, clone(this.lastRange), clone(oldRange), source];\n      this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n      if (source !== Emitter.sources.SILENT) {\n        this.emitter.emit(...args);\n      }\n    }\n  }\n}\n\n\nfunction contains(parent, descendant) {\n  try {\n    // Firefox inserts inaccessible nodes around video elements\n    descendant.parentNode;\n  } catch (e) {\n    return false;\n  }\n  // IE11 has bug with Text nodes\n  // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n  if (descendant instanceof Text) {\n    descendant = descendant.parentNode;\n  }\n  return parent.contains(descendant);\n}\n\n\nexport { Range, Selection as default };\n\n\n\n// WEBPACK FOOTER //\n// ./core/selection.js","class Theme {\n  constructor(quill, options) {\n    this.quill = quill;\n    this.options = options;\n    this.modules = {};\n  }\n\n  init() {\n    Object.keys(this.options.modules).forEach((name) => {\n      if (this.modules[name] == null) {\n        this.addModule(name);\n      }\n    });\n  }\n\n  addModule(name) {\n    let moduleClass = this.quill.constructor.import(`modules/${name}`);\n    this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n    return this.modules[name];\n  }\n}\nTheme.DEFAULTS = {\n  modules: {}\n};\nTheme.themes = {\n  'default': Theme\n};\n\n\nexport default Theme;\n\n\n\n// WEBPACK FOOTER //\n// ./core/theme.js","import Parchment from 'parchment';\nimport Block, { BlockEmbed } from './block';\n\n\nclass Container extends Parchment.Container { }\nContainer.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Container;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/container.js","import Parchment from 'parchment';\nimport Emitter from '../core/emitter';\nimport Block, { BlockEmbed } from './block';\nimport Break from './break';\nimport Container from './container';\nimport CodeBlock from '../formats/code';\n\n\nfunction isLine(blot) {\n  return (blot instanceof Block || blot instanceof BlockEmbed);\n}\n\n\nclass Scroll extends Parchment.Scroll {\n  constructor(domNode, config) {\n    super(domNode);\n    this.emitter = config.emitter;\n    if (Array.isArray(config.whitelist)) {\n      this.whitelist = config.whitelist.reduce(function(whitelist, format) {\n        whitelist[format] = true;\n        return whitelist;\n      }, {});\n    }\n    this.optimize();\n    this.enable();\n  }\n\n  deleteAt(index, length) {\n    let [first, offset] = this.line(index);\n    let [last, ] = this.line(index + length);\n    super.deleteAt(index, length);\n    if (last != null && first !== last && offset > 0 &&\n        !(first instanceof BlockEmbed) && !(last instanceof BlockEmbed)) {\n      if (last instanceof CodeBlock) {\n        last.deleteAt(last.length() - 1, 1);\n      }\n      let ref = last.children.head instanceof Break ? null : last.children.head;\n      first.moveChildren(last, ref);\n      first.remove();\n    }\n    this.optimize();\n  }\n\n  enable(enabled = true) {\n    this.domNode.setAttribute('contenteditable', enabled);\n  }\n\n  formatAt(index, length, format, value) {\n    if (this.whitelist != null && !this.whitelist[format]) return;\n    super.formatAt(index, length, format, value);\n    this.optimize();\n  }\n\n  insertAt(index, value, def) {\n    if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n    if (index >= this.length()) {\n      if (def == null || Parchment.query(value, Parchment.Scope.BLOCK) == null) {\n        let blot = Parchment.create(this.statics.defaultChild);\n        this.appendChild(blot);\n        if (def == null && value.endsWith('\\n')) {\n          value = value.slice(0, -1);\n        }\n        blot.insertAt(0, value, def);\n      } else {\n        let embed = Parchment.create(value, def);\n        this.appendChild(embed);\n      }\n    } else {\n      super.insertAt(index, value, def);\n    }\n    this.optimize();\n  }\n\n  insertBefore(blot, ref) {\n    if (blot.statics.scope === Parchment.Scope.INLINE_BLOT) {\n      let wrapper = Parchment.create(this.statics.defaultChild);\n      wrapper.appendChild(blot);\n      blot = wrapper;\n    }\n    super.insertBefore(blot, ref);\n  }\n\n  leaf(index) {\n    return this.path(index).pop() || [null, -1];\n  }\n\n  line(index) {\n    if (index === this.length()) {\n      return this.line(index - 1);\n    }\n    return this.descendant(isLine, index);\n  }\n\n  lines(index = 0, length = Number.MAX_VALUE) {\n    let getLines = (blot, index, length) => {\n      let lines = [], lengthLeft = length;\n      blot.children.forEachAt(index, length, function(child, index, length) {\n        if (isLine(child)) {\n          lines.push(child);\n        } else if (child instanceof Parchment.Container) {\n          lines = lines.concat(getLines(child, index, lengthLeft));\n        }\n        lengthLeft -= length;\n      });\n      return lines;\n    };\n    return getLines(this, index, length);\n  }\n\n  optimize(mutations = []) {\n    if (this.batch === true) return;\n    super.optimize(mutations);\n    if (mutations.length > 0) {\n      this.emitter.emit(Emitter.events.SCROLL_OPTIMIZE, mutations);\n    }\n  }\n\n  path(index) {\n    return super.path(index).slice(1);  // Exclude self\n  }\n\n  update(mutations) {\n    if (this.batch === true) return;\n    let source = Emitter.sources.USER;\n    if (typeof mutations === 'string') {\n      source = mutations;\n    }\n    if (!Array.isArray(mutations)) {\n      mutations = this.observer.takeRecords();\n    }\n    if (mutations.length > 0) {\n      this.emitter.emit(Emitter.events.SCROLL_BEFORE_UPDATE, source, mutations);\n    }\n    super.update(mutations.concat([]));   // pass copy\n    if (mutations.length > 0) {\n      this.emitter.emit(Emitter.events.SCROLL_UPDATE, source, mutations);\n    }\n  }\n}\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Scroll;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/scroll.js","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nimport { AlignAttribute, AlignStyle } from '../formats/align';\nimport { BackgroundStyle } from '../formats/background';\nimport { ColorStyle } from '../formats/color';\nimport { DirectionAttribute, DirectionStyle } from '../formats/direction';\nimport { FontStyle } from '../formats/font';\nimport { SizeStyle } from '../formats/size';\n\nlet debug = logger('quill:clipboard');\n\nconst CLIPBOARD_CONFIG = [\n  [Node.TEXT_NODE, matchText],\n  ['br', matchBreak],\n  [Node.ELEMENT_NODE, matchNewline],\n  [Node.ELEMENT_NODE, matchBlot],\n  [Node.ELEMENT_NODE, matchSpacing],\n  [Node.ELEMENT_NODE, matchAttributor],\n  [Node.ELEMENT_NODE, matchStyles],\n  ['b', matchAlias.bind(matchAlias, 'bold')],\n  ['i', matchAlias.bind(matchAlias, 'italic')],\n  ['style', matchIgnore]\n];\n\nconst ATTRIBUTE_ATTRIBUTORS = [\n  AlignAttribute,\n  DirectionAttribute\n].reduce(function(memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\nconst STYLE_ATTRIBUTORS = [\n  AlignStyle,\n  BackgroundStyle,\n  ColorStyle,\n  DirectionStyle,\n  FontStyle,\n  SizeStyle\n].reduce(function(memo, attr) {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\n\n\nclass Clipboard extends Module {\n  constructor(quill, options) {\n    super(quill, options);\n    this.quill.root.addEventListener('paste', this.onPaste.bind(this));\n    this.container = this.quill.addContainer('ql-clipboard');\n    this.container.setAttribute('contenteditable', true);\n    this.container.setAttribute('tabindex', -1);\n    this.matchers = [];\n    CLIPBOARD_CONFIG.concat(this.options.matchers).forEach((pair) => {\n      this.addMatcher(...pair);\n    });\n  }\n\n  addMatcher(selector, matcher) {\n    this.matchers.push([selector, matcher]);\n  }\n\n  convert(html) {\n    const DOM_KEY = '__ql-matcher';\n    if (typeof html === 'string') {\n      this.container.innerHTML = html;\n    }\n    let textMatchers = [], elementMatchers = [];\n    this.matchers.forEach((pair) => {\n      let [selector, matcher] = pair;\n      switch (selector) {\n        case Node.TEXT_NODE:\n          textMatchers.push(matcher);\n          break;\n        case Node.ELEMENT_NODE:\n          elementMatchers.push(matcher);\n          break;\n        default:\n          [].forEach.call(this.container.querySelectorAll(selector), (node) => {\n            // TODO use weakmap\n            node[DOM_KEY] = node[DOM_KEY] || [];\n            node[DOM_KEY].push(matcher);\n          });\n          break;\n      }\n    });\n    let traverse = (node) => {  // Post-order\n      if (node.nodeType === node.TEXT_NODE) {\n        return textMatchers.reduce(function(delta, matcher) {\n          return matcher(node, delta);\n        }, new Delta());\n      } else if (node.nodeType === node.ELEMENT_NODE) {\n        return [].reduce.call(node.childNodes || [], (delta, childNode) => {\n          let childrenDelta = traverse(childNode);\n          if (childNode.nodeType === node.ELEMENT_NODE) {\n            childrenDelta = elementMatchers.reduce(function(childrenDelta, matcher) {\n              return matcher(childNode, childrenDelta);\n            }, childrenDelta);\n            childrenDelta = (childNode[DOM_KEY] || []).reduce(function(childrenDelta, matcher) {\n              return matcher(childNode, childrenDelta);\n            }, childrenDelta);\n          }\n          return delta.concat(childrenDelta);\n        }, new Delta());\n      } else {\n        return new Delta();\n      }\n    };\n    let delta = traverse(this.container);\n    // Remove trailing newline\n    if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n      delta = delta.compose(new Delta().retain(delta.length() - 1).delete(1));\n    }\n    debug.log('convert', this.container.innerHTML, delta);\n    this.container.innerHTML = '';\n    return delta;\n  }\n\n  dangerouslyPasteHTML(index, html, source = Quill.sources.API) {\n    if (typeof index === 'string') {\n      return this.quill.setContents(this.convert(index), html);\n    } else {\n      let paste = this.convert(html);\n      return this.quill.updateContents(new Delta().retain(index).concat(paste), source);\n    }\n  }\n\n  onPaste(e) {\n    if (e.defaultPrevented || !this.quill.isEnabled()) return;\n    let range = this.quill.getSelection();\n    let delta = new Delta().retain(range.index).delete(range.length);\n    let bodyTop = document.body.scrollTop;\n    this.container.focus();\n    setTimeout(() => {\n      this.quill.selection.update(Quill.sources.SILENT);\n      delta = delta.concat(this.convert());\n      this.quill.updateContents(delta, Quill.sources.USER);\n      // range.length contributes to delta.length()\n      this.quill.setSelection(delta.length() - range.length, Quill.sources.SILENT);\n      document.body.scrollTop = bodyTop;\n      this.quill.selection.scrollIntoView();\n    }, 1);\n  }\n}\nClipboard.DEFAULTS = {\n  matchers: []\n};\n\n\nfunction computeStyle(node) {\n  if (node.nodeType !== Node.ELEMENT_NODE) return {};\n  const DOM_KEY = '__ql-computed-style';\n  return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n  let endText = \"\";\n  for (let i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n    let op  = delta.ops[i];\n    if (typeof op.insert !== 'string') break;\n    endText = op.insert + endText;\n  }\n  return endText.slice(-1*text.length) === text;\n}\n\nfunction isLine(node) {\n  if (node.childNodes.length === 0) return false;   // Exclude embed blocks\n  let style = computeStyle(node);\n  return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction matchAlias(format, node, delta) {\n  return delta.compose(new Delta().retain(delta.length(), { [format]: true }));\n}\n\nfunction matchAttributor(node, delta) {\n  let attributes = Parchment.Attributor.Attribute.keys(node);\n  let classes = Parchment.Attributor.Class.keys(node);\n  let styles = Parchment.Attributor.Style.keys(node);\n  let formats = {};\n  attributes.concat(classes).concat(styles).forEach((name) => {\n    let attr = Parchment.query(name, Parchment.Scope.ATTRIBUTE);\n    if (attr != null) {\n      formats[attr.attrName] = attr.value(node);\n      if (formats[attr.attrName]) return;\n    }\n    if (ATTRIBUTE_ATTRIBUTORS[name] != null) {\n      attr = ATTRIBUTE_ATTRIBUTORS[name];\n      formats[attr.attrName] = attr.value(node);\n    }\n    if (STYLE_ATTRIBUTORS[name] != null) {\n      attr = STYLE_ATTRIBUTORS[name];\n      formats[attr.attrName] = attr.value(node);\n    }\n  });\n  if (Object.keys(formats).length > 0) {\n    delta = delta.compose(new Delta().retain(delta.length(), formats));\n  }\n  return delta;\n}\n\nfunction matchBlot(node, delta) {\n  let match = Parchment.query(node);\n  if (match == null) return delta;\n  if (match.prototype instanceof Parchment.Embed) {\n    let embed = {};\n    let value = match.value(node);\n    if (value != null) {\n      embed[match.blotName] = value;\n      delta = new Delta().insert(embed, match.formats(node));\n    }\n  } else if (typeof match.formats === 'function') {\n    let formats = { [match.blotName]: match.formats(node) };\n    delta = delta.compose(new Delta().retain(delta.length(), formats));\n  }\n  return delta;\n}\n\nfunction matchBreak(node, delta) {\n  if (!deltaEndsWith(delta, '\\n')) {\n    delta.insert('\\n');\n  }\n  return delta;\n}\n\nfunction matchIgnore() {\n  return new Delta();\n}\n\nfunction matchNewline(node, delta) {\n  if (isLine(node) && !deltaEndsWith(delta, '\\n')) {\n    delta.insert('\\n');\n  }\n  return delta;\n}\n\nfunction matchSpacing(node, delta) {\n  if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n    let nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n    if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight*1.5) {\n      delta.insert('\\n');\n    }\n  }\n  return delta;\n}\n\nfunction matchStyles(node, delta) {\n  let formats = {};\n  let style = node.style || {};\n  if (style.fontWeight && computeStyle(node).fontWeight === 'bold') {\n    formats.bold = true;\n  }\n  if (Object.keys(formats).length > 0) {\n    delta = delta.compose(new Delta().retain(delta.length(), formats));\n  }\n  if (parseFloat(style.textIndent || 0) > 0) {  // Could be 0.5in\n    delta = new Delta().insert('\\t').concat(delta);\n  }\n  return delta;\n}\n\nfunction matchText(node, delta) {\n  let text = node.data;\n  // Word represents empty line with <o:p>&nbsp;</o:p>\n  if (node.parentNode.tagName === 'O:P') {\n    return delta.insert(text.trim());\n  }\n  if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n    // eslint-disable-next-line func-style\n    let replacer = function(collapse, match) {\n      match = match.replace(/[^\\u00a0]/g, '');    // \\u00a0 is nbsp;\n      return match.length < 1 && collapse ? ' ' : match;\n    };\n    text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n    text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true));  // collapse whitespace\n    if ((node.previousSibling == null && isLine(node.parentNode)) ||\n        (node.previousSibling != null && isLine(node.previousSibling))) {\n      text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n    }\n    if ((node.nextSibling == null && isLine(node.parentNode)) ||\n        (node.nextSibling != null && isLine(node.nextSibling))) {\n      text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n    }\n  }\n  return delta.insert(text);\n}\n\n\nexport { Clipboard as default, matchAttributor, matchBlot, matchNewline, matchSpacing, matchText };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/clipboard.js","import Parchment from 'parchment';\n\nlet config = {\n  scope: Parchment.Scope.BLOCK,\n  whitelist: ['right', 'center', 'justify']\n};\n\nlet AlignAttribute = new Parchment.Attributor.Attribute('align', 'align', config);\nlet AlignClass = new Parchment.Attributor.Class('align', 'ql-align', config);\nlet AlignStyle = new Parchment.Attributor.Style('align', 'text-align', config);\n\nexport { AlignAttribute, AlignClass, AlignStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/align.js","import Parchment from 'parchment';\nimport { ColorAttributor } from './color';\n\nlet BackgroundClass = new Parchment.Attributor.Class('background', 'ql-bg', {\n  scope: Parchment.Scope.INLINE\n});\nlet BackgroundStyle = new ColorAttributor('background', 'background-color', {\n  scope: Parchment.Scope.INLINE\n});\n\nexport { BackgroundClass, BackgroundStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/background.js","import Parchment from 'parchment';\n\nclass ColorAttributor extends Parchment.Attributor.Style {\n  value(domNode) {\n    let value = super.value(domNode);\n    if (!value.startsWith('rgb(')) return value;\n    value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n    return '#' + value.split(',').map(function(component) {\n      return ('00' + parseInt(component).toString(16)).slice(-2);\n    }).join('');\n  }\n}\n\nlet ColorClass = new Parchment.Attributor.Class('color', 'ql-color', {\n  scope: Parchment.Scope.INLINE\n});\nlet ColorStyle = new ColorAttributor('color', 'color', {\n  scope: Parchment.Scope.INLINE\n});\n\nexport { ColorAttributor, ColorClass, ColorStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/color.js","import Parchment from 'parchment';\n\nlet config = {\n  scope: Parchment.Scope.BLOCK,\n  whitelist: ['rtl']\n};\n\nlet DirectionAttribute = new Parchment.Attributor.Attribute('direction', 'dir', config);\nlet DirectionClass = new Parchment.Attributor.Class('direction', 'ql-direction', config);\nlet DirectionStyle = new Parchment.Attributor.Style('direction', 'direction', config);\n\nexport { DirectionAttribute, DirectionClass, DirectionStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/direction.js","import Parchment from 'parchment';\n\nlet config = {\n  scope: Parchment.Scope.INLINE,\n  whitelist: ['serif', 'monospace']\n};\n\nlet FontClass = new Parchment.Attributor.Class('font', 'ql-font', config);\n\nclass FontStyleAttributor extends Parchment.Attributor.Style {\n  value(node) {\n    return super.value(node).replace(/[\"']/g, '');\n  }\n}\n\nlet FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexport { FontStyle, FontClass };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/font.js","import Parchment from 'parchment';\n\nlet SizeClass = new Parchment.Attributor.Class('size', 'ql-size', {\n  scope: Parchment.Scope.INLINE,\n  whitelist: ['small', 'large', 'huge']\n});\nlet SizeStyle = new Parchment.Attributor.Style('size', 'font-size', {\n  scope: Parchment.Scope.INLINE,\n  whitelist: ['10px', '18px', '32px']\n});\n\nexport { SizeClass, SizeStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/size.js","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\n\n\nclass History extends Module {\n  constructor(quill, options) {\n    super(quill, options);\n    this.lastRecorded = 0;\n    this.ignoreChange = false;\n    this.clear();\n    this.quill.on(Quill.events.EDITOR_CHANGE, (eventName, delta, oldDelta, source) => {\n      if (eventName !== Quill.events.TEXT_CHANGE || this.ignoreChange) return;\n      if (!this.options.userOnly || source === Quill.sources.USER) {\n        this.record(delta, oldDelta);\n      } else {\n        this.transform(delta);\n      }\n    });\n    this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, this.undo.bind(this));\n    this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, this.redo.bind(this));\n    if (/Win/i.test(navigator.platform)) {\n      this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, this.redo.bind(this));\n    }\n  }\n\n  change(source, dest) {\n    if (this.stack[source].length === 0) return;\n    let delta = this.stack[source].pop();\n    this.lastRecorded = 0;\n    this.ignoreChange = true;\n    this.quill.updateContents(delta[source], Quill.sources.USER);\n    this.ignoreChange = false;\n    let index = getLastChangeIndex(delta[source]);\n    this.quill.setSelection(index);\n    this.quill.selection.scrollIntoView();\n    this.stack[dest].push(delta);\n  }\n\n  clear() {\n    this.stack = { undo: [], redo: [] };\n  }\n\n  record(changeDelta, oldDelta) {\n    if (changeDelta.ops.length === 0) return;\n    this.stack.redo = [];\n    let undoDelta = this.quill.getContents().diff(oldDelta);\n    let timestamp = Date.now();\n    if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n      let delta = this.stack.undo.pop();\n      undoDelta = undoDelta.compose(delta.undo);\n      changeDelta = delta.redo.compose(changeDelta);\n    } else {\n      this.lastRecorded = timestamp;\n    }\n    this.stack.undo.push({\n      redo: changeDelta,\n      undo: undoDelta\n    });\n    if (this.stack.undo.length > this.options.maxStack) {\n      this.stack.undo.shift();\n    }\n  }\n\n  redo() {\n    this.change('redo', 'undo');\n  }\n\n  transform(delta) {\n    this.stack.undo.forEach(function(change) {\n      change.undo = delta.transform(change.undo, true);\n      change.redo = delta.transform(change.redo, true);\n    });\n    this.stack.redo.forEach(function(change) {\n      change.undo = delta.transform(change.undo, true);\n      change.redo = delta.transform(change.redo, true);\n    });\n  }\n\n  undo() {\n    this.change('undo', 'redo');\n  }\n}\nHistory.DEFAULTS = {\n  delay: 1000,\n  maxStack: 100,\n  userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n  let lastOp = delta.ops[delta.ops.length - 1];\n  if (lastOp == null) return false;\n  if (lastOp.insert != null) {\n    return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n  }\n  if (lastOp.attributes != null) {\n    return Object.keys(lastOp.attributes).some(function(attr) {\n      return Parchment.query(attr, Parchment.Scope.BLOCK) != null;\n    });\n  }\n  return false;\n}\n\nfunction getLastChangeIndex(delta) {\n  let deleteLength = delta.reduce(function(length, op) {\n    length += (op.delete || 0);\n    return length;\n  }, 0);\n  let changeIndex = delta.length() - deleteLength;\n  if (endsWithNewlineChange(delta)) {\n    changeIndex -= 1;\n  }\n  return changeIndex;\n}\n\n\nexport { History as default, getLastChangeIndex };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/history.js","import clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:keyboard');\n\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\n\nclass Keyboard extends Module {\n  static match(evt, binding) {\n    binding = normalize(binding);\n    if (!!binding.shortKey !== evt[SHORTKEY] && binding.shortKey !== null) return false;\n    if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function(key) {\n      return (key != SHORTKEY && !!binding[key] !== evt[key] && binding[key] !== null);\n    })) {\n      return false;\n    }\n    return binding.key === (evt.which || evt.keyCode);\n  }\n\n  constructor(quill, options) {\n    super(quill, options);\n    this.bindings = {};\n    Object.keys(this.options.bindings).forEach((name) => {\n      if (this.options.bindings[name]) {\n        this.addBinding(this.options.bindings[name]);\n      }\n    });\n    this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n    this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function() {});\n    this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n    this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^$/ }, handleDelete);\n    this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n    this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n    if (/Trident/i.test(navigator.userAgent)) {\n      this.addBinding({ key: Keyboard.keys.BACKSPACE, shortKey: true }, handleBackspace);\n      this.addBinding({ key: Keyboard.keys.DELETE, shortKey: true }, handleDelete);\n    }\n    this.listen();\n  }\n\n  addBinding(key, context = {}, handler = {}) {\n    let binding = normalize(key);\n    if (binding == null || binding.key == null) {\n      return debug.warn('Attempted to add invalid keyboard binding', binding);\n    }\n    if (typeof context === 'function') {\n      context = { handler: context };\n    }\n    if (typeof handler === 'function') {\n      handler = { handler: handler };\n    }\n    binding = extend(binding, context, handler);\n    this.bindings[binding.key] = this.bindings[binding.key] || [];\n    this.bindings[binding.key].push(binding);\n  }\n\n  listen() {\n    this.quill.root.addEventListener('keydown', (evt) => {\n      if (evt.defaultPrevented) return;\n      let which = evt.which || evt.keyCode;\n      let bindings = (this.bindings[which] || []).filter(function(binding) {\n        return Keyboard.match(evt, binding);\n      });\n      if (bindings.length === 0) return;\n      let range = this.quill.getSelection();\n      if (range == null || !this.quill.hasFocus()) return;\n      let [line, offset] = this.quill.scroll.line(range.index);\n      let [leafStart, offsetStart] = this.quill.scroll.leaf(range.index);\n      let [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.scroll.leaf(range.index + range.length);\n      let prefixText = leafStart instanceof Parchment.Text ? leafStart.value().slice(0, offsetStart) : '';\n      let suffixText = leafEnd instanceof Parchment.Text ? leafEnd.value().slice(offsetEnd) : '';\n      let curContext = {\n        collapsed: range.length === 0,\n        empty: range.length === 0 && line.length() <= 1,\n        format: this.quill.getFormat(range),\n        offset: offset,\n        prefix: prefixText,\n        suffix: suffixText\n      };\n      let prevented = bindings.some((binding) => {\n        if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n        if (binding.empty != null && binding.empty !== curContext.empty) return false;\n        if (binding.offset != null && binding.offset !== curContext.offset) return false;\n        if (Array.isArray(binding.format)) {\n          // any format is present\n          if (binding.format.every(function(name) {\n            return curContext.format[name] == null;\n          })) {\n            return false;\n          }\n        } else if (typeof binding.format === 'object') {\n          // all formats must match\n          if (!Object.keys(binding.format).every(function(name) {\n            if (binding.format[name] === true) return curContext.format[name] != null;\n            if (binding.format[name] === false) return curContext.format[name] == null;\n            return equal(binding.format[name], curContext.format[name]);\n          })) {\n            return false;\n          }\n        }\n        if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n        if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n        return binding.handler.call(this, range, curContext) !== true;\n      });\n      if (prevented) {\n        evt.preventDefault();\n      }\n    });\n  }\n}\n\nKeyboard.keys = {\n  BACKSPACE: 8,\n  TAB: 9,\n  ENTER: 13,\n  ESCAPE: 27,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n  bindings: {\n    'bold'      : makeFormatHandler('bold'),\n    'italic'    : makeFormatHandler('italic'),\n    'underline' : makeFormatHandler('underline'),\n    'indent': {\n      // highlight tab or tab at beginning of list, indent or blockquote\n      key: Keyboard.keys.TAB,\n      format: ['blockquote', 'indent', 'list'],\n      handler: function(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '+1', Quill.sources.USER);\n      }\n    },\n    'outdent': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      format: ['blockquote', 'indent', 'list'],\n      // highlight tab or tab at beginning of list, indent or blockquote\n      handler: function(range, context) {\n        if (context.collapsed && context.offset !== 0) return true;\n        this.quill.format('indent', '-1', Quill.sources.USER);\n      }\n    },\n    'outdent backspace': {\n      key: Keyboard.keys.BACKSPACE,\n      collapsed: true,\n      format: ['blockquote', 'indent', 'list'],\n      offset: 0,\n      handler: function(range, context) {\n        if (context.format.indent != null) {\n          this.quill.format('indent', '-1', Quill.sources.USER);\n        } else if (context.format.blockquote != null) {\n          this.quill.format('blockquote', false, Quill.sources.USER);\n        } else if (context.format.list != null) {\n          this.quill.format('list', false, Quill.sources.USER);\n        }\n      }\n    },\n    'indent code-block': makeCodeBlockHandler(true),\n    'outdent code-block': makeCodeBlockHandler(false),\n    'remove tab': {\n      key: Keyboard.keys.TAB,\n      shiftKey: true,\n      collapsed: true,\n      prefix: /\\t$/,\n      handler: function(range) {\n        this.quill.deleteText(range.index - 1, 1, Quill.sources.USER);\n      }\n    },\n    'tab': {\n      key: Keyboard.keys.TAB,\n      handler: function(range, context) {\n        if (!context.collapsed) {\n          this.quill.scroll.deleteAt(range.index, range.length);\n        }\n        this.quill.insertText(range.index, '\\t', Quill.sources.USER);\n        this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n      }\n    },\n    'list empty enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['list'],\n      empty: true,\n      handler: function(range, context) {\n        this.quill.format('list', false, Quill.sources.USER);\n        if (context.format.indent) {\n          this.quill.format('indent', false, Quill.sources.USER);\n        }\n      }\n    },\n    'header enter': {\n      key: Keyboard.keys.ENTER,\n      collapsed: true,\n      format: ['header'],\n      suffix: /^$/,\n      handler: function(range) {\n        this.quill.scroll.insertAt(range.index, '\\n');\n        this.quill.formatText(range.index + 1, 1, 'header', false, Quill.sources.USER);\n        this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n        this.quill.selection.scrollIntoView();\n      }\n    },\n    'list autofill': {\n      key: ' ',\n      collapsed: true,\n      format: { list: false },\n      prefix: /^(1\\.|-)$/,\n      handler: function(range, context) {\n        let length = context.prefix.length;\n        this.quill.scroll.deleteAt(range.index - length, length);\n        this.quill.formatLine(range.index - length, 1, 'list', length === 1 ? 'bullet' : 'ordered', Quill.sources.USER);\n        this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n      }\n    }\n  }\n};\n\n\nfunction handleBackspace(range, context) {\n  if (range.index === 0) return;\n  let [line, ] = this.quill.scroll.line(range.index);\n  let formats = {};\n  if (context.offset === 0) {\n    let curFormats = line.formats();\n    let prevFormats = this.quill.getFormat(range.index-1, 1);\n    formats = DeltaOp.attributes.diff(curFormats, prevFormats) || {};\n  }\n  this.quill.deleteText(range.index-1, 1, Quill.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    this.quill.formatLine(range.index-1, 1, formats, Quill.sources.USER);\n  }\n  this.quill.selection.scrollIntoView();\n}\n\nfunction handleDelete(range) {\n  if (range.index >= this.quill.getLength() - 1) return;\n  this.quill.deleteText(range.index, 1, Quill.sources.USER);\n}\n\nfunction handleDeleteRange(range) {\n  this.quill.deleteText(range, Quill.sources.USER);\n  this.quill.setSelection(range.index, Quill.sources.SILENT);\n  this.quill.selection.scrollIntoView();\n}\n\nfunction handleEnter(range, context) {\n  if (range.length > 0) {\n    this.quill.scroll.deleteAt(range.index, range.length);  // So we do not trigger text-change\n  }\n  let lineFormats = Object.keys(context.format).reduce(function(lineFormats, format) {\n    if (Parchment.query(format, Parchment.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n      lineFormats[format] = context.format[format];\n    }\n    return lineFormats;\n  }, {});\n  this.quill.insertText(range.index, '\\n', lineFormats, Quill.sources.USER);\n  this.quill.selection.scrollIntoView();\n  Object.keys(context.format).forEach((name) => {\n    if (lineFormats[name] != null) return;\n    if (Array.isArray(context.format[name])) return;\n    if (name === 'link') return;\n    this.quill.format(name, context.format[name], Quill.sources.USER);\n  });\n}\n\nfunction makeCodeBlockHandler(indent) {\n  return {\n    key: Keyboard.keys.TAB,\n    shiftKey: !indent,\n    format: {'code-block': true },\n    handler: function(range) {\n      let CodeBlock = Parchment.query('code-block');\n      let index = range.index, length = range.length;\n      let [block, offset] = this.quill.scroll.descendant(CodeBlock, index);\n      if (block == null) return;\n      let scrollOffset = this.quill.scroll.offset(block);\n      let start = block.newlineIndex(offset, true) + 1;\n      let end = block.newlineIndex(scrollOffset + offset + length);\n      let lines = block.domNode.textContent.slice(start, end).split('\\n');\n      offset = 0;\n      lines.forEach((line, i) => {\n        if (indent) {\n          block.insertAt(start + offset, CodeBlock.TAB);\n          offset += CodeBlock.TAB.length;\n          if (i === 0) {\n            index += CodeBlock.TAB.length;\n          } else {\n            length += CodeBlock.TAB.length;\n          }\n        } else if (line.startsWith(CodeBlock.TAB)) {\n          block.deleteAt(start + offset, CodeBlock.TAB.length);\n          offset -= CodeBlock.TAB.length;\n          if (i === 0) {\n            index -= CodeBlock.TAB.length;\n          } else {\n            length -= CodeBlock.TAB.length;\n          }\n        }\n        offset += line.length + 1;\n      });\n      this.quill.update(Quill.sources.USER);\n      this.quill.setSelection(index, length, Quill.sources.SILENT);\n    }\n  };\n}\n\nfunction makeFormatHandler(format) {\n  return {\n    key: format[0].toUpperCase(),\n    shortKey: true,\n    handler: function(range, context) {\n      this.quill.format(format, !context.format[format], Quill.sources.USER);\n    }\n  };\n}\n\nfunction normalize(binding) {\n  if (typeof binding === 'string' || typeof binding === 'number') {\n    return normalize({ key: binding });\n  }\n  if (typeof binding === 'object') {\n    binding = clone(binding, false);\n  }\n  if (typeof binding.key === 'string') {\n    if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n      binding.key = Keyboard.keys[binding.key.toUpperCase()];\n    } else if (binding.key.length === 1) {\n      binding.key = binding.key.toUpperCase().charCodeAt(0);\n    } else {\n      return null;\n    }\n  }\n  return binding;\n}\n\n\nexport default Keyboard;\n\n\n\n// WEBPACK FOOTER //\n// ./modules/keyboard.js","import Parchment from 'parchment';\n\nclass IdentAttributor extends Parchment.Attributor.Class {\n  add(node, value) {\n    if (value === '+1' || value === '-1') {\n      let indent = this.value(node) || 0;\n      value = (value === '+1' ? (indent + 1) : (indent - 1));\n    }\n    if (value === 0) {\n      this.remove(node);\n      return true;\n    } else {\n      return super.add(node, value);\n    }\n  }\n\n  value(node) {\n    return parseInt(super.value(node)) || undefined;  // Don't return NaN\n  }\n}\n\nlet IndentClass = new IdentAttributor('indent', 'ql-indent', {\n  scope: Parchment.Scope.BLOCK,\n  whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexport { IndentClass };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/indent.js","import Block from '../blots/block';\n\n\nclass Blockquote extends Block {}\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\n\nexport default Blockquote;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/blockquote.js","import Block from '../blots/block';\n\n\nclass Header extends Block {\n  static formats(domNode) {\n    return this.tagName.indexOf(domNode.tagName) + 1;\n  }\n}\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\n\nexport default Header;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/header.js","import Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Container from '../blots/container';\n\n\nclass ListItem extends Block {\n  static formats(domNode) {\n    return domNode.tagName === this.tagName ? undefined : super.formats(domNode);\n  }\n\n  format(name, value) {\n    if (name === List.blotName && !value) {\n      this.replaceWith(Parchment.create(this.statics.scope));\n    } else {\n      super.format(name, value);\n    }\n  }\n\n  remove() {\n    if (this.prev == null && this.next == null) {\n      this.parent.remove();\n    } else {\n      super.remove();\n    }\n  }\n\n  replaceWith(name, value) {\n    this.parent.isolate(this.offset(this.parent), this.length());\n    if (name === this.parent.statics.blotName) {\n      this.parent.replaceWith(name, value);\n      return this;\n    } else {\n      this.parent.unwrap();\n      return super.replaceWith(name, value);\n    }\n  }\n}\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\n\nclass List extends Container {\n  static create(value) {\n    if (value === 'ordered') {\n      value = 'OL';\n    } else if (value === 'bullet') {\n      value = 'UL';\n    }\n    return super.create(value);\n  }\n\n  static formats(domNode) {\n    if (domNode.tagName === 'OL') return 'ordered';\n    if (domNode.tagName === 'UL') return 'bullet';\n    return undefined;\n  }\n\n  format(name, value) {\n    if (this.children.length > 0) {\n      this.children.tail.format(name, value);\n    }\n  }\n\n  formats() {\n    // We don't inherit from FormatBlot\n    return { [this.statics.blotName]: this.statics.formats(this.domNode) };\n  }\n\n  insertBefore(blot, ref) {\n    if (blot instanceof ListItem) {\n      super.insertBefore(blot, ref);\n    } else {\n      let index = ref == null ? this.length() : ref.offset(this);\n      let after = this.split(index);\n      after.parent.insertBefore(blot, after);\n    }\n  }\n\n  optimize() {\n    super.optimize();\n    let next = this.next;\n    if (next != null && next.prev === this &&\n        next.statics.blotName === this.statics.blotName &&\n        next.domNode.tagName === this.domNode.tagName) {\n      next.moveChildren(this);\n      next.remove();\n    }\n  }\n\n  replace(target) {\n    if (target.statics.blotName !== this.statics.blotName) {\n      let item = Parchment.create(this.statics.defaultChild);\n      target.moveChildren(item);\n      this.appendChild(item);\n    }\n    super.replace(target);\n  }\n}\nList.blotName = 'list';\nList.scope = Parchment.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\n\nexport { ListItem, List as default };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/list.js","import Inline from '../blots/inline';\n\nclass Bold extends Inline {\n  static create() {\n    return super.create();\n  }\n\n  static formats() {\n    return true;\n  }\n\n  optimize() {\n    super.optimize();\n    if (this.domNode.tagName !== this.statics.tagName[0]) {\n      this.replaceWith(this.statics.blotName);\n    }\n  }\n}\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexport default Bold;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/bold.js","import Bold from './bold';\n\nclass Italic extends Bold { }\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexport default Italic;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/italic.js","import Inline from '../blots/inline';\n\n\nclass Link extends Inline {\n  static create(value) {\n    let node = super.create(value);\n    value = this.sanitize(value);\n    node.setAttribute('href', value);\n    node.setAttribute('target', '_blank');\n    return node;\n  }\n\n  static formats(domNode) {\n    return domNode.getAttribute('href');\n  }\n\n  static sanitize(url) {\n    return sanitize(url, ['http', 'https', 'mailto']) ? url : this.SANITIZED_URL;\n  }\n\n  format(name, value) {\n    if (name !== this.statics.blotName || !value) return super.format(name, value);\n    value = this.constructor.sanitize(value);\n    this.domNode.setAttribute('href', value);\n  }\n}\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\n\n\nfunction sanitize(url, protocols) {\n  let anchor = document.createElement('a');\n  anchor.href = url;\n  let protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n  return protocols.indexOf(protocol) > -1;\n}\n\n\nexport { Link as default, sanitize };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/link.js","import Inline from '../blots/inline';\n\nclass Script extends Inline {\n  static create(value) {\n    if (value === 'super') {\n      return document.createElement('sup');\n    } else if (value === 'sub') {\n      return document.createElement('sub');\n    } else {\n      return super.create(value);\n    }\n  }\n\n  static formats(domNode) {\n    if (domNode.tagName === 'SUB') return 'sub';\n    if (domNode.tagName === 'SUP') return 'super';\n    return undefined;\n  }\n}\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexport default Script;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/script.js","import Inline from '../blots/inline';\n\nclass Strike extends Inline { }\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexport default Strike;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/strike.js","import Inline from '../blots/inline';\n\nclass Underline extends Inline { }\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexport default Underline;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/underline.js","import Embed from '../blots/embed';\nimport { sanitize } from '../formats/link';\n\nconst ATTRIBUTES = [\n  'alt',\n  'height',\n  'width'\n];\n\n\nclass Image extends Embed {\n  static create(value) {\n    let node = super.create(value);\n    if (typeof value === 'string') {\n      node.setAttribute('src', this.sanitize(value));\n    }\n    return node;\n  }\n\n  static formats(domNode) {\n    return ATTRIBUTES.reduce(function(formats, attribute) {\n      if (domNode.hasAttribute(attribute)) {\n        formats[attribute] = domNode.getAttribute(attribute);\n      }\n      return formats;\n    }, {});\n  }\n\n  static match(url) {\n    return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url);\n  }\n\n  static sanitize(url) {\n    return sanitize(url, ['http', 'https', 'data']) ? url : '//:0';\n  }\n\n  static value(domNode) {\n    return domNode.getAttribute('src');\n  }\n\n  format(name, value) {\n    if (ATTRIBUTES.indexOf(name) > -1) {\n      if (value) {\n        this.domNode.setAttribute(name, value);\n      } else {\n        this.domNode.removeAttribute(name);\n      }\n    } else {\n      super.format(name, value);\n    }\n  }\n}\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\n\nexport default Image;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/image.js","import { BlockEmbed } from '../blots/block';\nimport Link from '../formats/link';\n\nconst ATTRIBUTES = [\n  'height',\n  'width'\n];\n\n\nclass Video extends BlockEmbed {\n  static create(value) {\n    let node = super.create(value);\n    node.setAttribute('frameborder', '0');\n    node.setAttribute('allowfullscreen', true);\n    node.setAttribute('src', this.sanitize(value));\n    return node;\n  }\n\n  static formats(domNode) {\n    return ATTRIBUTES.reduce(function(formats, attribute) {\n      if (domNode.hasAttribute(attribute)) {\n        formats[attribute] = domNode.getAttribute(attribute);\n      }\n      return formats;\n    }, {});\n  }\n\n  static sanitize(url) {\n    return Link.sanitize(url);\n  }\n\n  static value(domNode) {\n    return domNode.getAttribute('src');\n  }\n\n  format(name, value) {\n    if (ATTRIBUTES.indexOf(name) > -1) {\n      if (value) {\n        this.domNode.setAttribute(name, value);\n      } else {\n        this.domNode.removeAttribute(name);\n      }\n    } else {\n      super.format(name, value);\n    }\n  }\n}\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\n\nexport default Video;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/video.js","import Embed from '../blots/embed';\nimport Quill from '../core/quill';\n\n\nclass FormulaBlot extends Embed {\n  static create(value) {\n    let node = super.create(value);\n    if (typeof value === 'string') {\n      window.katex.render(value, node);\n      node.setAttribute('data-value', value);\n    }\n    node.setAttribute('contenteditable', false);\n    return node;\n  }\n\n  static value(domNode) {\n    return domNode.getAttribute('data-value');\n  }\n\n  index() {\n    return 1;\n  }\n}\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\n\nfunction Formula() {\n  if (window.katex == null) {\n    throw new Error('Formula module requires KaTeX.');\n  }\n  Quill.register(FormulaBlot, true);\n}\n\n\nexport { FormulaBlot, Formula as default };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/formula.js","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\nimport CodeBlock from '../formats/code';\n\n\nclass SyntaxCodeBlock extends CodeBlock {\n  replaceWith(block) {\n    this.domNode.textContent = this.domNode.textContent;\n    this.attach();\n    super.replaceWith(block);\n  }\n\n  highlight(highlight) {\n    if (this.cachedHTML !== this.domNode.innerHTML) {\n      let text = this.domNode.textContent;\n      if (text.trim().length > 0 || this.cachedHTML == null) {\n        this.domNode.innerHTML = highlight(text);\n        this.attach();\n      }\n      this.cachedHTML = this.domNode.innerHTML;\n    }\n  }\n}\nSyntaxCodeBlock.className = 'ql-syntax';\n\n\nlet CodeToken = new Parchment.Attributor.Class('token', 'hljs', {\n  scope: Parchment.Scope.INLINE\n});\n\n\nclass Syntax extends Module {\n  constructor(quill, options) {\n    super(quill, options);\n    if (typeof this.options.highlight !== 'function') {\n      throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n    }\n    Quill.register(CodeToken, true);\n    Quill.register(SyntaxCodeBlock, true);\n    let timer = null;\n    this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n      if (timer != null) return;\n      timer = setTimeout(() => {\n        this.highlight();\n        timer = null;\n      }, 100);\n    });\n    this.highlight();\n  }\n\n  highlight() {\n    if (this.quill.selection.composing) return;\n    let range = this.quill.getSelection();\n    this.quill.scroll.descendants(SyntaxCodeBlock).forEach((code) => {\n      code.highlight(this.options.highlight);\n    });\n    this.quill.update(Quill.sources.SILENT);\n    if (range != null) {\n      this.quill.setSelection(range, Quill.sources.SILENT);\n    }\n  }\n}\nSyntax.DEFAULTS = {\n  highlight: (function() {\n    if (window.hljs == null) return null;\n    return function(text) {\n      let result = window.hljs.highlightAuto(text);\n      return result.value;\n    };\n  })()\n};\n\n\nexport { SyntaxCodeBlock as CodeBlock, CodeToken, Syntax as default};\n\n\n\n// WEBPACK FOOTER //\n// ./modules/syntax.js","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:toolbar');\n\n\nclass Toolbar extends Module {\n  constructor(quill, options) {\n    super(quill, options);\n    if (Array.isArray(this.options.container)) {\n      let container = document.createElement('div');\n      addControls(container, this.options.container);\n      quill.container.parentNode.insertBefore(container, quill.container);\n      this.container = container;\n    } else if (typeof this.options.container === 'string') {\n      this.container = document.querySelector(this.options.container);\n    } else {\n      this.container = this.options.container;\n    }\n    if (!(this.container instanceof HTMLElement)) {\n      return debug.error('Container required for toolbar', this.options);\n    }\n    this.container.classList.add('ql-toolbar');\n    this.controls = [];\n    this.handlers = {};\n    Object.keys(this.options.handlers).forEach((format) => {\n      this.addHandler(format, this.options.handlers[format]);\n    });\n    [].forEach.call(this.container.querySelectorAll('button, select'), (input) => {\n      this.attach(input);\n    });\n    this.quill.on(Quill.events.EDITOR_CHANGE, (type, range) => {\n      if (type === Quill.events.SELECTION_CHANGE) {\n        this.update(range);\n      }\n    });\n    this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n      let [range, ] = this.quill.selection.getRange();  // quill.getSelection triggers update\n      this.update(range);\n    });\n  }\n\n  addHandler(format, handler) {\n    this.handlers[format] = handler;\n  }\n\n  attach(input) {\n    let format = [].find.call(input.classList, (className) => {\n      return className.indexOf('ql-') === 0;\n    });\n    if (!format) return;\n    format = format.slice('ql-'.length);\n    if (input.tagName === 'BUTTON') {\n      input.setAttribute('type', 'button');\n    }\n    if (this.handlers[format] == null) {\n      if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n        debug.warn('ignoring attaching to disabled format', format, input);\n        return;\n      }\n      if (Parchment.query(format) == null) {\n        debug.warn('ignoring attaching to nonexistent format', format, input);\n        return;\n      }\n    }\n    let eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n    input.addEventListener(eventName, (e) => {\n      let value;\n      if (input.tagName === 'SELECT') {\n        if (input.selectedIndex < 0) return;\n        let selected = input.options[input.selectedIndex];\n        if (selected.hasAttribute('selected')) {\n          value = false;\n        } else {\n          value = selected.value || false;\n        }\n      } else {\n        if (input.classList.contains('ql-active')) {\n          value = false;\n        } else {\n          value = input.value || !input.hasAttribute('value');\n        }\n        e.preventDefault();\n      }\n      this.quill.focus();\n      let [range, ] = this.quill.selection.getRange();\n      if (this.handlers[format] != null) {\n        this.handlers[format].call(this, value);\n      } else if (Parchment.query(format).prototype instanceof Parchment.Embed) {\n        value = prompt(`Enter ${format}`);\n        if (!value) return;\n        this.quill.updateContents(new Delta()\n          .retain(range.index)\n          .delete(range.length)\n          .insert({ [format]: value })\n        , Quill.sources.USER);\n      } else {\n        this.quill.format(format, value, Quill.sources.USER);\n      }\n      this.update(range);\n    });\n    // TODO use weakmap\n    this.controls.push([format, input]);\n  }\n\n  update(range) {\n    let formats = range == null ? {} : this.quill.getFormat(range);\n    this.controls.forEach(function(pair) {\n      let [format, input] = pair;\n      if (input.tagName === 'SELECT') {\n        let option;\n        if (range == null) {\n          option = null;\n        } else if (formats[format] == null) {\n          option = input.querySelector('option[selected]');\n        } else if (!Array.isArray(formats[format])) {\n          let value = formats[format];\n          if (typeof value === 'string') {\n            value = value.replace(/\\\"/g, '\\\\\"');\n          }\n          option = input.querySelector(`option[value=\"${value}\"]`);\n        }\n        if (option == null) {\n          input.value = '';   // TODO make configurable?\n          input.selectedIndex = -1;\n        } else {\n          option.selected = true;\n        }\n      } else {\n        if (range == null) {\n          input.classList.remove('ql-active');\n        } else if (input.hasAttribute('value')) {\n          // both being null should match (default values)\n          // '1' should match with 1 (headers)\n          let isActive = formats[format] === input.getAttribute('value') ||\n                         (formats[format] != null && formats[format].toString() === input.getAttribute('value')) ||\n                         (formats[format] == null && !input.getAttribute('value'));\n          input.classList.toggle('ql-active', isActive);\n        } else {\n          input.classList.toggle('ql-active', formats[format] != null);\n        }\n      }\n    });\n  }\n}\nToolbar.DEFAULTS = {};\n\n\nfunction addButton(container, format, value) {\n  let input = document.createElement('button');\n  input.setAttribute('type', 'button');\n  input.classList.add('ql-' + format);\n  if (value != null) {\n    input.value = value;\n  }\n  container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n  if (!Array.isArray(groups[0])) {\n    groups = [groups];\n  }\n  groups.forEach(function(controls) {\n    let group = document.createElement('span');\n    group.classList.add('ql-formats');\n    controls.forEach(function(control) {\n      if (typeof control === 'string') {\n        addButton(group, control);\n      } else {\n        let format = Object.keys(control)[0];\n        let value = control[format];\n        if (Array.isArray(value)) {\n          addSelect(group, format, value);\n        } else {\n          addButton(group, format, value);\n        }\n      }\n    });\n    container.appendChild(group);\n  });\n}\n\nfunction addSelect(container, format, values) {\n  let input = document.createElement('select');\n  input.classList.add('ql-' + format);\n  values.forEach(function(value) {\n    let option = document.createElement('option');\n    if (value !== false) {\n      option.setAttribute('value', value);\n    } else {\n      option.setAttribute('selected', 'selected');\n    }\n    input.appendChild(option);\n  });\n  container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n  container: null,\n  handlers: {\n    clean: function() {\n      let range = this.quill.getSelection();\n      if (range == null) return;\n      if (range.length == 0) {\n        let formats = this.quill.getFormat();\n        Object.keys(formats).forEach((name) => {\n          // Clean functionality in existing apps only clean inline formats\n          if (Parchment.query(name, Parchment.Scope.INLINE) != null) {\n            this.quill.format(name, false);\n          }\n        });\n      } else {\n        this.quill.removeFormat(range, Quill.sources.USER);\n      }\n    },\n    direction: function(value) {\n      let align = this.quill.getFormat()['align'];\n      if (value === 'rtl' && align == null) {\n        this.quill.format('align', 'right', Quill.sources.USER);\n      } else if (!value && align === 'right') {\n        this.quill.format('align', false, Quill.sources.USER);\n      }\n      this.quill.format('direction', value, Quill.sources.USER);\n    },\n    link: function(value) {\n      if (value === true) {\n        value = prompt('Enter link URL:');\n      }\n      this.quill.format('link', value, Quill.sources.USER);\n    },\n    indent: function(value) {\n      let range = this.quill.getSelection();\n      let formats = this.quill.getFormat(range);\n      let indent = parseInt(formats.indent || 0);\n      if (value === '+1' || value === '-1') {\n        let modifier = (value === '+1') ? 1 : -1;\n        if (formats.direction === 'rtl') modifier *= -1;\n        this.quill.format('indent', indent + modifier, Quill.sources.USER);\n      }\n    }\n  }\n}\n\n\nexport { Toolbar as default, addControls };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/toolbar.js","module.exports = {\n  'align': {\n    ''        : require('../assets/icons/align-left.svg'),\n    'center'  : require('../assets/icons/align-center.svg'),\n    'right'   : require('../assets/icons/align-right.svg'),\n    'justify' : require('../assets/icons/align-justify.svg')\n  },\n  'background': require('../assets/icons/background.svg'),\n  'blockquote': require('../assets/icons/blockquote.svg'),\n  'bold'      : require('../assets/icons/bold.svg'),\n  'clean'     : require('../assets/icons/clean.svg'),\n  'code'      : require('../assets/icons/code.svg'),\n  'code-block': require('../assets/icons/code.svg'),\n  'color'     : require('../assets/icons/color.svg'),\n  'direction' : {\n    ''        : require('../assets/icons/direction-ltr.svg'),\n    'rtl'     : require('../assets/icons/direction-rtl.svg')\n  },\n  'float': {\n    'center'  : require('../assets/icons/float-center.svg'),\n    'full'    : require('../assets/icons/float-full.svg'),\n    'left'    : require('../assets/icons/float-left.svg'),\n    'right'   : require('../assets/icons/float-right.svg')\n  },\n  'formula'   : require('../assets/icons/formula.svg'),\n  'header': {\n    '1'       : require('../assets/icons/header.svg'),\n    '2'       : require('../assets/icons/header-2.svg')\n  },\n  'italic'    : require('../assets/icons/italic.svg'),\n  'image'     : require('../assets/icons/image.svg'),\n  'indent': {\n    '+1'      : require('../assets/icons/indent.svg'),\n    '-1'      : require('../assets/icons/outdent.svg')\n  },\n  'link'      : require('../assets/icons/link.svg'),\n  'list': {\n    'ordered' : require('../assets/icons/list-ordered.svg'),\n    'bullet'  : require('../assets/icons/list-bullet.svg')\n  },\n  'script': {\n    'sub'     : require('../assets/icons/subscript.svg'),\n    'super'   : require('../assets/icons/superscript.svg'),\n  },\n  'strike'    : require('../assets/icons/strike.svg'),\n  'underline' : require('../assets/icons/underline.svg'),\n  'video'     : require('../assets/icons/video.svg')\n};\n\n\n\n// WEBPACK FOOTER //\n// ./ui/icons.js","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-left.svg\n// module id = 73\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-center.svg\n// module id = 74\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-right.svg\n// module id = 75\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-justify.svg\n// module id = 76\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <g class=\\\"ql-fill ql-color-label\\\"> <polygon points=\\\"6 6.868 6 6 5 6 5 7 5.942 7 6 6.868\\\"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points=\\\"6.817 5 6 5 6 6 6.38 6 6.817 5\\\"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points=\\\"4 11.439 4 11 3 11 3 12 3.755 12 4 11.439\\\"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points=\\\"4.63 10 4 10 4 11 4.192 11 4.63 10\\\"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points=\\\"13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174\\\"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points=\\\"12 6.868 12 6 11.62 6 12 6.868\\\"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points=\\\"12.933 9 13 9 13 8 12.495 8 12.933 9\\\"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points=\\\"5.5 13 9 5 12.5 13\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/background.svg\n// module id = 77\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=4 y=5></rect> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=11 y=5></rect> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M7,8c0,4.031-3,5-3,5></path> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M14,8c0,4.031-3,5-3,5></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/blockquote.svg\n// module id = 78\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/bold.svg\n// module id = 79\n// module chunks = 0","module.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/clean.svg\n// module id = 80\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"5 7 3 9 5 11\\\"></polyline> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"13 7 15 9 13 11\\\"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/code.svg\n// module id = 81\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-color-label ql-stroke ql-transparent\\\" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points=\\\"5.5 11 9 3 12.5 11\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/color.svg\n// module id = 82\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"3 11 5 9 3 7 3 11\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/direction-ltr.svg\n// module id = 83\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"15 12 13 10 15 8 15 12\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/direction-rtl.svg\n// module id = 84\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-center.svg\n// module id = 85\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-full.svg\n// module id = 86\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-left.svg\n// module id = 87\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform=\\\"translate(24 18) rotate(-180)\\\"/> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-right.svg\n// module id = 88\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/formula.svg\n// module id = 89\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=3 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=11 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=3 y1=9 y2=9></line> <line class=\\\"ql-stroke ql-thin\\\" x1=13.5 x2=15.5 y1=14.5 y2=14.5></line> <path class=ql-fill d=M14.5,15a0.5,0.5,0,0,1-.5-0.5V12.085l-0.276.138A0.5,0.5,0,0,1,13.053,12c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,15,11.5v3A0.5,0.5,0,0,1,14.5,15Z></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/header.svg\n// module id = 90\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=3 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=11 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=3 y1=9 y2=9></line> <path class=\\\"ql-stroke ql-thin\\\" d=M15.5,14.5h-2c0-.234,1.85-1.076,1.85-2.234a0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/header-2.svg\n// module id = 91\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/italic.svg\n// module id = 92\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class=\\\"ql-even ql-fill\\\" points=\\\"5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12\\\"></polyline> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/image.svg\n// module id = 93\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=\\\"ql-fill ql-stroke\\\" points=\\\"3 7 3 11 5 9 3 7\\\"></polyline> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/indent.svg\n// module id = 94\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"5 7 5 11 3 9 5 7\\\"></polyline> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/outdent.svg\n// module id = 95\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class=\\\"ql-even ql-stroke\\\" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class=\\\"ql-even ql-stroke\\\" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/link.svg\n// module id = 96\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class=\\\"ql-stroke ql-thin\\\" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class=\\\"ql-stroke ql-thin\\\" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class=\\\"ql-stroke ql-thin\\\" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-ordered.svg\n// module id = 97\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-bullet.svg\n// module id = 98\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/subscript.svg\n// module id = 99\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/superscript.svg\n// module id = 100\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-stroke ql-thin\\\" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/strike.svg\n// module id = 101\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/underline.svg\n// module id = 102\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/video.svg\n// module id = 103\n// module chunks = 0","import DropdownIcon from '../assets/icons/dropdown.svg';\n\n\nclass Picker {\n  constructor(select) {\n    this.select = select;\n    this.container = document.createElement('span');\n    this.buildPicker();\n    this.select.style.display = 'none';\n    this.select.parentNode.insertBefore(this.container, this.select);\n    this.label.addEventListener('click', () => {\n      this.container.classList.toggle('ql-expanded');\n    });\n    this.select.addEventListener('change', this.update.bind(this));\n  }\n\n  buildItem(option) {\n    let item = document.createElement('span');\n    item.classList.add('ql-picker-item');\n    if (option.hasAttribute('value')) {\n      item.setAttribute('data-value', option.getAttribute('value'));\n    }\n    if (option.textContent) {\n      item.setAttribute('data-label', option.textContent);\n    }\n    item.addEventListener('click', () => {\n      this.selectItem(item, true);\n    });\n    return item;\n  }\n\n  buildLabel() {\n    let label = document.createElement('span');\n    label.classList.add('ql-picker-label');\n    label.innerHTML = DropdownIcon;\n    this.container.appendChild(label);\n    return label;\n  }\n\n  buildOptions() {\n    let options = document.createElement('span');\n    options.classList.add('ql-picker-options');\n    [].slice.call(this.select.options).forEach((option) => {\n      let item = this.buildItem(option);\n      options.appendChild(item);\n      if (option.hasAttribute('selected')) {\n        this.selectItem(item);\n      }\n    });\n    this.container.appendChild(options);\n  }\n\n  buildPicker() {\n    [].slice.call(this.select.attributes).forEach((item) => {\n      this.container.setAttribute(item.name, item.value);\n    });\n    this.container.classList.add('ql-picker');\n    this.label = this.buildLabel();\n    this.buildOptions();\n  }\n\n  close() {\n    this.container.classList.remove('ql-expanded');\n  }\n\n  selectItem(item, trigger = false) {\n    let selected = this.container.querySelector('.ql-selected');\n    if (item === selected) return;\n    if (selected != null) {\n      selected.classList.remove('ql-selected');\n    }\n    if (item != null) {\n      item.classList.add('ql-selected');\n      this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n      if (item.hasAttribute('data-value')) {\n        this.label.setAttribute('data-value', item.getAttribute('data-value'));\n      } else {\n        this.label.removeAttribute('data-value');\n      }\n      if (item.hasAttribute('data-label')) {\n        this.label.setAttribute('data-label', item.getAttribute('data-label'));\n      } else {\n        this.label.removeAttribute('data-label');\n      }\n      if (trigger) {\n        if (typeof Event === 'function') {\n          this.select.dispatchEvent(new Event('change'));\n        } else if (typeof Event === 'object') {     // IE11\n          let event = document.createEvent('Event');\n          event.initEvent('change', true, true);\n          this.select.dispatchEvent(event);\n        }\n        this.close();\n      }\n    } else {\n      this.label.removeAttribute('data-value');\n      this.label.removeAttribute('data-label');\n    }\n  }\n\n  update() {\n    let option;\n    if (this.select.selectedIndex > -1) {\n      let item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n      option = this.select.options[this.select.selectedIndex];\n      this.selectItem(item);\n    } else {\n      this.selectItem(null);\n    }\n    let isActive = option != null && option !== this.select.querySelector('option[selected]');\n    this.label.classList.toggle('ql-active', isActive);\n  }\n}\n\n\nexport default Picker;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/picker.js","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=ql-stroke points=\\\"7 11 9 13 11 11 7 11\\\"></polygon> <polygon class=ql-stroke points=\\\"7 7 9 5 11 7 7 7\\\"></polygon> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/dropdown.svg\n// module id = 105\n// module chunks = 0","import Picker from './picker';\n\n\nclass ColorPicker extends Picker {\n  constructor(select, label) {\n    super(select);\n    this.label.innerHTML = label;\n    this.container.classList.add('ql-color-picker');\n    [].slice.call(this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function(item) {\n      item.classList.add('ql-primary');\n    });\n  }\n\n  buildItem(option) {\n    let item = super.buildItem(option);\n    item.style.backgroundColor = option.getAttribute('value') || '';\n    return item;\n  }\n\n  selectItem(item, trigger) {\n    super.selectItem(item, trigger);\n    let colorLabel = this.label.querySelector('.ql-color-label');\n    let value = item ? item.getAttribute('data-value') || '' : '';\n    if (colorLabel) {\n      if (colorLabel.tagName === 'line') {\n        colorLabel.style.stroke = value;\n      } else {\n        colorLabel.style.fill = value;\n      }\n    }\n  }\n}\n\n\nexport default ColorPicker;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/color-picker.js","import Picker from './picker';\n\n\nclass IconPicker extends Picker {\n  constructor(select, icons) {\n    super(select);\n    this.container.classList.add('ql-icon-picker');\n    [].forEach.call(this.container.querySelectorAll('.ql-picker-item'), (item) => {\n      item.innerHTML = icons[item.getAttribute('data-value') || ''];\n    });\n    this.defaultItem = this.container.querySelector('.ql-selected');\n    this.selectItem(this.defaultItem);\n  }\n\n  selectItem(item, trigger) {\n    super.selectItem(item, trigger);\n    item = item || this.defaultItem;\n    this.label.innerHTML = item.innerHTML;\n  }\n}\n\n\nexport default IconPicker;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/icon-picker.js","class Tooltip {\n  constructor(quill, boundsContainer) {\n    this.quill = quill;\n    this.boundsContainer = boundsContainer || document.body;\n    this.root = quill.addContainer('ql-tooltip');\n    this.root.innerHTML = this.constructor.TEMPLATE;\n    let offset = parseInt(window.getComputedStyle(this.root).marginTop);\n    this.quill.root.addEventListener('scroll', () => {\n      this.root.style.marginTop = (-1*this.quill.root.scrollTop) + offset + 'px';\n      this.checkBounds();\n    });\n    this.hide();\n  }\n\n  checkBounds() {\n    this.root.classList.toggle('ql-out-top', this.root.offsetTop <= 0);\n    this.root.classList.remove('ql-out-bottom');\n    this.root.classList.toggle('ql-out-bottom', this.root.offsetTop + this.root.offsetHeight >= this.quill.root.offsetHeight);\n  }\n\n  hide() {\n    this.root.classList.add('ql-hidden');\n  }\n\n  position(reference) {\n    let left = reference.left + reference.width/2 - this.root.offsetWidth/2;\n    let top = reference.bottom + this.quill.root.scrollTop;\n    this.root.style.left = left + 'px';\n    this.root.style.top = top + 'px';\n    let containerBounds = this.boundsContainer.getBoundingClientRect();\n    let rootBounds = this.root.getBoundingClientRect();\n    let shift = 0;\n    if (rootBounds.right > containerBounds.right) {\n      shift = containerBounds.right - rootBounds.right;\n      this.root.style.left = (left + shift) + 'px';\n    }\n    if (rootBounds.left < containerBounds.left) {\n      shift = containerBounds.left - rootBounds.left;\n      this.root.style.left = (left + shift) + 'px';\n    }\n    this.checkBounds();\n    return shift;\n  }\n\n  show() {\n    this.root.classList.remove('ql-editing');\n    this.root.classList.remove('ql-hidden');\n  }\n}\n\n\nexport default Tooltip;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/tooltip.js","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n  ['bold', 'italic', 'link'],\n  [{ header: 1 }, { header: 2 }, 'blockquote']\n];\n\nclass BubbleTheme extends BaseTheme {\n  constructor(quill, options) {\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n    super(quill, options);\n    this.quill.container.classList.add('ql-bubble');\n  }\n\n  extendToolbar(toolbar) {\n    this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n    this.tooltip.root.appendChild(toolbar.container);\n    this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), icons);\n    this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\n  }\n}\nBubbleTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link: function(value) {\n          if (!value) {\n            this.quill.format('link', false);\n          } else {\n            this.quill.theme.tooltip.edit();\n          }\n        }\n      }\n    }\n  }\n});\n\n\nclass BubbleTooltip extends BaseTooltip {\n  constructor(quill, bounds) {\n    super(quill, bounds);\n    this.quill.on(Emitter.events.EDITOR_CHANGE, (type, range) => {\n      if (type !== Emitter.events.SELECTION_CHANGE) return;\n      if (range != null && range.length > 0) {\n        this.show();\n        // Lock our width so we will expand beyond our offsetParent boundaries\n        this.root.style.left = '0px';\n        this.root.style.width = '';\n        this.root.style.width = this.root.offsetWidth + 'px';\n        let lines = this.quill.scroll.lines(range.index, range.length);\n        if (lines.length === 1) {\n          this.position(this.quill.getBounds(range));\n        } else {\n          let lastLine = lines[lines.length - 1];\n          let index = lastLine.offset(this.quill.scroll);\n          let length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n          let bounds = this.quill.getBounds(new Range(index, length));\n          this.position(bounds);\n        }\n      } else if (document.activeElement !== this.textbox && this.quill.hasFocus()) {\n        this.hide();\n      }\n    });\n  }\n\n  listen() {\n    super.listen();\n    this.root.querySelector('.ql-close').addEventListener('click', () => {\n      this.root.classList.remove('ql-editing');\n    });\n    this.quill.on(Emitter.events.SCROLL_OPTIMIZE, () => {\n      // Let selection be restored by toolbar handlers before repositioning\n      setTimeout(() => {\n        if (this.root.classList.contains('ql-hidden')) return;\n        let range = this.quill.getSelection();\n        if (range != null) {\n          this.position(this.quill.getBounds(range));\n        }\n      }, 1);\n    });\n  }\n\n  cancel() {\n    this.show();\n  }\n\n  position(reference) {\n    let shift = super.position(reference);\n    let arrow = this.root.querySelector('.ql-tooltip-arrow');\n    arrow.style.marginLeft = '';\n    if (shift === 0) return shift;\n    arrow.style.marginLeft = (-1*shift - arrow.offsetWidth/2) + 'px';\n  }\n}\nBubbleTooltip.TEMPLATE = [\n  '<span class=\"ql-tooltip-arrow\"></span>',\n  '<div class=\"ql-tooltip-editor\">',\n    '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"quilljs.com\" data-video=\"Embed URL\">',\n    '<a class=\"ql-close\"></a>',\n  '</div>'\n].join('');\n\n\nexport { BubbleTooltip, BubbleTheme as default };\n\n\n\n// WEBPACK FOOTER //\n// ./themes/bubble.js","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Emitter from '../core/emitter';\nimport Keyboard from '../modules/keyboard';\nimport Theme from '../core/theme';\nimport ColorPicker from '../ui/color-picker';\nimport IconPicker from '../ui/icon-picker';\nimport Picker from '../ui/picker';\nimport Tooltip from '../ui/tooltip';\n\n\nconst ALIGNS = [ false, 'center', 'right', 'justify' ];\n\nconst COLORS = [\n  \"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\",\n  \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\",\n  \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\",\n  \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\",\n  \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"\n];\n\nconst FONTS = [ false, 'serif', 'monospace' ];\n\nconst HEADERS = [ '1', '2', '3', false ];\n\nconst SIZES = [ 'small', false, 'large', 'huge' ];\n\n\nclass BaseTheme extends Theme {\n  constructor(quill, options) {\n    super(quill, options);\n    let listener = (e) => {\n      if (!document.body.contains(quill.root)) {\n        return document.body.removeEventListener('click', listener);\n      }\n      if (this.tooltip != null && !this.tooltip.root.contains(e.target) &&\n          document.activeElement !== this.tooltip.textbox && !this.quill.hasFocus()) {\n        this.tooltip.hide();\n      }\n      if (this.pickers != null) {\n        this.pickers.forEach(function(picker) {\n          if (!picker.container.contains(e.target)) {\n            picker.close();\n          }\n        });\n      }\n    };\n    document.body.addEventListener('click', listener);\n  }\n\n  addModule(name) {\n    let module = super.addModule(name);\n    if (name === 'toolbar') {\n      this.extendToolbar(module);\n    }\n    return module;\n  }\n\n  buildButtons(buttons, icons) {\n    buttons.forEach((button) => {\n      let className = button.getAttribute('class') || '';\n      className.split(/\\s+/).forEach((name) => {\n        if (!name.startsWith('ql-')) return;\n        name = name.slice('ql-'.length);\n        if (icons[name] == null) return;\n        if (name === 'direction') {\n          button.innerHTML = icons[name][''] + icons[name]['rtl'];\n        } else if (typeof icons[name] === 'string') {\n          button.innerHTML = icons[name];\n        } else {\n          let value = button.value || '';\n          if (value != null && icons[name][value]) {\n            button.innerHTML = icons[name][value];\n          }\n        }\n      });\n    });\n  }\n\n  buildPickers(selects, icons) {\n    this.pickers = selects.map((select) => {\n      if (select.classList.contains('ql-align')) {\n        if (select.querySelector('option') == null) {\n          fillSelect(select, ALIGNS);\n        }\n        return new IconPicker(select, icons.align);\n      } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n        let format = select.classList.contains('ql-background') ? 'background' : 'color';\n        if (select.querySelector('option') == null) {\n          fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n        }\n        return new ColorPicker(select, icons[format]);\n      } else {\n        if (select.querySelector('option') == null) {\n          if (select.classList.contains('ql-font')) {\n            fillSelect(select, FONTS);\n          } else if (select.classList.contains('ql-header')) {\n            fillSelect(select, HEADERS);\n          } else if (select.classList.contains('ql-size')) {\n            fillSelect(select, SIZES);\n          }\n        }\n        return new Picker(select);\n      }\n    });\n    let update = () => {\n      this.pickers.forEach(function(picker) {\n        picker.update();\n      });\n    };\n    this.quill.on(Emitter.events.SELECTION_CHANGE, update)\n              .on(Emitter.events.SCROLL_OPTIMIZE, update);\n  }\n}\nBaseTheme.DEFAULTS = extend(true, {}, Theme.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        formula: function() {\n          this.quill.theme.tooltip.edit('formula');\n        },\n        image: function() {\n          let fileInput = this.container.querySelector('input.ql-image[type=file]');\n          if (fileInput == null) {\n            fileInput = document.createElement('input');\n            fileInput.setAttribute('type', 'file');\n            fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon, image/svg+xml');\n            fileInput.classList.add('ql-image');\n            fileInput.addEventListener('change', () => {\n              if (fileInput.files != null && fileInput.files[0] != null) {\n                let reader = new FileReader();\n                reader.onload = (e) => {\n                  let range = this.quill.getSelection(true);\n                  this.quill.updateContents(new Delta()\n                    .retain(range.index)\n                    .delete(range.length)\n                    .insert({ image: e.target.result })\n                  , Emitter.sources.USER);\n                  fileInput.value = \"\";\n                }\n                reader.readAsDataURL(fileInput.files[0]);\n              }\n            });\n            this.container.appendChild(fileInput);\n          }\n          fileInput.click();\n        },\n        video: function() {\n          this.quill.theme.tooltip.edit('video');\n        }\n      }\n    }\n  }\n});\n\n\nclass BaseTooltip extends Tooltip {\n  constructor(quill, boundsContainer) {\n    super(quill, boundsContainer);\n    this.textbox = this.root.querySelector('input[type=\"text\"]');\n    this.listen();\n  }\n\n  listen() {\n    this.textbox.addEventListener('keydown', (event) => {\n      if (Keyboard.match(event, 'enter')) {\n        this.save();\n        event.preventDefault();\n      } else if (Keyboard.match(event, 'escape')) {\n        this.cancel();\n        event.preventDefault();\n      }\n    });\n  }\n\n  cancel() {\n    this.hide();\n  }\n\n  edit(mode = 'link', preview = null) {\n    this.root.classList.remove('ql-hidden');\n    this.root.classList.add('ql-editing');\n    if (preview != null) {\n      this.textbox.value = preview;\n    } else if (mode !== this.root.getAttribute('data-mode')) {\n      this.textbox.value = '';\n    }\n    this.position(this.quill.getBounds(this.quill.selection.savedRange));\n    this.textbox.select();\n    this.textbox.setAttribute('placeholder', this.textbox.getAttribute(`data-${mode}`) || '');\n    this.root.setAttribute('data-mode', mode);\n  }\n\n  restoreFocus() {\n    let scrollTop = this.quill.root.scrollTop;\n    this.quill.focus();\n    this.quill.root.scrollTop = scrollTop;\n  }\n\n  save() {\n    let value = this.textbox.value;\n    switch(this.root.getAttribute('data-mode')) {\n      case 'link': {\n        let scrollTop = this.quill.root.scrollTop;\n        if (this.linkRange) {\n          this.quill.formatText(this.linkRange, 'link', value, Emitter.sources.USER);\n          delete this.linkRange;\n        } else {\n          this.restoreFocus();\n          this.quill.format('link', value, Emitter.sources.USER);\n        }\n        this.quill.root.scrollTop = scrollTop;\n        break;\n      }\n      case 'video': {\n        let match = value.match(/^(https?):\\/\\/(www\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) ||\n                    value.match(/^(https?):\\/\\/(www\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n        if (match) {\n          value = match[1] + '://www.youtube.com/embed/' + match[3] + '?showinfo=0';\n        } else if (match = value.match(/^(https?):\\/\\/(www\\.)?vimeo\\.com\\/(\\d+)/)) {  // eslint-disable-line no-cond-assign\n          value = match[1] + '://player.vimeo.com/video/' + match[3] + '/';\n        }\n      } // eslint-disable-next-line no-fallthrough\n      case 'formula': {\n        let range = this.quill.getSelection(true);\n        let index = range.index + range.length;\n        if (range != null) {\n          this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, Emitter.sources.USER);\n          if (this.root.getAttribute('data-mode') === 'formula') {\n            this.quill.insertText(index + 1, ' ', Emitter.sources.USER);\n          }\n          this.quill.setSelection(index + 2, Emitter.sources.USER);\n        }\n        break;\n      }\n      default:\n    }\n    this.textbox.value = '';\n    this.hide();\n  }\n}\n\n\nfunction fillSelect(select, values, defaultValue = false) {\n  values.forEach(function(value) {\n    let option = document.createElement('option');\n    if (value === defaultValue) {\n      option.setAttribute('selected', 'selected');\n    } else {\n      option.setAttribute('value', value);\n    }\n    select.appendChild(option);\n  });\n}\n\n\nexport { BaseTooltip, BaseTheme as default };\n\n\n\n// WEBPACK FOOTER //\n// ./themes/base.js","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport LinkBlot from '../formats/link';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n  [{ header: ['1', '2', '3', false] }],\n  ['bold', 'italic', 'underline', 'link'],\n  [{ list: 'ordered' }, { list: 'bullet' }],\n  ['clean']\n];\n\nclass SnowTheme extends BaseTheme {\n  constructor(quill, options) {\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n    super(quill, options);\n    this.quill.container.classList.add('ql-snow');\n  }\n\n  extendToolbar(toolbar) {\n    toolbar.container.classList.add('ql-snow');\n    this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), icons);\n    this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\n    this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n    if (toolbar.container.querySelector('.ql-link')) {\n      this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function(range, context) {\n        toolbar.handlers['link'].call(toolbar, !context.format.link);\n      });\n    }\n  }\n}\nSnowTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link: function(value) {\n          if (value) {\n            let range = this.quill.getSelection();\n            if (range == null || range.length == 0) return;\n            let preview = this.quill.getText(range);\n            if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n              preview = 'mailto:' + preview;\n            }\n            let tooltip = this.quill.theme.tooltip;\n            tooltip.edit('link', preview);\n          } else {\n            this.quill.format('link', false);\n          }\n        }\n      }\n    }\n  }\n});\n\n\nclass SnowTooltip extends BaseTooltip {\n  constructor(quill, bounds) {\n    super(quill, bounds);\n    this.preview = this.root.querySelector('a.ql-preview');\n  }\n\n  listen() {\n    super.listen();\n    this.root.querySelector('a.ql-action').addEventListener('click', (event) => {\n      if (this.root.classList.contains('ql-editing')) {\n        this.save();\n      } else {\n        this.edit('link', this.preview.textContent);\n      }\n      event.preventDefault();\n    });\n    this.root.querySelector('a.ql-remove').addEventListener('click', (event) => {\n      if (this.linkRange != null) {\n        this.restoreFocus();\n        this.quill.formatText(this.linkRange, 'link', false, Emitter.sources.USER);\n        delete this.linkRange;\n      }\n      event.preventDefault();\n      this.hide();\n    });\n    this.quill.on(Emitter.events.SELECTION_CHANGE, (range) => {\n      if (range == null) return;\n      if (range.length === 0) {\n        let [link, offset] = this.quill.scroll.descendant(LinkBlot, range.index);\n        if (link != null) {\n          this.linkRange = new Range(range.index - offset, link.length());\n          let preview = LinkBlot.formats(link.domNode);\n          this.preview.textContent = preview;\n          this.preview.setAttribute('href', preview);\n          this.show();\n          this.position(this.quill.getBounds(this.linkRange));\n          return;\n        }\n      } else {\n        delete this.linkRange;\n      }\n      this.hide();\n    });\n  }\n\n  show() {\n    super.show();\n    this.root.removeAttribute('data-mode');\n  }\n}\nSnowTooltip.TEMPLATE = [\n  '<a class=\"ql-preview\" target=\"_blank\" href=\"about:blank\"></a>',\n  '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"quilljs.com\" data-video=\"Embed URL\">',\n  '<a class=\"ql-action\"></a>',\n  '<a class=\"ql-remove\"></a>'\n].join('');\n\n\nexport default SnowTheme;\n\n\n\n// WEBPACK FOOTER //\n// ./themes/snow.js","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../delta/~/deep-equal/index.js\n// module id = 22\n// module chunks = 0"],"sourceRoot":""}