| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482 | (function () {var modern = (function () {  'use strict';  var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');  var global$1 = tinymce.util.Tools.resolve('tinymce.EditorManager');  var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');  var isBrandingEnabled = function (editor) {    return editor.getParam('branding', true, 'boolean');  };  var hasMenubar = function (editor) {    return getMenubar(editor) !== false;  };  var getMenubar = function (editor) {    return editor.getParam('menubar');  };  var hasStatusbar = function (editor) {    return editor.getParam('statusbar', true, 'boolean');  };  var getToolbarSize = function (editor) {    return editor.getParam('toolbar_items_size');  };  var isReadOnly = function (editor) {    return editor.getParam('readonly', false, 'boolean');  };  var getFixedToolbarContainer = function (editor) {    return editor.getParam('fixed_toolbar_container');  };  var getInlineToolbarPositionHandler = function (editor) {    return editor.getParam('inline_toolbar_position_handler');  };  var getMenu = function (editor) {    return editor.getParam('menu');  };  var getRemovedMenuItems = function (editor) {    return editor.getParam('removed_menuitems', '');  };  var getMinWidth = function (editor) {    return editor.getParam('min_width', 100, 'number');  };  var getMinHeight = function (editor) {    return editor.getParam('min_height', 100, 'number');  };  var getMaxWidth = function (editor) {    return editor.getParam('max_width', 65535, 'number');  };  var getMaxHeight = function (editor) {    return editor.getParam('max_height', 65535, 'number');  };  var isSkinDisabled = function (editor) {    return editor.settings.skin === false;  };  var isInline = function (editor) {    return editor.getParam('inline', false, 'boolean');  };  var getResize = function (editor) {    var resize = editor.getParam('resize', 'vertical');    if (resize === false) {      return 'none';    } else if (resize === 'both') {      return 'both';    } else {      return 'vertical';    }  };  var getSkinUrl = function (editor) {    var settings = editor.settings;    var skin = settings.skin;    var skinUrl = settings.skin_url;    if (skin !== false) {      var skinName = skin ? skin : 'lightgray';      if (skinUrl) {        skinUrl = editor.documentBaseURI.toAbsolute(skinUrl);      } else {        skinUrl = global$1.baseURL + '/skins/' + skinName;      }    }    return skinUrl;  };  var getIndexedToolbars = function (settings, defaultToolbar) {    var toolbars = [];    for (var i = 1; i < 10; i++) {      var toolbar_1 = settings['toolbar' + i];      if (!toolbar_1) {        break;      }      toolbars.push(toolbar_1);    }    var mainToolbar = settings.toolbar ? [settings.toolbar] : [defaultToolbar];    return toolbars.length > 0 ? toolbars : mainToolbar;  };  var getToolbars = function (editor) {    var toolbar = editor.getParam('toolbar');    var defaultToolbar = 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image';    if (toolbar === false) {      return [];    } else if (global$2.isArray(toolbar)) {      return global$2.grep(toolbar, function (toolbar) {        return toolbar.length > 0;      });    } else {      return getIndexedToolbars(editor.settings, defaultToolbar);    }  };  var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');  var global$4 = tinymce.util.Tools.resolve('tinymce.ui.Factory');  var global$5 = tinymce.util.Tools.resolve('tinymce.util.I18n');  var fireSkinLoaded = function (editor) {    return editor.fire('SkinLoaded');  };  var fireResizeEditor = function (editor) {    return editor.fire('ResizeEditor');  };  var fireBeforeRenderUI = function (editor) {    return editor.fire('BeforeRenderUI');  };  var $_aycuj2t7jh8lz3jp = {    fireSkinLoaded: fireSkinLoaded,    fireResizeEditor: fireResizeEditor,    fireBeforeRenderUI: fireBeforeRenderUI  };  var focus = function (panel, type) {    return function () {      var item = panel.find(type)[0];      if (item) {        item.focus(true);      }    };  };  var addKeys = function (editor, panel) {    editor.shortcuts.add('Alt+F9', '', focus(panel, 'menubar'));    editor.shortcuts.add('Alt+F10,F10', '', focus(panel, 'toolbar'));    editor.shortcuts.add('Alt+F11', '', focus(panel, 'elementpath'));    panel.on('cancel', function () {      editor.focus();    });  };  var $_47hpztt8jh8lz3jq = { addKeys: addKeys };  var global$6 = tinymce.util.Tools.resolve('tinymce.geom.Rect');  var global$7 = tinymce.util.Tools.resolve('tinymce.util.Delay');  var noop = function () {    var x = [];    for (var _i = 0; _i < arguments.length; _i++) {      x[_i] = arguments[_i];    }  };  var noarg = function (f) {    return function () {      var x = [];      for (var _i = 0; _i < arguments.length; _i++) {        x[_i] = arguments[_i];      }      return f();    };  };  var compose = function (fa, fb) {    return function () {      var x = [];      for (var _i = 0; _i < arguments.length; _i++) {        x[_i] = arguments[_i];      }      return fa(fb.apply(null, arguments));    };  };  var constant = function (value) {    return function () {      return value;    };  };  var identity = function (x) {    return x;  };  var tripleEquals = function (a, b) {    return a === b;  };  var curry = function (f) {    var x = [];    for (var _i = 1; _i < arguments.length; _i++) {      x[_i - 1] = arguments[_i];    }    var args = new Array(arguments.length - 1);    for (var i = 1; i < arguments.length; i++)      args[i - 1] = arguments[i];    return function () {      var x = [];      for (var _i = 0; _i < arguments.length; _i++) {        x[_i] = arguments[_i];      }      var newArgs = new Array(arguments.length);      for (var j = 0; j < newArgs.length; j++)        newArgs[j] = arguments[j];      var all = args.concat(newArgs);      return f.apply(null, all);    };  };  var not = function (f) {    return function () {      var x = [];      for (var _i = 0; _i < arguments.length; _i++) {        x[_i] = arguments[_i];      }      return !f.apply(null, arguments);    };  };  var die = function (msg) {    return function () {      throw new Error(msg);    };  };  var apply = function (f) {    return f();  };  var call = function (f) {    f();  };  var never = constant(false);  var always = constant(true);  var $_3pjweotejh8lz3k4 = {    noop: noop,    noarg: noarg,    compose: compose,    constant: constant,    identity: identity,    tripleEquals: tripleEquals,    curry: curry,    not: not,    die: die,    apply: apply,    call: call,    never: never,    always: always  };  var never$1 = $_3pjweotejh8lz3k4.never;  var always$1 = $_3pjweotejh8lz3k4.always;  var none = function () {    return NONE;  };  var NONE = function () {    var eq = function (o) {      return o.isNone();    };    var call = function (thunk) {      return thunk();    };    var id = function (n) {      return n;    };    var noop = function () {    };    var me = {      fold: function (n, s) {        return n();      },      is: never$1,      isSome: never$1,      isNone: always$1,      getOr: id,      getOrThunk: call,      getOrDie: function (msg) {        throw new Error(msg || 'error: getOrDie called on none.');      },      or: id,      orThunk: call,      map: none,      ap: none,      each: noop,      bind: none,      flatten: none,      exists: never$1,      forall: always$1,      filter: none,      equals: eq,      equals_: eq,      toArray: function () {        return [];      },      toString: $_3pjweotejh8lz3k4.constant('none()')    };    if (Object.freeze)      Object.freeze(me);    return me;  }();  var some = function (a) {    var constant_a = function () {      return a;    };    var self = function () {      return me;    };    var map = function (f) {      return some(f(a));    };    var bind = function (f) {      return f(a);    };    var me = {      fold: function (n, s) {        return s(a);      },      is: function (v) {        return a === v;      },      isSome: always$1,      isNone: never$1,      getOr: constant_a,      getOrThunk: constant_a,      getOrDie: constant_a,      or: self,      orThunk: self,      map: map,      ap: function (optfab) {        return optfab.fold(none, function (fab) {          return some(fab(a));        });      },      each: function (f) {        f(a);      },      bind: bind,      flatten: constant_a,      exists: bind,      forall: bind,      filter: function (f) {        return f(a) ? me : NONE;      },      equals: function (o) {        return o.is(a);      },      equals_: function (o, elementEq) {        return o.fold(never$1, function (b) {          return elementEq(a, b);        });      },      toArray: function () {        return [a];      },      toString: function () {        return 'some(' + a + ')';      }    };    return me;  };  var from = function (value) {    return value === null || value === undefined ? NONE : some(value);  };  var Option = {    some: some,    none: none,    from: from  };  var getUiContainerDelta = function (ctrl) {    var uiContainer = getUiContainer(ctrl);    if (uiContainer && global$3.DOM.getStyle(uiContainer, 'position', true) !== 'static') {      var containerPos = global$3.DOM.getPos(uiContainer);      var dx = uiContainer.scrollLeft - containerPos.x;      var dy = uiContainer.scrollTop - containerPos.y;      return Option.some({        x: dx,        y: dy      });    } else {      return Option.none();    }  };  var setUiContainer = function (editor, ctrl) {    var uiContainer = global$3.DOM.select(editor.settings.ui_container)[0];    ctrl.getRoot().uiContainer = uiContainer;  };  var getUiContainer = function (ctrl) {    return ctrl ? ctrl.getRoot().uiContainer : null;  };  var inheritUiContainer = function (fromCtrl, toCtrl) {    return toCtrl.uiContainer = getUiContainer(fromCtrl);  };  var $_1jk3jvtcjh8lz3jy = {    getUiContainerDelta: getUiContainerDelta,    setUiContainer: setUiContainer,    getUiContainer: getUiContainer,    inheritUiContainer: inheritUiContainer  };  var createToolbar = function (editor, items, size) {    var toolbarItems = [];    var buttonGroup;    if (!items) {      return;    }    global$2.each(items.split(/[ ,]/), function (item) {      var itemName;      var bindSelectorChanged = function () {        var selection = editor.selection;        if (item.settings.stateSelector) {          selection.selectorChanged(item.settings.stateSelector, function (state) {            item.active(state);          }, true);        }        if (item.settings.disabledStateSelector) {          selection.selectorChanged(item.settings.disabledStateSelector, function (state) {            item.disabled(state);          });        }      };      if (item === '|') {        buttonGroup = null;      } else {        if (!buttonGroup) {          buttonGroup = {            type: 'buttongroup',            items: []          };          toolbarItems.push(buttonGroup);        }        if (editor.buttons[item]) {          itemName = item;          item = editor.buttons[itemName];          if (typeof item === 'function') {            item = item();          }          item.type = item.type || 'button';          item.size = size;          item = global$4.create(item);          buttonGroup.items.push(item);          if (editor.initialized) {            bindSelectorChanged();          } else {            editor.on('init', bindSelectorChanged);          }        }      }    });    return {      type: 'toolbar',      layout: 'flow',      items: toolbarItems    };  };  var createToolbars = function (editor, size) {    var toolbars = [];    var addToolbar = function (items) {      if (items) {        toolbars.push(createToolbar(editor, items, size));      }    };    global$2.each(getToolbars(editor), function (toolbar) {      addToolbar(toolbar);    });    if (toolbars.length) {      return {        type: 'panel',        layout: 'stack',        classes: 'toolbar-grp',        ariaRoot: true,        ariaRemember: true,        items: toolbars      };    }  };  var $_fudqhrtfjh8lz3k7 = {    createToolbar: createToolbar,    createToolbars: createToolbars  };  var DOM = global$3.DOM;  var toClientRect = function (geomRect) {    return {      left: geomRect.x,      top: geomRect.y,      width: geomRect.w,      height: geomRect.h,      right: geomRect.x + geomRect.w,      bottom: geomRect.y + geomRect.h    };  };  var hideAllFloatingPanels = function (editor) {    global$2.each(editor.contextToolbars, function (toolbar) {      if (toolbar.panel) {        toolbar.panel.hide();      }    });  };  var movePanelTo = function (panel, pos) {    panel.moveTo(pos.left, pos.top);  };  var togglePositionClass = function (panel, relPos, predicate) {    relPos = relPos ? relPos.substr(0, 2) : '';    global$2.each({      t: 'down',      b: 'up'    }, function (cls, pos) {      panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(0, 1)));    });    global$2.each({      l: 'left',      r: 'right'    }, function (cls, pos) {      panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(1, 1)));    });  };  var userConstrain = function (handler, x, y, elementRect, contentAreaRect, panelRect) {    panelRect = toClientRect({      x: x,      y: y,      w: panelRect.w,      h: panelRect.h    });    if (handler) {      panelRect = handler({        elementRect: toClientRect(elementRect),        contentAreaRect: toClientRect(contentAreaRect),        panelRect: panelRect      });    }    return panelRect;  };  var addContextualToolbars = function (editor) {    var scrollContainer;    var getContextToolbars = function () {      return editor.contextToolbars || [];    };    var getElementRect = function (elm) {      var pos, targetRect, root;      pos = DOM.getPos(editor.getContentAreaContainer());      targetRect = editor.dom.getRect(elm);      root = editor.dom.getRoot();      if (root.nodeName === 'BODY') {        targetRect.x -= root.ownerDocument.documentElement.scrollLeft || root.scrollLeft;        targetRect.y -= root.ownerDocument.documentElement.scrollTop || root.scrollTop;      }      targetRect.x += pos.x;      targetRect.y += pos.y;      return targetRect;    };    var reposition = function (match, shouldShow) {      var relPos, panelRect, elementRect, contentAreaRect, panel, relRect, testPositions, smallElementWidthThreshold;      var handler = getInlineToolbarPositionHandler(editor);      if (editor.removed) {        return;      }      if (!match || !match.toolbar.panel) {        hideAllFloatingPanels(editor);        return;      }      testPositions = [        'bc-tc',        'tc-bc',        'tl-bl',        'bl-tl',        'tr-br',        'br-tr'      ];      panel = match.toolbar.panel;      if (shouldShow) {        panel.show();      }      elementRect = getElementRect(match.element);      panelRect = DOM.getRect(panel.getEl());      contentAreaRect = DOM.getRect(editor.getContentAreaContainer() || editor.getBody());      var delta = $_1jk3jvtcjh8lz3jy.getUiContainerDelta(panel).getOr({        x: 0,        y: 0      });      elementRect.x += delta.x;      elementRect.y += delta.y;      panelRect.x += delta.x;      panelRect.y += delta.y;      contentAreaRect.x += delta.x;      contentAreaRect.y += delta.y;      smallElementWidthThreshold = 25;      if (DOM.getStyle(match.element, 'display', true) !== 'inline') {        var clientRect = match.element.getBoundingClientRect();        elementRect.w = clientRect.width;        elementRect.h = clientRect.height;      }      if (!editor.inline) {        contentAreaRect.w = editor.getDoc().documentElement.offsetWidth;      }      if (editor.selection.controlSelection.isResizable(match.element) && elementRect.w < smallElementWidthThreshold) {        elementRect = global$6.inflate(elementRect, 0, 8);      }      relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, testPositions);      elementRect = global$6.clamp(elementRect, contentAreaRect);      if (relPos) {        relRect = global$6.relativePosition(panelRect, elementRect, relPos);        movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));      } else {        contentAreaRect.h += panelRect.h;        elementRect = global$6.intersect(contentAreaRect, elementRect);        if (elementRect) {          relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, [            'bc-tc',            'bl-tl',            'br-tr'          ]);          if (relPos) {            relRect = global$6.relativePosition(panelRect, elementRect, relPos);            movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));          } else {            movePanelTo(panel, userConstrain(handler, elementRect.x, elementRect.y, elementRect, contentAreaRect, panelRect));          }        } else {          panel.hide();        }      }      togglePositionClass(panel, relPos, function (pos1, pos2) {        return pos1 === pos2;      });    };    var repositionHandler = function (show) {      return function () {        var execute = function () {          if (editor.selection) {            reposition(findFrontMostMatch(editor.selection.getNode()), show);          }        };        global$7.requestAnimationFrame(execute);      };    };    var bindScrollEvent = function (panel) {      if (!scrollContainer) {        var reposition_1 = repositionHandler(true);        var uiContainer_1 = $_1jk3jvtcjh8lz3jy.getUiContainer(panel);        scrollContainer = editor.selection.getScrollContainer() || editor.getWin();        DOM.bind(scrollContainer, 'scroll', reposition_1);        DOM.bind(uiContainer_1, 'scroll', reposition_1);        editor.on('remove', function () {          DOM.unbind(scrollContainer, 'scroll', reposition_1);          DOM.unbind(uiContainer_1, 'scroll', reposition_1);        });      }    };    var showContextToolbar = function (match) {      var panel;      if (match.toolbar.panel) {        match.toolbar.panel.show();        reposition(match);        return;      }      panel = global$4.create({        type: 'floatpanel',        role: 'dialog',        classes: 'tinymce tinymce-inline arrow',        ariaLabel: 'Inline toolbar',        layout: 'flex',        direction: 'column',        align: 'stretch',        autohide: false,        autofix: true,        fixed: true,        border: 1,        items: $_fudqhrtfjh8lz3k7.createToolbar(editor, match.toolbar.items),        oncancel: function () {          editor.focus();        }      });      $_1jk3jvtcjh8lz3jy.setUiContainer(editor, panel);      bindScrollEvent(panel);      match.toolbar.panel = panel;      panel.renderTo().reflow();      reposition(match);    };    var hideAllContextToolbars = function () {      global$2.each(getContextToolbars(), function (toolbar) {        if (toolbar.panel) {          toolbar.panel.hide();        }      });    };    var findFrontMostMatch = function (targetElm) {      var i, y, parentsAndSelf;      var toolbars = getContextToolbars();      parentsAndSelf = editor.$(targetElm).parents().add(targetElm);      for (i = parentsAndSelf.length - 1; i >= 0; i--) {        for (y = toolbars.length - 1; y >= 0; y--) {          if (toolbars[y].predicate(parentsAndSelf[i])) {            return {              toolbar: toolbars[y],              element: parentsAndSelf[i]            };          }        }      }      return null;    };    editor.on('click keyup setContent ObjectResized', function (e) {      if (e.type === 'setcontent' && !e.selection) {        return;      }      global$7.setEditorTimeout(editor, function () {        var match;        match = findFrontMostMatch(editor.selection.getNode());        if (match) {          hideAllContextToolbars();          showContextToolbar(match);        } else {          hideAllContextToolbars();        }      });    });    editor.on('blur hide contextmenu', hideAllContextToolbars);    editor.on('ObjectResizeStart', function () {      var match = findFrontMostMatch(editor.selection.getNode());      if (match && match.toolbar.panel) {        match.toolbar.panel.hide();      }    });    editor.on('ResizeEditor ResizeWindow', repositionHandler(true));    editor.on('nodeChange', repositionHandler(false));    editor.on('remove', function () {      global$2.each(getContextToolbars(), function (toolbar) {        if (toolbar.panel) {          toolbar.panel.remove();        }      });      editor.contextToolbars = {};    });    editor.shortcuts.add('ctrl+shift+e > ctrl+shift+p', '', function () {      var match = findFrontMostMatch(editor.selection.getNode());      if (match && match.toolbar.panel) {        match.toolbar.panel.items()[0].focus();      }    });  };  var $_5kodmdt9jh8lz3js = { addContextualToolbars: addContextualToolbars };  var typeOf = function (x) {    if (x === null)      return 'null';    var t = typeof x;    if (t === 'object' && Array.prototype.isPrototypeOf(x))      return 'array';    if (t === 'object' && String.prototype.isPrototypeOf(x))      return 'string';    return t;  };  var isType = function (type) {    return function (value) {      return typeOf(value) === type;    };  };  var $_d8bie3tijh8lz3kn = {    isString: isType('string'),    isObject: isType('object'),    isArray: isType('array'),    isNull: isType('null'),    isBoolean: isType('boolean'),    isUndefined: isType('undefined'),    isFunction: isType('function'),    isNumber: isType('number')  };  var rawIndexOf = function () {    var pIndexOf = Array.prototype.indexOf;    var fastIndex = function (xs, x) {      return pIndexOf.call(xs, x);    };    var slowIndex = function (xs, x) {      return slowIndexOf(xs, x);    };    return pIndexOf === undefined ? slowIndex : fastIndex;  }();  var indexOf = function (xs, x) {    var r = rawIndexOf(xs, x);    return r === -1 ? Option.none() : Option.some(r);  };  var contains = function (xs, x) {    return rawIndexOf(xs, x) > -1;  };  var exists = function (xs, pred) {    return findIndex(xs, pred).isSome();  };  var range = function (num, f) {    var r = [];    for (var i = 0; i < num; i++) {      r.push(f(i));    }    return r;  };  var chunk = function (array, size) {    var r = [];    for (var i = 0; i < array.length; i += size) {      var s = array.slice(i, i + size);      r.push(s);    }    return r;  };  var map = function (xs, f) {    var len = xs.length;    var r = new Array(len);    for (var i = 0; i < len; i++) {      var x = xs[i];      r[i] = f(x, i, xs);    }    return r;  };  var each = function (xs, f) {    for (var i = 0, len = xs.length; i < len; i++) {      var x = xs[i];      f(x, i, xs);    }  };  var eachr = function (xs, f) {    for (var i = xs.length - 1; i >= 0; i--) {      var x = xs[i];      f(x, i, xs);    }  };  var partition = function (xs, pred) {    var pass = [];    var fail = [];    for (var i = 0, len = xs.length; i < len; i++) {      var x = xs[i];      var arr = pred(x, i, xs) ? pass : fail;      arr.push(x);    }    return {      pass: pass,      fail: fail    };  };  var filter = function (xs, pred) {    var r = [];    for (var i = 0, len = xs.length; i < len; i++) {      var x = xs[i];      if (pred(x, i, xs)) {        r.push(x);      }    }    return r;  };  var groupBy = function (xs, f) {    if (xs.length === 0) {      return [];    } else {      var wasType = f(xs[0]);      var r = [];      var group = [];      for (var i = 0, len = xs.length; i < len; i++) {        var x = xs[i];        var type = f(x);        if (type !== wasType) {          r.push(group);          group = [];        }        wasType = type;        group.push(x);      }      if (group.length !== 0) {        r.push(group);      }      return r;    }  };  var foldr = function (xs, f, acc) {    eachr(xs, function (x) {      acc = f(acc, x);    });    return acc;  };  var foldl = function (xs, f, acc) {    each(xs, function (x) {      acc = f(acc, x);    });    return acc;  };  var find = function (xs, pred) {    for (var i = 0, len = xs.length; i < len; i++) {      var x = xs[i];      if (pred(x, i, xs)) {        return Option.some(x);      }    }    return Option.none();  };  var findIndex = function (xs, pred) {    for (var i = 0, len = xs.length; i < len; i++) {      var x = xs[i];      if (pred(x, i, xs)) {        return Option.some(i);      }    }    return Option.none();  };  var slowIndexOf = function (xs, x) {    for (var i = 0, len = xs.length; i < len; ++i) {      if (xs[i] === x) {        return i;      }    }    return -1;  };  var push = Array.prototype.push;  var flatten = function (xs) {    var r = [];    for (var i = 0, len = xs.length; i < len; ++i) {      if (!Array.prototype.isPrototypeOf(xs[i]))        throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);      push.apply(r, xs[i]);    }    return r;  };  var bind = function (xs, f) {    var output = map(xs, f);    return flatten(output);  };  var forall = function (xs, pred) {    for (var i = 0, len = xs.length; i < len; ++i) {      var x = xs[i];      if (pred(x, i, xs) !== true) {        return false;      }    }    return true;  };  var equal = function (a1, a2) {    return a1.length === a2.length && forall(a1, function (x, i) {      return x === a2[i];    });  };  var slice = Array.prototype.slice;  var reverse = function (xs) {    var r = slice.call(xs, 0);    r.reverse();    return r;  };  var difference = function (a1, a2) {    return filter(a1, function (x) {      return !contains(a2, x);    });  };  var mapToObject = function (xs, f) {    var r = {};    for (var i = 0, len = xs.length; i < len; i++) {      var x = xs[i];      r[String(x)] = f(x, i);    }    return r;  };  var pure = function (x) {    return [x];  };  var sort = function (xs, comparator) {    var copy = slice.call(xs, 0);    copy.sort(comparator);    return copy;  };  var head = function (xs) {    return xs.length === 0 ? Option.none() : Option.some(xs[0]);  };  var last = function (xs) {    return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]);  };  var from$1 = $_d8bie3tijh8lz3kn.isFunction(Array.from) ? Array.from : function (x) {    return slice.call(x);  };  var $_f3qxhzthjh8lz3kg = {    map: map,    each: each,    eachr: eachr,    partition: partition,    filter: filter,    groupBy: groupBy,    indexOf: indexOf,    foldr: foldr,    foldl: foldl,    find: find,    findIndex: findIndex,    flatten: flatten,    bind: bind,    forall: forall,    exists: exists,    contains: contains,    equal: equal,    reverse: reverse,    chunk: chunk,    difference: difference,    mapToObject: mapToObject,    pure: pure,    sort: sort,    range: range,    head: head,    last: last,    from: from$1  };  var defaultMenus = {    file: {      title: 'File',      items: 'newdocument restoredraft | preview | print'    },    edit: {      title: 'Edit',      items: 'undo redo | cut copy paste pastetext | selectall'    },    view: {      title: 'View',      items: 'code | visualaid visualchars visualblocks | spellchecker | preview fullscreen'    },    insert: {      title: 'Insert',      items: 'image link media template codesample inserttable | charmap hr | pagebreak nonbreaking anchor toc | insertdatetime'    },    format: {      title: 'Format',      items: 'bold italic underline strikethrough superscript subscript codeformat | blockformats align | removeformat'    },    tools: {      title: 'Tools',      items: 'spellchecker spellcheckerlanguage | a11ycheck code'    },    table: { title: 'Table' },    help: { title: 'Help' }  };  var delimiterMenuNamePair = function () {    return {      name: '|',      item: { text: '|' }    };  };  var createMenuNameItemPair = function (name, item) {    var menuItem = item ? {      name: name,      item: item    } : null;    return name === '|' ? delimiterMenuNamePair() : menuItem;  };  var hasItemName = function (namedMenuItems, name) {    return $_f3qxhzthjh8lz3kg.findIndex(namedMenuItems, function (namedMenuItem) {      return namedMenuItem.name === name;    }).isSome();  };  var isSeparator = function (namedMenuItem) {    return namedMenuItem && namedMenuItem.item.text === '|';  };  var cleanupMenu = function (namedMenuItems, removedMenuItems) {    var menuItemsPass1 = $_f3qxhzthjh8lz3kg.filter(namedMenuItems, function (namedMenuItem) {      return removedMenuItems.hasOwnProperty(namedMenuItem.name) === false;    });    var menuItemsPass2 = $_f3qxhzthjh8lz3kg.filter(menuItemsPass1, function (namedMenuItem, i, namedMenuItems) {      return !isSeparator(namedMenuItem) || !isSeparator(namedMenuItems[i - 1]);    });    return $_f3qxhzthjh8lz3kg.filter(menuItemsPass2, function (namedMenuItem, i, namedMenuItems) {      return !isSeparator(namedMenuItem) || i > 0 && i < namedMenuItems.length - 1;    });  };  var createMenu = function (editorMenuItems, menus, removedMenuItems, context) {    var menuButton, menu, namedMenuItems, isUserDefined;    if (menus) {      menu = menus[context];      isUserDefined = true;    } else {      menu = defaultMenus[context];    }    if (menu) {      menuButton = { text: menu.title };      namedMenuItems = [];      global$2.each((menu.items || '').split(/[ ,]/), function (name) {        var namedMenuItem = createMenuNameItemPair(name, editorMenuItems[name]);        if (namedMenuItem) {          namedMenuItems.push(namedMenuItem);        }      });      if (!isUserDefined) {        global$2.each(editorMenuItems, function (item, name) {          if (item.context === context && !hasItemName(namedMenuItems, name)) {            if (item.separator === 'before') {              namedMenuItems.push(delimiterMenuNamePair());            }            if (item.prependToContext) {              namedMenuItems.unshift(createMenuNameItemPair(name, item));            } else {              namedMenuItems.push(createMenuNameItemPair(name, item));            }            if (item.separator === 'after') {              namedMenuItems.push(delimiterMenuNamePair());            }          }        });      }      menuButton.menu = $_f3qxhzthjh8lz3kg.map(cleanupMenu(namedMenuItems, removedMenuItems), function (menuItem) {        return menuItem.item;      });      if (!menuButton.menu.length) {        return null;      }    }    return menuButton;  };  var getDefaultMenubar = function (editor) {    var name;    var defaultMenuBar = [];    var menu = getMenu(editor);    if (menu) {      for (name in menu) {        defaultMenuBar.push(name);      }    } else {      for (name in defaultMenus) {        defaultMenuBar.push(name);      }    }    return defaultMenuBar;  };  var createMenuButtons = function (editor) {    var menuButtons = [];    var defaultMenuBar = getDefaultMenubar(editor);    var removedMenuItems = global$2.makeMap(getRemovedMenuItems(editor).split(/[ ,]/));    var menubar = getMenubar(editor);    var enabledMenuNames = typeof menubar === 'string' ? menubar.split(/[ ,]/) : defaultMenuBar;    for (var i = 0; i < enabledMenuNames.length; i++) {      var menuItems = enabledMenuNames[i];      var menu = createMenu(editor.menuItems, getMenu(editor), removedMenuItems, menuItems);      if (menu) {        menuButtons.push(menu);      }    }    return menuButtons;  };  var $_8i78rftgjh8lz3ka = { createMenuButtons: createMenuButtons };  var DOM$1 = global$3.DOM;  var getSize = function (elm) {    return {      width: elm.clientWidth,      height: elm.clientHeight    };  };  var resizeTo = function (editor, width, height) {    var containerElm, iframeElm, containerSize, iframeSize;    containerElm = editor.getContainer();    iframeElm = editor.getContentAreaContainer().firstChild;    containerSize = getSize(containerElm);    iframeSize = getSize(iframeElm);    if (width !== null) {      width = Math.max(getMinWidth(editor), width);      width = Math.min(getMaxWidth(editor), width);      DOM$1.setStyle(containerElm, 'width', width + (containerSize.width - iframeSize.width));      DOM$1.setStyle(iframeElm, 'width', width);    }    height = Math.max(getMinHeight(editor), height);    height = Math.min(getMaxHeight(editor), height);    DOM$1.setStyle(iframeElm, 'height', height);    $_aycuj2t7jh8lz3jp.fireResizeEditor(editor);  };  var resizeBy = function (editor, dw, dh) {    var elm = editor.getContentAreaContainer();    resizeTo(editor, elm.clientWidth + dw, elm.clientHeight + dh);  };  var $_5toavetjjh8lz3ko = {    resizeTo: resizeTo,    resizeBy: resizeBy  };  var global$8 = tinymce.util.Tools.resolve('tinymce.Env');  var api = function (elm) {    return {      element: function () {        return elm;      }    };  };  var trigger = function (sidebar, panel, callbackName) {    var callback = sidebar.settings[callbackName];    if (callback) {      callback(api(panel.getEl('body')));    }  };  var hidePanels = function (name, container, sidebars) {    global$2.each(sidebars, function (sidebar) {      var panel = container.items().filter('#' + sidebar.name)[0];      if (panel && panel.visible() && sidebar.name !== name) {        trigger(sidebar, panel, 'onhide');        panel.visible(false);      }    });  };  var deactivateButtons = function (toolbar) {    toolbar.items().each(function (ctrl) {      ctrl.active(false);    });  };  var findSidebar = function (sidebars, name) {    return global$2.grep(sidebars, function (sidebar) {      return sidebar.name === name;    })[0];  };  var showPanel = function (editor, name, sidebars) {    return function (e) {      var btnCtrl = e.control;      var container = btnCtrl.parents().filter('panel')[0];      var panel = container.find('#' + name)[0];      var sidebar = findSidebar(sidebars, name);      hidePanels(name, container, sidebars);      deactivateButtons(btnCtrl.parent());      if (panel && panel.visible()) {        trigger(sidebar, panel, 'onhide');        panel.hide();        btnCtrl.active(false);      } else {        if (panel) {          panel.show();          trigger(sidebar, panel, 'onshow');        } else {          panel = global$4.create({            type: 'container',            name: name,            layout: 'stack',            classes: 'sidebar-panel',            html: ''          });          container.prepend(panel);          trigger(sidebar, panel, 'onrender');          trigger(sidebar, panel, 'onshow');        }        btnCtrl.active(true);      }      $_aycuj2t7jh8lz3jp.fireResizeEditor(editor);    };  };  var isModernBrowser = function () {    return !global$8.ie || global$8.ie >= 11;  };  var hasSidebar = function (editor) {    return isModernBrowser() && editor.sidebars ? editor.sidebars.length > 0 : false;  };  var createSidebar = function (editor) {    var buttons = global$2.map(editor.sidebars, function (sidebar) {      var settings = sidebar.settings;      return {        type: 'button',        icon: settings.icon,        image: settings.image,        tooltip: settings.tooltip,        onclick: showPanel(editor, sidebar.name, editor.sidebars)      };    });    return {      type: 'panel',      name: 'sidebar',      layout: 'stack',      classes: 'sidebar',      items: [{          type: 'toolbar',          layout: 'stack',          classes: 'sidebar-toolbar',          items: buttons        }]    };  };  var $_5buua9tkjh8lz3kq = {    hasSidebar: hasSidebar,    createSidebar: createSidebar  };  var fireSkinLoaded$1 = function (editor) {    var done = function () {      editor._skinLoaded = true;      $_aycuj2t7jh8lz3jp.fireSkinLoaded(editor);    };    return function () {      if (editor.initialized) {        done();      } else {        editor.on('init', done);      }    };  };  var $_231e94tmjh8lz3ku = { fireSkinLoaded: fireSkinLoaded$1 };  var DOM$2 = global$3.DOM;  var switchMode = function (panel) {    return function (e) {      panel.find('*').disabled(e.mode === 'readonly');    };  };  var editArea = function (border) {    return {      type: 'panel',      name: 'iframe',      layout: 'stack',      classes: 'edit-area',      border: border,      html: ''    };  };  var editAreaContainer = function (editor) {    return {      type: 'panel',      layout: 'stack',      classes: 'edit-aria-container',      border: '1 0 0 0',      items: [        editArea('0'),        $_5buua9tkjh8lz3kq.createSidebar(editor)      ]    };  };  var render = function (editor, theme, args) {    var panel, resizeHandleCtrl, startSize;    if (isSkinDisabled(editor) === false && args.skinUiCss) {      DOM$2.styleSheetLoader.load(args.skinUiCss, $_231e94tmjh8lz3ku.fireSkinLoaded(editor));    } else {      $_231e94tmjh8lz3ku.fireSkinLoaded(editor)();    }    panel = theme.panel = global$4.create({      type: 'panel',      role: 'application',      classes: 'tinymce',      style: 'visibility: hidden',      layout: 'stack',      border: 1,      items: [        {          type: 'container',          classes: 'top-part',          items: [            hasMenubar(editor) === false ? null : {              type: 'menubar',              border: '0 0 1 0',              items: $_8i78rftgjh8lz3ka.createMenuButtons(editor)            },            $_fudqhrtfjh8lz3k7.createToolbars(editor, getToolbarSize(editor))          ]        },        $_5buua9tkjh8lz3kq.hasSidebar(editor) ? editAreaContainer(editor) : editArea('1 0 0 0')      ]    });    $_1jk3jvtcjh8lz3jy.setUiContainer(editor, panel);    if (getResize(editor) !== 'none') {      resizeHandleCtrl = {        type: 'resizehandle',        direction: getResize(editor),        onResizeStart: function () {          var elm = editor.getContentAreaContainer().firstChild;          startSize = {            width: elm.clientWidth,            height: elm.clientHeight          };        },        onResize: function (e) {          if (getResize(editor) === 'both') {            $_5toavetjjh8lz3ko.resizeTo(editor, startSize.width + e.deltaX, startSize.height + e.deltaY);          } else {            $_5toavetjjh8lz3ko.resizeTo(editor, null, startSize.height + e.deltaY);          }        }      };    }    if (hasStatusbar(editor)) {      var linkHtml = '<a href="https://www.tinymce.com/?utm_campaign=editor_referral&utm_medium=poweredby&utm_source=tinymce" rel="noopener" target="_blank" role="presentation" tabindex="-1">tinymce</a>';      var html = global$5.translate([        'Powered by {0}',        linkHtml      ]);      var brandingLabel = isBrandingEnabled(editor) ? {        type: 'label',        classes: 'branding',        html: ' ' + html      } : null;      panel.add({        type: 'panel',        name: 'statusbar',        classes: 'statusbar',        layout: 'flow',        border: '1 0 0 0',        ariaRoot: true,        items: [          {            type: 'elementpath',            editor: editor          },          resizeHandleCtrl,          brandingLabel        ]      });    }    $_aycuj2t7jh8lz3jp.fireBeforeRenderUI(editor);    editor.on('SwitchMode', switchMode(panel));    panel.renderBefore(args.targetNode).reflow();    if (isReadOnly(editor)) {      editor.setMode('readonly');    }    if (args.width) {      DOM$2.setStyle(panel.getEl(), 'width', args.width);    }    editor.on('remove', function () {      panel.remove();      panel = null;    });    $_47hpztt8jh8lz3jq.addKeys(editor, panel);    $_5kodmdt9jh8lz3js.addContextualToolbars(editor);    return {      iframeContainer: panel.find('#iframe')[0].getEl(),      editorContainer: panel.getEl()    };  };  var $_4cj0a3t3jh8lz3jk = { render: render };  var global$9 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');  var count = 0;  var funcs = {    id: function () {      return 'mceu_' + count++;    },    create: function (name, attrs, children) {      var elm = document.createElement(name);      global$3.DOM.setAttribs(elm, attrs);      if (typeof children === 'string') {        elm.innerHTML = children;      } else {        global$2.each(children, function (child) {          if (child.nodeType) {            elm.appendChild(child);          }        });      }      return elm;    },    createFragment: function (html) {      return global$3.DOM.createFragment(html);    },    getWindowSize: function () {      return global$3.DOM.getViewPort();    },    getSize: function (elm) {      var width, height;      if (elm.getBoundingClientRect) {        var rect = elm.getBoundingClientRect();        width = Math.max(rect.width || rect.right - rect.left, elm.offsetWidth);        height = Math.max(rect.height || rect.bottom - rect.bottom, elm.offsetHeight);      } else {        width = elm.offsetWidth;        height = elm.offsetHeight;      }      return {        width: width,        height: height      };    },    getPos: function (elm, root) {      return global$3.DOM.getPos(elm, root || funcs.getContainer());    },    getContainer: function () {      return global$8.container ? global$8.container : document.body;    },    getViewPort: function (win) {      return global$3.DOM.getViewPort(win);    },    get: function (id) {      return document.getElementById(id);    },    addClass: function (elm, cls) {      return global$3.DOM.addClass(elm, cls);    },    removeClass: function (elm, cls) {      return global$3.DOM.removeClass(elm, cls);    },    hasClass: function (elm, cls) {      return global$3.DOM.hasClass(elm, cls);    },    toggleClass: function (elm, cls, state) {      return global$3.DOM.toggleClass(elm, cls, state);    },    css: function (elm, name, value) {      return global$3.DOM.setStyle(elm, name, value);    },    getRuntimeStyle: function (elm, name) {      return global$3.DOM.getStyle(elm, name, true);    },    on: function (target, name, callback, scope) {      return global$3.DOM.bind(target, name, callback, scope);    },    off: function (target, name, callback) {      return global$3.DOM.unbind(target, name, callback);    },    fire: function (target, name, args) {      return global$3.DOM.fire(target, name, args);    },    innerHtml: function (elm, html) {      global$3.DOM.setHTML(elm, html);    }  };  var isStatic = function (elm) {    return funcs.getRuntimeStyle(elm, 'position') === 'static';  };  var isFixed = function (ctrl) {    return ctrl.state.get('fixed');  };  function calculateRelativePosition(ctrl, targetElm, rel) {    var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;    viewport = getWindowViewPort();    pos = funcs.getPos(targetElm, $_1jk3jvtcjh8lz3jy.getUiContainer(ctrl));    x = pos.x;    y = pos.y;    if (isFixed(ctrl) && isStatic(document.body)) {      x -= viewport.x;      y -= viewport.y;    }    ctrlElm = ctrl.getEl();    size = funcs.getSize(ctrlElm);    selfW = size.width;    selfH = size.height;    size = funcs.getSize(targetElm);    targetW = size.width;    targetH = size.height;    rel = (rel || '').split('');    if (rel[0] === 'b') {      y += targetH;    }    if (rel[1] === 'r') {      x += targetW;    }    if (rel[0] === 'c') {      y += Math.round(targetH / 2);    }    if (rel[1] === 'c') {      x += Math.round(targetW / 2);    }    if (rel[3] === 'b') {      y -= selfH;    }    if (rel[4] === 'r') {      x -= selfW;    }    if (rel[3] === 'c') {      y -= Math.round(selfH / 2);    }    if (rel[4] === 'c') {      x -= Math.round(selfW / 2);    }    return {      x: x,      y: y,      w: selfW,      h: selfH    };  }  var getUiContainerViewPort = function (customUiContainer) {    return {      x: 0,      y: 0,      w: customUiContainer.scrollWidth - 1,      h: customUiContainer.scrollHeight - 1    };  };  var getWindowViewPort = function () {    var win = window;    var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);    var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);    var w = win.innerWidth || document.documentElement.clientWidth;    var h = win.innerHeight || document.documentElement.clientHeight;    return {      x: x,      y: y,      w: x + w,      h: y + h    };  };  var getViewPortRect = function (ctrl) {    var customUiContainer = $_1jk3jvtcjh8lz3jy.getUiContainer(ctrl);    return customUiContainer && !isFixed(ctrl) ? getUiContainerViewPort(customUiContainer) : getWindowViewPort();  };  var $_d97gfctrjh8lz3lm = {    testMoveRel: function (elm, rels) {      var viewPortRect = getViewPortRect(this);      for (var i = 0; i < rels.length; i++) {        var pos = calculateRelativePosition(this, elm, rels[i]);        if (isFixed(this)) {          if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {            return rels[i];          }        } else {          if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w && pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h) {            return rels[i];          }        }      }      return rels[0];    },    moveRel: function (elm, rel) {      if (typeof rel !== 'string') {        rel = this.testMoveRel(elm, rel);      }      var pos = calculateRelativePosition(this, elm, rel);      return this.moveTo(pos.x, pos.y);    },    moveBy: function (dx, dy) {      var self = this, rect = self.layoutRect();      self.moveTo(rect.x + dx, rect.y + dy);      return self;    },    moveTo: function (x, y) {      var self = this;      function constrain(value, max, size) {        if (value < 0) {          return 0;        }        if (value + size > max) {          value = max - size;          return value < 0 ? 0 : value;        }        return value;      }      if (self.settings.constrainToViewport) {        var viewPortRect = getViewPortRect(this);        var layoutRect = self.layoutRect();        x = constrain(x, viewPortRect.w, layoutRect.w);        y = constrain(y, viewPortRect.h, layoutRect.h);      }      var uiContainer = $_1jk3jvtcjh8lz3jy.getUiContainer(self);      if (uiContainer && isStatic(uiContainer) && !isFixed(self)) {        x -= uiContainer.scrollLeft;        y -= uiContainer.scrollTop;      }      if (uiContainer) {        x += 1;        y += 1;      }      if (self.state.get('rendered')) {        self.layoutRect({          x: x,          y: y        }).repaint();      } else {        self.settings.x = x;        self.settings.y = y;      }      self.fire('move', {        x: x,        y: y      });      return self;    }  };  var global$10 = tinymce.util.Tools.resolve('tinymce.util.Class');  var global$11 = tinymce.util.Tools.resolve('tinymce.util.EventDispatcher');  var $_focdcktxjh8lz3mn = {    parseBox: function (value) {      var len;      var radix = 10;      if (!value) {        return;      }      if (typeof value === 'number') {        value = value || 0;        return {          top: value,          left: value,          bottom: value,          right: value        };      }      value = value.split(' ');      len = value.length;      if (len === 1) {        value[1] = value[2] = value[3] = value[0];      } else if (len === 2) {        value[2] = value[0];        value[3] = value[1];      } else if (len === 3) {        value[3] = value[1];      }      return {        top: parseInt(value[0], radix) || 0,        right: parseInt(value[1], radix) || 0,        bottom: parseInt(value[2], radix) || 0,        left: parseInt(value[3], radix) || 0      };    },    measureBox: function (elm, prefix) {      function getStyle(name) {        var defaultView = elm.ownerDocument.defaultView;        if (defaultView) {          var computedStyle = defaultView.getComputedStyle(elm, null);          if (computedStyle) {            name = name.replace(/[A-Z]/g, function (a) {              return '-' + a;            });            return computedStyle.getPropertyValue(name);          } else {            return null;          }        }        return elm.currentStyle[name];      }      function getSide(name) {        var val = parseFloat(getStyle(name));        return isNaN(val) ? 0 : val;      }      return {        top: getSide(prefix + 'TopWidth'),        right: getSide(prefix + 'RightWidth'),        bottom: getSide(prefix + 'BottomWidth'),        left: getSide(prefix + 'LeftWidth')      };    }  };  function noop$1() {  }  function ClassList(onchange) {    this.cls = [];    this.cls._map = {};    this.onchange = onchange || noop$1;    this.prefix = '';  }  global$2.extend(ClassList.prototype, {    add: function (cls) {      if (cls && !this.contains(cls)) {        this.cls._map[cls] = true;        this.cls.push(cls);        this._change();      }      return this;    },    remove: function (cls) {      if (this.contains(cls)) {        var i = void 0;        for (i = 0; i < this.cls.length; i++) {          if (this.cls[i] === cls) {            break;          }        }        this.cls.splice(i, 1);        delete this.cls._map[cls];        this._change();      }      return this;    },    toggle: function (cls, state) {      var curState = this.contains(cls);      if (curState !== state) {        if (curState) {          this.remove(cls);        } else {          this.add(cls);        }        this._change();      }      return this;    },    contains: function (cls) {      return !!this.cls._map[cls];    },    _change: function () {      delete this.clsValue;      this.onchange.call(this);    }  });  ClassList.prototype.toString = function () {    var value;    if (this.clsValue) {      return this.clsValue;    }    value = '';    for (var i = 0; i < this.cls.length; i++) {      if (i > 0) {        value += ' ';      }      value += this.prefix + this.cls[i];    }    return value;  };  function unique(array) {    var uniqueItems = [];    var i = array.length, item;    while (i--) {      item = array[i];      if (!item.__checked) {        uniqueItems.push(item);        item.__checked = 1;      }    }    i = uniqueItems.length;    while (i--) {      delete uniqueItems[i].__checked;    }    return uniqueItems;  }  var expression = /^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i;  var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g;  var whiteSpace = /^\s*|\s*$/g;  var Collection;  var Selector = global$10.extend({    init: function (selector) {      var match = this.match;      function compileNameFilter(name) {        if (name) {          name = name.toLowerCase();          return function (item) {            return name === '*' || item.type === name;          };        }      }      function compileIdFilter(id) {        if (id) {          return function (item) {            return item._name === id;          };        }      }      function compileClassesFilter(classes) {        if (classes) {          classes = classes.split('.');          return function (item) {            var i = classes.length;            while (i--) {              if (!item.classes.contains(classes[i])) {                return false;              }            }            return true;          };        }      }      function compileAttrFilter(name, cmp, check) {        if (name) {          return function (item) {            var value = item[name] ? item[name]() : '';            return !cmp ? !!check : cmp === '=' ? value === check : cmp === '*=' ? value.indexOf(check) >= 0 : cmp === '~=' ? (' ' + value + ' ').indexOf(' ' + check + ' ') >= 0 : cmp === '!=' ? value !== check : cmp === '^=' ? value.indexOf(check) === 0 : cmp === '$=' ? value.substr(value.length - check.length) === check : false;          };        }      }      function compilePsuedoFilter(name) {        var notSelectors;        if (name) {          name = /(?:not\((.+)\))|(.+)/i.exec(name);          if (!name[1]) {            name = name[2];            return function (item, index, length) {              return name === 'first' ? index === 0 : name === 'last' ? index === length - 1 : name === 'even' ? index % 2 === 0 : name === 'odd' ? index % 2 === 1 : item[name] ? item[name]() : false;            };          }          notSelectors = parseChunks(name[1], []);          return function (item) {            return !match(item, notSelectors);          };        }      }      function compile(selector, filters, direct) {        var parts;        function add(filter) {          if (filter) {            filters.push(filter);          }        }        parts = expression.exec(selector.replace(whiteSpace, ''));        add(compileNameFilter(parts[1]));        add(compileIdFilter(parts[2]));        add(compileClassesFilter(parts[3]));        add(compileAttrFilter(parts[4], parts[5], parts[6]));        add(compilePsuedoFilter(parts[7]));        filters.pseudo = !!parts[7];        filters.direct = direct;        return filters;      }      function parseChunks(selector, selectors) {        var parts = [];        var extra, matches, i;        do {          chunker.exec('');          matches = chunker.exec(selector);          if (matches) {            selector = matches[3];            parts.push(matches[1]);            if (matches[2]) {              extra = matches[3];              break;            }          }        } while (matches);        if (extra) {          parseChunks(extra, selectors);        }        selector = [];        for (i = 0; i < parts.length; i++) {          if (parts[i] !== '>') {            selector.push(compile(parts[i], [], parts[i - 1] === '>'));          }        }        selectors.push(selector);        return selectors;      }      this._selectors = parseChunks(selector, []);    },    match: function (control, selectors) {      var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;      selectors = selectors || this._selectors;      for (i = 0, l = selectors.length; i < l; i++) {        selector = selectors[i];        sl = selector.length;        item = control;        count = 0;        for (si = sl - 1; si >= 0; si--) {          filters = selector[si];          while (item) {            if (filters.pseudo) {              siblings = item.parent().items();              index = length = siblings.length;              while (index--) {                if (siblings[index] === item) {                  break;                }              }            }            for (fi = 0, fl = filters.length; fi < fl; fi++) {              if (!filters[fi](item, index, length)) {                fi = fl + 1;                break;              }            }            if (fi === fl) {              count++;              break;            } else {              if (si === sl - 1) {                break;              }            }            item = item.parent();          }        }        if (count === sl) {          return true;        }      }      return false;    },    find: function (container) {      var matches = [], i, l;      var selectors = this._selectors;      function collect(items, selector, index) {        var i, l, fi, fl, item;        var filters = selector[index];        for (i = 0, l = items.length; i < l; i++) {          item = items[i];          for (fi = 0, fl = filters.length; fi < fl; fi++) {            if (!filters[fi](item, i, l)) {              fi = fl + 1;              break;            }          }          if (fi === fl) {            if (index === selector.length - 1) {              matches.push(item);            } else {              if (item.items) {                collect(item.items(), selector, index + 1);              }            }          } else if (filters.direct) {            return;          }          if (item.items) {            collect(item.items(), selector, index);          }        }      }      if (container.items) {        for (i = 0, l = selectors.length; i < l; i++) {          collect(container.items(), selectors[i], 0);        }        if (l > 1) {          matches = unique(matches);        }      }      if (!Collection) {        Collection = Selector.Collection;      }      return new Collection(matches);    }  });  var Collection$1;  var proto;  var push$1 = Array.prototype.push;  var slice$1 = Array.prototype.slice;  proto = {    length: 0,    init: function (items) {      if (items) {        this.add(items);      }    },    add: function (items) {      var self = this;      if (!global$2.isArray(items)) {        if (items instanceof Collection$1) {          self.add(items.toArray());        } else {          push$1.call(self, items);        }      } else {        push$1.apply(self, items);      }      return self;    },    set: function (items) {      var self = this;      var len = self.length;      var i;      self.length = 0;      self.add(items);      for (i = self.length; i < len; i++) {        delete self[i];      }      return self;    },    filter: function (selector) {      var self = this;      var i, l;      var matches = [];      var item, match;      if (typeof selector === 'string') {        selector = new Selector(selector);        match = function (item) {          return selector.match(item);        };      } else {        match = selector;      }      for (i = 0, l = self.length; i < l; i++) {        item = self[i];        if (match(item)) {          matches.push(item);        }      }      return new Collection$1(matches);    },    slice: function () {      return new Collection$1(slice$1.apply(this, arguments));    },    eq: function (index) {      return index === -1 ? this.slice(index) : this.slice(index, +index + 1);    },    each: function (callback) {      global$2.each(this, callback);      return this;    },    toArray: function () {      return global$2.toArray(this);    },    indexOf: function (ctrl) {      var self = this;      var i = self.length;      while (i--) {        if (self[i] === ctrl) {          break;        }      }      return i;    },    reverse: function () {      return new Collection$1(global$2.toArray(this).reverse());    },    hasClass: function (cls) {      return this[0] ? this[0].classes.contains(cls) : false;    },    prop: function (name, value) {      var self = this;      var item;      if (value !== undefined) {        self.each(function (item) {          if (item[name]) {            item[name](value);          }        });        return self;      }      item = self[0];      if (item && item[name]) {        return item[name]();      }    },    exec: function (name) {      var self = this, args = global$2.toArray(arguments).slice(1);      self.each(function (item) {        if (item[name]) {          item[name].apply(item, args);        }      });      return self;    },    remove: function () {      var i = this.length;      while (i--) {        this[i].remove();      }      return this;    },    addClass: function (cls) {      return this.each(function (item) {        item.classes.add(cls);      });    },    removeClass: function (cls) {      return this.each(function (item) {        item.classes.remove(cls);      });    }  };  global$2.each('fire on off show hide append prepend before after reflow'.split(' '), function (name) {    proto[name] = function () {      var args = global$2.toArray(arguments);      this.each(function (ctrl) {        if (name in ctrl) {          ctrl[name].apply(ctrl, args);        }      });      return this;    };  });  global$2.each('text name disabled active selected checked visible parent value data'.split(' '), function (name) {    proto[name] = function (value) {      return this.prop(name, value);    };  });  Collection$1 = global$10.extend(proto);  Selector.Collection = Collection$1;  var Collection$2 = Collection$1;  var Binding = function (settings) {    this.create = settings.create;  };  Binding.create = function (model, name) {    return new Binding({      create: function (otherModel, otherName) {        var bindings;        var fromSelfToOther = function (e) {          otherModel.set(otherName, e.value);        };        var fromOtherToSelf = function (e) {          model.set(name, e.value);        };        otherModel.on('change:' + otherName, fromOtherToSelf);        model.on('change:' + name, fromSelfToOther);        bindings = otherModel._bindings;        if (!bindings) {          bindings = otherModel._bindings = [];          otherModel.on('destroy', function () {            var i = bindings.length;            while (i--) {              bindings[i]();            }          });        }        bindings.push(function () {          model.off('change:' + name, fromSelfToOther);        });        return model.get(name);      }    });  };  var global$12 = tinymce.util.Tools.resolve('tinymce.util.Observable');  function isNode(node) {    return node.nodeType > 0;  }  function isEqual(a, b) {    var k, checked;    if (a === b) {      return true;    }    if (a === null || b === null) {      return a === b;    }    if (typeof a !== 'object' || typeof b !== 'object') {      return a === b;    }    if (global$2.isArray(b)) {      if (a.length !== b.length) {        return false;      }      k = a.length;      while (k--) {        if (!isEqual(a[k], b[k])) {          return false;        }      }    }    if (isNode(a) || isNode(b)) {      return a === b;    }    checked = {};    for (k in b) {      if (!isEqual(a[k], b[k])) {        return false;      }      checked[k] = true;    }    for (k in a) {      if (!checked[k] && !isEqual(a[k], b[k])) {        return false;      }    }    return true;  }  var ObservableObject = global$10.extend({    Mixins: [global$12],    init: function (data) {      var name, value;      data = data || {};      for (name in data) {        value = data[name];        if (value instanceof Binding) {          data[name] = value.create(this, name);        }      }      this.data = data;    },    set: function (name, value) {      var key, args;      var oldValue = this.data[name];      if (value instanceof Binding) {        value = value.create(this, name);      }      if (typeof name === 'object') {        for (key in name) {          this.set(key, name[key]);        }        return this;      }      if (!isEqual(oldValue, value)) {        this.data[name] = value;        args = {          target: this,          name: name,          value: value,          oldValue: oldValue        };        this.fire('change:' + name, args);        this.fire('change', args);      }      return this;    },    get: function (name) {      return this.data[name];    },    has: function (name) {      return name in this.data;    },    bind: function (name) {      return Binding.create(this, name);    },    destroy: function () {      this.fire('destroy');    }  });  var dirtyCtrls = {};  var animationFrameRequested;  var $_ef12j5u4jh8lz3nl = {    add: function (ctrl) {      var parent = ctrl.parent();      if (parent) {        if (!parent._layout || parent._layout.isNative()) {          return;        }        if (!dirtyCtrls[parent._id]) {          dirtyCtrls[parent._id] = parent;        }        if (!animationFrameRequested) {          animationFrameRequested = true;          global$7.requestAnimationFrame(function () {            var id, ctrl;            animationFrameRequested = false;            for (id in dirtyCtrls) {              ctrl = dirtyCtrls[id];              if (ctrl.state.get('rendered')) {                ctrl.reflow();              }            }            dirtyCtrls = {};          }, document.body);        }      }    },    remove: function (ctrl) {      if (dirtyCtrls[ctrl._id]) {        delete dirtyCtrls[ctrl._id];      }    }  };  var hasMouseWheelEventSupport = 'onmousewheel' in document;  var hasWheelEventSupport = false;  var classPrefix = 'mce-';  var Control;  var idCounter = 0;  var proto$1 = {    Statics: { classPrefix: classPrefix },    isRtl: function () {      return Control.rtl;    },    classPrefix: classPrefix,    init: function (settings) {      var self = this;      var classes, defaultClasses;      function applyClasses(classes) {        var i;        classes = classes.split(' ');        for (i = 0; i < classes.length; i++) {          self.classes.add(classes[i]);        }      }      self.settings = settings = global$2.extend({}, self.Defaults, settings);      self._id = settings.id || 'mceu_' + idCounter++;      self._aria = { role: settings.role };      self._elmCache = {};      self.$ = global$9;      self.state = new ObservableObject({        visible: true,        active: false,        disabled: false,        value: ''      });      self.data = new ObservableObject(settings.data);      self.classes = new ClassList(function () {        if (self.state.get('rendered')) {          self.getEl().className = this.toString();        }      });      self.classes.prefix = self.classPrefix;      classes = settings.classes;      if (classes) {        if (self.Defaults) {          defaultClasses = self.Defaults.classes;          if (defaultClasses && classes !== defaultClasses) {            applyClasses(defaultClasses);          }        }        applyClasses(classes);      }      global$2.each('title text name visible disabled active value'.split(' '), function (name) {        if (name in settings) {          self[name](settings[name]);        }      });      self.on('click', function () {        if (self.disabled()) {          return false;        }      });      self.settings = settings;      self.borderBox = $_focdcktxjh8lz3mn.parseBox(settings.border);      self.paddingBox = $_focdcktxjh8lz3mn.parseBox(settings.padding);      self.marginBox = $_focdcktxjh8lz3mn.parseBox(settings.margin);      if (settings.hidden) {        self.hide();      }    },    Properties: 'parent,name',    getContainerElm: function () {      var uiContainer = $_1jk3jvtcjh8lz3jy.getUiContainer(this);      return uiContainer ? uiContainer : funcs.getContainer();    },    getParentCtrl: function (elm) {      var ctrl;      var lookup = this.getRoot().controlIdLookup;      while (elm && lookup) {        ctrl = lookup[elm.id];        if (ctrl) {          break;        }        elm = elm.parentNode;      }      return ctrl;    },    initLayoutRect: function () {      var self = this;      var settings = self.settings;      var borderBox, layoutRect;      var elm = self.getEl();      var width, height, minWidth, minHeight, autoResize;      var startMinWidth, startMinHeight, initialSize;      borderBox = self.borderBox = self.borderBox || $_focdcktxjh8lz3mn.measureBox(elm, 'border');      self.paddingBox = self.paddingBox || $_focdcktxjh8lz3mn.measureBox(elm, 'padding');      self.marginBox = self.marginBox || $_focdcktxjh8lz3mn.measureBox(elm, 'margin');      initialSize = funcs.getSize(elm);      startMinWidth = settings.minWidth;      startMinHeight = settings.minHeight;      minWidth = startMinWidth || initialSize.width;      minHeight = startMinHeight || initialSize.height;      width = settings.width;      height = settings.height;      autoResize = settings.autoResize;      autoResize = typeof autoResize !== 'undefined' ? autoResize : !width && !height;      width = width || minWidth;      height = height || minHeight;      var deltaW = borderBox.left + borderBox.right;      var deltaH = borderBox.top + borderBox.bottom;      var maxW = settings.maxWidth || 65535;      var maxH = settings.maxHeight || 65535;      self._layoutRect = layoutRect = {        x: settings.x || 0,        y: settings.y || 0,        w: width,        h: height,        deltaW: deltaW,        deltaH: deltaH,        contentW: width - deltaW,        contentH: height - deltaH,        innerW: width - deltaW,        innerH: height - deltaH,        startMinWidth: startMinWidth || 0,        startMinHeight: startMinHeight || 0,        minW: Math.min(minWidth, maxW),        minH: Math.min(minHeight, maxH),        maxW: maxW,        maxH: maxH,        autoResize: autoResize,        scrollW: 0      };      self._lastLayoutRect = {};      return layoutRect;    },    layoutRect: function (newRect) {      var self = this;      var curRect = self._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;      if (!curRect) {        curRect = self.initLayoutRect();      }      if (newRect) {        deltaWidth = curRect.deltaW;        deltaHeight = curRect.deltaH;        if (newRect.x !== undefined) {          curRect.x = newRect.x;        }        if (newRect.y !== undefined) {          curRect.y = newRect.y;        }        if (newRect.minW !== undefined) {          curRect.minW = newRect.minW;        }        if (newRect.minH !== undefined) {          curRect.minH = newRect.minH;        }        size = newRect.w;        if (size !== undefined) {          size = size < curRect.minW ? curRect.minW : size;          size = size > curRect.maxW ? curRect.maxW : size;          curRect.w = size;          curRect.innerW = size - deltaWidth;        }        size = newRect.h;        if (size !== undefined) {          size = size < curRect.minH ? curRect.minH : size;          size = size > curRect.maxH ? curRect.maxH : size;          curRect.h = size;          curRect.innerH = size - deltaHeight;        }        size = newRect.innerW;        if (size !== undefined) {          size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;          size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;          curRect.innerW = size;          curRect.w = size + deltaWidth;        }        size = newRect.innerH;        if (size !== undefined) {          size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;          size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;          curRect.innerH = size;          curRect.h = size + deltaHeight;        }        if (newRect.contentW !== undefined) {          curRect.contentW = newRect.contentW;        }        if (newRect.contentH !== undefined) {          curRect.contentH = newRect.contentH;        }        lastLayoutRect = self._lastLayoutRect;        if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {          repaintControls = Control.repaintControls;          if (repaintControls) {            if (repaintControls.map && !repaintControls.map[self._id]) {              repaintControls.push(self);              repaintControls.map[self._id] = true;            }          }          lastLayoutRect.x = curRect.x;          lastLayoutRect.y = curRect.y;          lastLayoutRect.w = curRect.w;          lastLayoutRect.h = curRect.h;        }        return self;      }      return curRect;    },    repaint: function () {      var self = this;      var style, bodyStyle, bodyElm, rect, borderBox;      var borderW, borderH, lastRepaintRect, round, value;      round = !document.createRange ? Math.round : function (value) {        return value;      };      style = self.getEl().style;      rect = self._layoutRect;      lastRepaintRect = self._lastRepaintRect || {};      borderBox = self.borderBox;      borderW = borderBox.left + borderBox.right;      borderH = borderBox.top + borderBox.bottom;      if (rect.x !== lastRepaintRect.x) {        style.left = round(rect.x) + 'px';        lastRepaintRect.x = rect.x;      }      if (rect.y !== lastRepaintRect.y) {        style.top = round(rect.y) + 'px';        lastRepaintRect.y = rect.y;      }      if (rect.w !== lastRepaintRect.w) {        value = round(rect.w - borderW);        style.width = (value >= 0 ? value : 0) + 'px';        lastRepaintRect.w = rect.w;      }      if (rect.h !== lastRepaintRect.h) {        value = round(rect.h - borderH);        style.height = (value >= 0 ? value : 0) + 'px';        lastRepaintRect.h = rect.h;      }      if (self._hasBody && rect.innerW !== lastRepaintRect.innerW) {        value = round(rect.innerW);        bodyElm = self.getEl('body');        if (bodyElm) {          bodyStyle = bodyElm.style;          bodyStyle.width = (value >= 0 ? value : 0) + 'px';        }        lastRepaintRect.innerW = rect.innerW;      }      if (self._hasBody && rect.innerH !== lastRepaintRect.innerH) {        value = round(rect.innerH);        bodyElm = bodyElm || self.getEl('body');        if (bodyElm) {          bodyStyle = bodyStyle || bodyElm.style;          bodyStyle.height = (value >= 0 ? value : 0) + 'px';        }        lastRepaintRect.innerH = rect.innerH;      }      self._lastRepaintRect = lastRepaintRect;      self.fire('repaint', {}, false);    },    updateLayoutRect: function () {      var self = this;      self.parent()._lastRect = null;      funcs.css(self.getEl(), {        width: '',        height: ''      });      self._layoutRect = self._lastRepaintRect = self._lastLayoutRect = null;      self.initLayoutRect();    },    on: function (name, callback) {      var self = this;      function resolveCallbackName(name) {        var callback, scope;        if (typeof name !== 'string') {          return name;        }        return function (e) {          if (!callback) {            self.parentsAndSelf().each(function (ctrl) {              var callbacks = ctrl.settings.callbacks;              if (callbacks && (callback = callbacks[name])) {                scope = ctrl;                return false;              }            });          }          if (!callback) {            e.action = name;            this.fire('execute', e);            return;          }          return callback.call(scope, e);        };      }      getEventDispatcher(self).on(name, resolveCallbackName(callback));      return self;    },    off: function (name, callback) {      getEventDispatcher(this).off(name, callback);      return this;    },    fire: function (name, args, bubble) {      var self = this;      args = args || {};      if (!args.control) {        args.control = self;      }      args = getEventDispatcher(self).fire(name, args);      if (bubble !== false && self.parent) {        var parent_1 = self.parent();        while (parent_1 && !args.isPropagationStopped()) {          parent_1.fire(name, args, false);          parent_1 = parent_1.parent();        }      }      return args;    },    hasEventListeners: function (name) {      return getEventDispatcher(this).has(name);    },    parents: function (selector) {      var self = this;      var ctrl, parents = new Collection$2();      for (ctrl = self.parent(); ctrl; ctrl = ctrl.parent()) {        parents.add(ctrl);      }      if (selector) {        parents = parents.filter(selector);      }      return parents;    },    parentsAndSelf: function (selector) {      return new Collection$2(this).add(this.parents(selector));    },    next: function () {      var parentControls = this.parent().items();      return parentControls[parentControls.indexOf(this) + 1];    },    prev: function () {      var parentControls = this.parent().items();      return parentControls[parentControls.indexOf(this) - 1];    },    innerHtml: function (html) {      this.$el.html(html);      return this;    },    getEl: function (suffix) {      var id = suffix ? this._id + '-' + suffix : this._id;      if (!this._elmCache[id]) {        this._elmCache[id] = global$9('#' + id)[0];      }      return this._elmCache[id];    },    show: function () {      return this.visible(true);    },    hide: function () {      return this.visible(false);    },    focus: function () {      try {        this.getEl().focus();      } catch (ex) {      }      return this;    },    blur: function () {      this.getEl().blur();      return this;    },    aria: function (name, value) {      var self = this, elm = self.getEl(self.ariaTarget);      if (typeof value === 'undefined') {        return self._aria[name];      }      self._aria[name] = value;      if (self.state.get('rendered')) {        elm.setAttribute(name === 'role' ? name : 'aria-' + name, value);      }      return self;    },    encode: function (text, translate) {      if (translate !== false) {        text = this.translate(text);      }      return (text || '').replace(/[&<>"]/g, function (match) {        return '&#' + match.charCodeAt(0) + ';';      });    },    translate: function (text) {      return Control.translate ? Control.translate(text) : text;    },    before: function (items) {      var self = this, parent = self.parent();      if (parent) {        parent.insert(items, parent.items().indexOf(self), true);      }      return self;    },    after: function (items) {      var self = this, parent = self.parent();      if (parent) {        parent.insert(items, parent.items().indexOf(self));      }      return self;    },    remove: function () {      var self = this;      var elm = self.getEl();      var parent = self.parent();      var newItems, i;      if (self.items) {        var controls = self.items().toArray();        i = controls.length;        while (i--) {          controls[i].remove();        }      }      if (parent && parent.items) {        newItems = [];        parent.items().each(function (item) {          if (item !== self) {            newItems.push(item);          }        });        parent.items().set(newItems);        parent._lastRect = null;      }      if (self._eventsRoot && self._eventsRoot === self) {        global$9(elm).off();      }      var lookup = self.getRoot().controlIdLookup;      if (lookup) {        delete lookup[self._id];      }      if (elm && elm.parentNode) {        elm.parentNode.removeChild(elm);      }      self.state.set('rendered', false);      self.state.destroy();      self.fire('remove');      return self;    },    renderBefore: function (elm) {      global$9(elm).before(this.renderHtml());      this.postRender();      return this;    },    renderTo: function (elm) {      global$9(elm || this.getContainerElm()).append(this.renderHtml());      this.postRender();      return this;    },    preRender: function () {    },    render: function () {    },    renderHtml: function () {      return '<div id="' + this._id + '" class="' + this.classes + '"></div>';    },    postRender: function () {      var self = this;      var settings = self.settings;      var elm, box, parent, name, parentEventsRoot;      self.$el = global$9(self.getEl());      self.state.set('rendered', true);      for (name in settings) {        if (name.indexOf('on') === 0) {          self.on(name.substr(2), settings[name]);        }      }      if (self._eventsRoot) {        for (parent = self.parent(); !parentEventsRoot && parent; parent = parent.parent()) {          parentEventsRoot = parent._eventsRoot;        }        if (parentEventsRoot) {          for (name in parentEventsRoot._nativeEvents) {            self._nativeEvents[name] = true;          }        }      }      bindPendingEvents(self);      if (settings.style) {        elm = self.getEl();        if (elm) {          elm.setAttribute('style', settings.style);          elm.style.cssText = settings.style;        }      }      if (self.settings.border) {        box = self.borderBox;        self.$el.css({          'border-top-width': box.top,          'border-right-width': box.right,          'border-bottom-width': box.bottom,          'border-left-width': box.left        });      }      var root = self.getRoot();      if (!root.controlIdLookup) {        root.controlIdLookup = {};      }      root.controlIdLookup[self._id] = self;      for (var key in self._aria) {        self.aria(key, self._aria[key]);      }      if (self.state.get('visible') === false) {        self.getEl().style.display = 'none';      }      self.bindStates();      self.state.on('change:visible', function (e) {        var state = e.value;        var parentCtrl;        if (self.state.get('rendered')) {          self.getEl().style.display = state === false ? 'none' : '';          self.getEl().getBoundingClientRect();        }        parentCtrl = self.parent();        if (parentCtrl) {          parentCtrl._lastRect = null;        }        self.fire(state ? 'show' : 'hide');        $_ef12j5u4jh8lz3nl.add(self);      });      self.fire('postrender', {}, false);    },    bindStates: function () {    },    scrollIntoView: function (align) {      function getOffset(elm, rootElm) {        var x, y, parent = elm;        x = y = 0;        while (parent && parent !== rootElm && parent.nodeType) {          x += parent.offsetLeft || 0;          y += parent.offsetTop || 0;          parent = parent.offsetParent;        }        return {          x: x,          y: y        };      }      var elm = this.getEl(), parentElm = elm.parentNode;      var x, y, width, height, parentWidth, parentHeight;      var pos = getOffset(elm, parentElm);      x = pos.x;      y = pos.y;      width = elm.offsetWidth;      height = elm.offsetHeight;      parentWidth = parentElm.clientWidth;      parentHeight = parentElm.clientHeight;      if (align === 'end') {        x -= parentWidth - width;        y -= parentHeight - height;      } else if (align === 'center') {        x -= parentWidth / 2 - width / 2;        y -= parentHeight / 2 - height / 2;      }      parentElm.scrollLeft = x;      parentElm.scrollTop = y;      return this;    },    getRoot: function () {      var ctrl = this, rootControl;      var parents = [];      while (ctrl) {        if (ctrl.rootControl) {          rootControl = ctrl.rootControl;          break;        }        parents.push(ctrl);        rootControl = ctrl;        ctrl = ctrl.parent();      }      if (!rootControl) {        rootControl = this;      }      var i = parents.length;      while (i--) {        parents[i].rootControl = rootControl;      }      return rootControl;    },    reflow: function () {      $_ef12j5u4jh8lz3nl.remove(this);      var parent = this.parent();      if (parent && parent._layout && !parent._layout.isNative()) {        parent.reflow();      }      return this;    }  };  global$2.each('text title visible disabled active value'.split(' '), function (name) {    proto$1[name] = function (value) {      if (arguments.length === 0) {        return this.state.get(name);      }      if (typeof value !== 'undefined') {        this.state.set(name, value);      }      return this;    };  });  Control = global$10.extend(proto$1);  function getEventDispatcher(obj) {    if (!obj._eventDispatcher) {      obj._eventDispatcher = new global$11({        scope: obj,        toggleEvent: function (name, state) {          if (state && global$11.isNative(name)) {            if (!obj._nativeEvents) {              obj._nativeEvents = {};            }            obj._nativeEvents[name] = true;            if (obj.state.get('rendered')) {              bindPendingEvents(obj);            }          }        }      });    }    return obj._eventDispatcher;  }  function bindPendingEvents(eventCtrl) {    var i, l, parents, eventRootCtrl, nativeEvents, name;    function delegate(e) {      var control = eventCtrl.getParentCtrl(e.target);      if (control) {        control.fire(e.type, e);      }    }    function mouseLeaveHandler() {      var ctrl = eventRootCtrl._lastHoverCtrl;      if (ctrl) {        ctrl.fire('mouseleave', { target: ctrl.getEl() });        ctrl.parents().each(function (ctrl) {          ctrl.fire('mouseleave', { target: ctrl.getEl() });        });        eventRootCtrl._lastHoverCtrl = null;      }    }    function mouseEnterHandler(e) {      var ctrl = eventCtrl.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;      if (ctrl !== lastCtrl) {        eventRootCtrl._lastHoverCtrl = ctrl;        parents = ctrl.parents().toArray().reverse();        parents.push(ctrl);        if (lastCtrl) {          lastParents = lastCtrl.parents().toArray().reverse();          lastParents.push(lastCtrl);          for (idx = 0; idx < lastParents.length; idx++) {            if (parents[idx] !== lastParents[idx]) {              break;            }          }          for (i = lastParents.length - 1; i >= idx; i--) {            lastCtrl = lastParents[i];            lastCtrl.fire('mouseleave', { target: lastCtrl.getEl() });          }        }        for (i = idx; i < parents.length; i++) {          ctrl = parents[i];          ctrl.fire('mouseenter', { target: ctrl.getEl() });        }      }    }    function fixWheelEvent(e) {      e.preventDefault();      if (e.type === 'mousewheel') {        e.deltaY = -1 / 40 * e.wheelDelta;        if (e.wheelDeltaX) {          e.deltaX = -1 / 40 * e.wheelDeltaX;        }      } else {        e.deltaX = 0;        e.deltaY = e.detail;      }      e = eventCtrl.fire('wheel', e);    }    nativeEvents = eventCtrl._nativeEvents;    if (nativeEvents) {      parents = eventCtrl.parents().toArray();      parents.unshift(eventCtrl);      for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {        eventRootCtrl = parents[i]._eventsRoot;      }      if (!eventRootCtrl) {        eventRootCtrl = parents[parents.length - 1] || eventCtrl;      }      eventCtrl._eventsRoot = eventRootCtrl;      for (l = i, i = 0; i < l; i++) {        parents[i]._eventsRoot = eventRootCtrl;      }      var eventRootDelegates = eventRootCtrl._delegates;      if (!eventRootDelegates) {        eventRootDelegates = eventRootCtrl._delegates = {};      }      for (name in nativeEvents) {        if (!nativeEvents) {          return false;        }        if (name === 'wheel' && !hasWheelEventSupport) {          if (hasMouseWheelEventSupport) {            global$9(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);          } else {            global$9(eventCtrl.getEl()).on('DOMMouseScroll', fixWheelEvent);          }          continue;        }        if (name === 'mouseenter' || name === 'mouseleave') {          if (!eventRootCtrl._hasMouseEnter) {            global$9(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);            eventRootCtrl._hasMouseEnter = 1;          }        } else if (!eventRootDelegates[name]) {          global$9(eventRootCtrl.getEl()).on(name, delegate);          eventRootDelegates[name] = true;        }        nativeEvents[name] = false;      }    }  }  var Control$1 = Control;  var hasTabstopData = function (elm) {    return elm.getAttribute('data-mce-tabstop') ? true : false;  };  function KeyboardNavigation (settings) {    var root = settings.root;    var focusedElement, focusedControl;    function isElement(node) {      return node && node.nodeType === 1;    }    try {      focusedElement = document.activeElement;    } catch (ex) {      focusedElement = document.body;    }    focusedControl = root.getParentCtrl(focusedElement);    function getRole(elm) {      elm = elm || focusedElement;      if (isElement(elm)) {        return elm.getAttribute('role');      }      return null;    }    function getParentRole(elm) {      var role, parent = elm || focusedElement;      while (parent = parent.parentNode) {        if (role = getRole(parent)) {          return role;        }      }    }    function getAriaProp(name) {      var elm = focusedElement;      if (isElement(elm)) {        return elm.getAttribute('aria-' + name);      }    }    function isTextInputElement(elm) {      var tagName = elm.tagName.toUpperCase();      return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT';    }    function canFocus(elm) {      if (isTextInputElement(elm) && !elm.hidden) {        return true;      }      if (hasTabstopData(elm)) {        return true;      }      if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(getRole(elm))) {        return true;      }      return false;    }    function getFocusElements(elm) {      var elements = [];      function collect(elm) {        if (elm.nodeType !== 1 || elm.style.display === 'none' || elm.disabled) {          return;        }        if (canFocus(elm)) {          elements.push(elm);        }        for (var i = 0; i < elm.childNodes.length; i++) {          collect(elm.childNodes[i]);        }      }      collect(elm || root.getEl());      return elements;    }    function getNavigationRoot(targetControl) {      var navigationRoot, controls;      targetControl = targetControl || focusedControl;      controls = targetControl.parents().toArray();      controls.unshift(targetControl);      for (var i = 0; i < controls.length; i++) {        navigationRoot = controls[i];        if (navigationRoot.settings.ariaRoot) {          break;        }      }      return navigationRoot;    }    function focusFirst(targetControl) {      var navigationRoot = getNavigationRoot(targetControl);      var focusElements = getFocusElements(navigationRoot.getEl());      if (navigationRoot.settings.ariaRemember && 'lastAriaIndex' in navigationRoot) {        moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);      } else {        moveFocusToIndex(0, focusElements);      }    }    function moveFocusToIndex(idx, elements) {      if (idx < 0) {        idx = elements.length - 1;      } else if (idx >= elements.length) {        idx = 0;      }      if (elements[idx]) {        elements[idx].focus();      }      return idx;    }    function moveFocus(dir, elements) {      var idx = -1;      var navigationRoot = getNavigationRoot();      elements = elements || getFocusElements(navigationRoot.getEl());      for (var i = 0; i < elements.length; i++) {        if (elements[i] === focusedElement) {          idx = i;        }      }      idx += dir;      navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);    }    function left() {      var parentRole = getParentRole();      if (parentRole === 'tablist') {        moveFocus(-1, getFocusElements(focusedElement.parentNode));      } else if (focusedControl.parent().submenu) {        cancel();      } else {        moveFocus(-1);      }    }    function right() {      var role = getRole(), parentRole = getParentRole();      if (parentRole === 'tablist') {        moveFocus(1, getFocusElements(focusedElement.parentNode));      } else if (role === 'menuitem' && parentRole === 'menu' && getAriaProp('haspopup')) {        enter();      } else {        moveFocus(1);      }    }    function up() {      moveFocus(-1);    }    function down() {      var role = getRole(), parentRole = getParentRole();      if (role === 'menuitem' && parentRole === 'menubar') {        enter();      } else if (role === 'button' && getAriaProp('haspopup')) {        enter({ key: 'down' });      } else {        moveFocus(1);      }    }    function tab(e) {      var parentRole = getParentRole();      if (parentRole === 'tablist') {        var elm = getFocusElements(focusedControl.getEl('body'))[0];        if (elm) {          elm.focus();        }      } else {        moveFocus(e.shiftKey ? -1 : 1);      }    }    function cancel() {      focusedControl.fire('cancel');    }    function enter(aria) {      aria = aria || {};      focusedControl.fire('click', {        target: focusedElement,        aria: aria      });    }    root.on('keydown', function (e) {      function handleNonTabOrEscEvent(e, handler) {        if (isTextInputElement(focusedElement) || hasTabstopData(focusedElement)) {          return;        }        if (getRole(focusedElement) === 'slider') {          return;        }        if (handler(e) !== false) {          e.preventDefault();        }      }      if (e.isDefaultPrevented()) {        return;      }      switch (e.keyCode) {      case 37:        handleNonTabOrEscEvent(e, left);        break;      case 39:        handleNonTabOrEscEvent(e, right);        break;      case 38:        handleNonTabOrEscEvent(e, up);        break;      case 40:        handleNonTabOrEscEvent(e, down);        break;      case 27:        cancel();        break;      case 14:      case 13:      case 32:        handleNonTabOrEscEvent(e, enter);        break;      case 9:        tab(e);        e.preventDefault();        break;      }    });    root.on('focusin', function (e) {      focusedElement = e.target;      focusedControl = e.control;    });    return { focusFirst: focusFirst };  }  var selectorCache = {};  var Container = Control$1.extend({    init: function (settings) {      var self = this;      self._super(settings);      settings = self.settings;      if (settings.fixed) {        self.state.set('fixed', true);      }      self._items = new Collection$2();      if (self.isRtl()) {        self.classes.add('rtl');      }      self.bodyClasses = new ClassList(function () {        if (self.state.get('rendered')) {          self.getEl('body').className = this.toString();        }      });      self.bodyClasses.prefix = self.classPrefix;      self.classes.add('container');      self.bodyClasses.add('container-body');      if (settings.containerCls) {        self.classes.add(settings.containerCls);      }      self._layout = global$4.create((settings.layout || '') + 'layout');      if (self.settings.items) {        self.add(self.settings.items);      } else {        self.add(self.render());      }      self._hasBody = true;    },    items: function () {      return this._items;    },    find: function (selector) {      selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);      return selector.find(this);    },    add: function (items) {      var self = this;      self.items().add(self.create(items)).parent(self);      return self;    },    focus: function (keyboard) {      var self = this;      var focusCtrl, keyboardNav, items;      if (keyboard) {        keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;        if (keyboardNav) {          keyboardNav.focusFirst(self);          return;        }      }      items = self.find('*');      if (self.statusbar) {        items.add(self.statusbar.items());      }      items.each(function (ctrl) {        if (ctrl.settings.autofocus) {          focusCtrl = null;          return false;        }        if (ctrl.canFocus) {          focusCtrl = focusCtrl || ctrl;        }      });      if (focusCtrl) {        focusCtrl.focus();      }      return self;    },    replace: function (oldItem, newItem) {      var ctrlElm;      var items = this.items();      var i = items.length;      while (i--) {        if (items[i] === oldItem) {          items[i] = newItem;          break;        }      }      if (i >= 0) {        ctrlElm = newItem.getEl();        if (ctrlElm) {          ctrlElm.parentNode.removeChild(ctrlElm);        }        ctrlElm = oldItem.getEl();        if (ctrlElm) {          ctrlElm.parentNode.removeChild(ctrlElm);        }      }      newItem.parent(this);    },    create: function (items) {      var self = this;      var settings;      var ctrlItems = [];      if (!global$2.isArray(items)) {        items = [items];      }      global$2.each(items, function (item) {        if (item) {          if (!(item instanceof Control$1)) {            if (typeof item === 'string') {              item = { type: item };            }            settings = global$2.extend({}, self.settings.defaults, item);            item.type = settings.type = settings.type || item.type || self.settings.defaultType || (settings.defaults ? settings.defaults.type : null);            item = global$4.create(settings);          }          ctrlItems.push(item);        }      });      return ctrlItems;    },    renderNew: function () {      var self = this;      self.items().each(function (ctrl, index) {        var containerElm;        ctrl.parent(self);        if (!ctrl.state.get('rendered')) {          containerElm = self.getEl('body');          if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {            global$9(containerElm.childNodes[index]).before(ctrl.renderHtml());          } else {            global$9(containerElm).append(ctrl.renderHtml());          }          ctrl.postRender();          $_ef12j5u4jh8lz3nl.add(ctrl);        }      });      self._layout.applyClasses(self.items().filter(':visible'));      self._lastRect = null;      return self;    },    append: function (items) {      return this.add(items).renderNew();    },    prepend: function (items) {      var self = this;      self.items().set(self.create(items).concat(self.items().toArray()));      return self.renderNew();    },    insert: function (items, index, before) {      var self = this;      var curItems, beforeItems, afterItems;      items = self.create(items);      curItems = self.items();      if (!before && index < curItems.length - 1) {        index += 1;      }      if (index >= 0 && index < curItems.length) {        beforeItems = curItems.slice(0, index).toArray();        afterItems = curItems.slice(index).toArray();        curItems.set(beforeItems.concat(items, afterItems));      }      return self.renderNew();    },    fromJSON: function (data) {      var self = this;      for (var name_1 in data) {        self.find('#' + name_1).value(data[name_1]);      }      return self;    },    toJSON: function () {      var self = this, data = {};      self.find('*').each(function (ctrl) {        var name = ctrl.name(), value = ctrl.value();        if (name && typeof value !== 'undefined') {          data[name] = value;        }      });      return data;    },    renderHtml: function () {      var self = this, layout = self._layout, role = this.settings.role;      self.preRender();      layout.preRender(self);      return '<div id="' + self._id + '" class="' + self.classes + '"' + (role ? ' role="' + this.settings.role + '"' : '') + '>' + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';    },    postRender: function () {      var self = this;      var box;      self.items().exec('postRender');      self._super();      self._layout.postRender(self);      self.state.set('rendered', true);      if (self.settings.style) {        self.$el.css(self.settings.style);      }      if (self.settings.border) {        box = self.borderBox;        self.$el.css({          'border-top-width': box.top,          'border-right-width': box.right,          'border-bottom-width': box.bottom,          'border-left-width': box.left        });      }      if (!self.parent()) {        self.keyboardNav = KeyboardNavigation({ root: self });      }      return self;    },    initLayoutRect: function () {      var self = this, layoutRect = self._super();      self._layout.recalc(self);      return layoutRect;    },    recalc: function () {      var self = this;      var rect = self._layoutRect;      var lastRect = self._lastRect;      if (!lastRect || lastRect.w !== rect.w || lastRect.h !== rect.h) {        self._layout.recalc(self);        rect = self.layoutRect();        self._lastRect = {          x: rect.x,          y: rect.y,          w: rect.w,          h: rect.h        };        return true;      }    },    reflow: function () {      var i;      $_ef12j5u4jh8lz3nl.remove(this);      if (this.visible()) {        Control$1.repaintControls = [];        Control$1.repaintControls.map = {};        this.recalc();        i = Control$1.repaintControls.length;        while (i--) {          Control$1.repaintControls[i].repaint();        }        if (this.settings.layout !== 'flow' && this.settings.layout !== 'stack') {          this.repaint();        }        Control$1.repaintControls = [];      }      return this;    }  });  function getDocumentSize(doc) {    var documentElement, body, scrollWidth, clientWidth;    var offsetWidth, scrollHeight, clientHeight, offsetHeight;    var max = Math.max;    documentElement = doc.documentElement;    body = doc.body;    scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);    clientWidth = max(documentElement.clientWidth, body.clientWidth);    offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);    scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);    clientHeight = max(documentElement.clientHeight, body.clientHeight);    offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);    return {      width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,      height: scrollHeight < offsetHeight ? clientHeight : scrollHeight    };  }  function updateWithTouchData(e) {    var keys, i;    if (e.changedTouches) {      keys = 'screenX screenY pageX pageY clientX clientY'.split(' ');      for (i = 0; i < keys.length; i++) {        e[keys[i]] = e.changedTouches[0][keys[i]];      }    }  }  function DragHelper (id, settings) {    var $eventOverlay;    var doc = settings.document || document;    var downButton;    var start, stop, drag, startX, startY;    settings = settings || {};    var handleElement = doc.getElementById(settings.handle || id);    start = function (e) {      var docSize = getDocumentSize(doc);      var handleElm, cursor;      updateWithTouchData(e);      e.preventDefault();      downButton = e.button;      handleElm = handleElement;      startX = e.screenX;      startY = e.screenY;      if (window.getComputedStyle) {        cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');      } else {        cursor = handleElm.runtimeStyle.cursor;      }      $eventOverlay = global$9('<div></div>').css({        position: 'absolute',        top: 0,        left: 0,        width: docSize.width,        height: docSize.height,        zIndex: 2147483647,        opacity: 0.0001,        cursor: cursor      }).appendTo(doc.body);      global$9(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop);      settings.start(e);    };    drag = function (e) {      updateWithTouchData(e);      if (e.button !== downButton) {        return stop(e);      }      e.deltaX = e.screenX - startX;      e.deltaY = e.screenY - startY;      e.preventDefault();      settings.drag(e);    };    stop = function (e) {      updateWithTouchData(e);      global$9(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop);      $eventOverlay.remove();      if (settings.stop) {        settings.stop(e);      }    };    this.destroy = function () {      global$9(handleElement).off();    };    global$9(handleElement).on('mousedown touchstart', start);  }  var $_4acv48u6jh8lz3ns = {    init: function () {      var self = this;      self.on('repaint', self.renderScroll);    },    renderScroll: function () {      var self = this, margin = 2;      function repaintScroll() {        var hasScrollH, hasScrollV, bodyElm;        function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {          var containerElm, scrollBarElm, scrollThumbElm;          var containerSize, scrollSize, ratio, rect;          var posNameLower, sizeNameLower;          scrollBarElm = self.getEl('scroll' + axisName);          if (scrollBarElm) {            posNameLower = posName.toLowerCase();            sizeNameLower = sizeName.toLowerCase();            global$9(self.getEl('absend')).css(posNameLower, self.layoutRect()[contentSizeName] - 1);            if (!hasScroll) {              global$9(scrollBarElm).css('display', 'none');              return;            }            global$9(scrollBarElm).css('display', 'block');            containerElm = self.getEl('body');            scrollThumbElm = self.getEl('scroll' + axisName + 't');            containerSize = containerElm['client' + sizeName] - margin * 2;            containerSize -= hasScrollH && hasScrollV ? scrollBarElm['client' + ax] : 0;            scrollSize = containerElm['scroll' + sizeName];            ratio = containerSize / scrollSize;            rect = {};            rect[posNameLower] = containerElm['offset' + posName] + margin;            rect[sizeNameLower] = containerSize;            global$9(scrollBarElm).css(rect);            rect = {};            rect[posNameLower] = containerElm['scroll' + posName] * ratio;            rect[sizeNameLower] = containerSize * ratio;            global$9(scrollThumbElm).css(rect);          }        }        bodyElm = self.getEl('body');        hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;        hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;        repaintAxis('h', 'Left', 'Width', 'contentW', hasScrollH, 'Height');        repaintAxis('v', 'Top', 'Height', 'contentH', hasScrollV, 'Width');      }      function addScroll() {        function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {          var scrollStart;          var axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;          global$9(self.getEl()).append('<div id="' + axisId + '" class="' + prefix + 'scrollbar ' + prefix + 'scrollbar-' + axisName + '">' + '<div id="' + axisId + 't" class="' + prefix + 'scrollbar-thumb"></div>' + '</div>');          self.draghelper = new DragHelper(axisId + 't', {            start: function () {              scrollStart = self.getEl('body')['scroll' + posName];              global$9('#' + axisId).addClass(prefix + 'active');            },            drag: function (e) {              var ratio, hasScrollH, hasScrollV, containerSize;              var layoutRect = self.layoutRect();              hasScrollH = layoutRect.contentW > layoutRect.innerW;              hasScrollV = layoutRect.contentH > layoutRect.innerH;              containerSize = self.getEl('body')['client' + sizeName] - margin * 2;              containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)['client' + ax] : 0;              ratio = containerSize / self.getEl('body')['scroll' + sizeName];              self.getEl('body')['scroll' + posName] = scrollStart + e['delta' + deltaPosName] / ratio;            },            stop: function () {              global$9('#' + axisId).removeClass(prefix + 'active');            }          });        }        self.classes.add('scroll');        addScrollAxis('v', 'Top', 'Height', 'Y', 'Width');        addScrollAxis('h', 'Left', 'Width', 'X', 'Height');      }      if (self.settings.autoScroll) {        if (!self._hasScroll) {          self._hasScroll = true;          addScroll();          self.on('wheel', function (e) {            var bodyEl = self.getEl('body');            bodyEl.scrollLeft += (e.deltaX || 0) * 10;            bodyEl.scrollTop += e.deltaY * 10;            repaintScroll();          });          global$9(self.getEl('body')).on('scroll', repaintScroll);        }        repaintScroll();      }    }  };  var Panel = Container.extend({    Defaults: {      layout: 'fit',      containerCls: 'panel'    },    Mixins: [$_4acv48u6jh8lz3ns],    renderHtml: function () {      var self = this;      var layout = self._layout;      var innerHtml = self.settings.html;      self.preRender();      layout.preRender(self);      if (typeof innerHtml === 'undefined') {        innerHtml = '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + layout.renderHtml(self) + '</div>';      } else {        if (typeof innerHtml === 'function') {          innerHtml = innerHtml.call(self);        }        self._hasBody = false;      }      return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1" role="group">' + (self._preBodyHtml || '') + innerHtml + '</div>';    }  });  var $_8a2gtru8jh8lz3ny = {    resizeToContent: function () {      this._layoutRect.autoResize = true;      this._lastRect = null;      this.reflow();    },    resizeTo: function (w, h) {      if (w <= 1 || h <= 1) {        var rect = funcs.getWindowSize();        w = w <= 1 ? w * rect.w : w;        h = h <= 1 ? h * rect.h : h;      }      this._layoutRect.autoResize = false;      return this.layoutRect({        minW: w,        minH: h,        w: w,        h: h      }).reflow();    },    resizeBy: function (dw, dh) {      var self = this, rect = self.layoutRect();      return self.resizeTo(rect.w + dw, rect.h + dh);    }  };  var documentClickHandler;  var documentScrollHandler;  var windowResizeHandler;  var visiblePanels = [];  var zOrder = [];  var hasModal;  function isChildOf(ctrl, parent) {    while (ctrl) {      if (ctrl === parent) {        return true;      }      ctrl = ctrl.parent();    }  }  function skipOrHidePanels(e) {    var i = visiblePanels.length;    while (i--) {      var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);      if (panel.settings.autohide) {        if (clickCtrl) {          if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {            continue;          }        }        e = panel.fire('autohide', { target: e.target });        if (!e.isDefaultPrevented()) {          panel.hide();        }      }    }  }  function bindDocumentClickHandler() {    if (!documentClickHandler) {      documentClickHandler = function (e) {        if (e.button === 2) {          return;        }        skipOrHidePanels(e);      };      global$9(document).on('click touchstart', documentClickHandler);    }  }  function bindDocumentScrollHandler() {    if (!documentScrollHandler) {      documentScrollHandler = function () {        var i;        i = visiblePanels.length;        while (i--) {          repositionPanel(visiblePanels[i]);        }      };      global$9(window).on('scroll', documentScrollHandler);    }  }  function bindWindowResizeHandler() {    if (!windowResizeHandler) {      var docElm_1 = document.documentElement;      var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;      windowResizeHandler = function () {        if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {          clientWidth_1 = docElm_1.clientWidth;          clientHeight_1 = docElm_1.clientHeight;          FloatPanel.hideAll();        }      };      global$9(window).on('resize', windowResizeHandler);    }  }  function repositionPanel(panel) {    var scrollY = funcs.getViewPort().y;    function toggleFixedChildPanels(fixed, deltaY) {      var parent;      for (var i = 0; i < visiblePanels.length; i++) {        if (visiblePanels[i] !== panel) {          parent = visiblePanels[i].parent();          while (parent && (parent = parent.parent())) {            if (parent === panel) {              visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();            }          }        }      }    }    if (panel.settings.autofix) {      if (!panel.state.get('fixed')) {        panel._autoFixY = panel.layoutRect().y;        if (panel._autoFixY < scrollY) {          panel.fixed(true).layoutRect({ y: 0 }).repaint();          toggleFixedChildPanels(true, scrollY - panel._autoFixY);        }      } else {        if (panel._autoFixY > scrollY) {          panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();          toggleFixedChildPanels(false, panel._autoFixY - scrollY);        }      }    }  }  function addRemove(add, ctrl) {    var i, zIndex = FloatPanel.zIndex || 65535, topModal;    if (add) {      zOrder.push(ctrl);    } else {      i = zOrder.length;      while (i--) {        if (zOrder[i] === ctrl) {          zOrder.splice(i, 1);        }      }    }    if (zOrder.length) {      for (i = 0; i < zOrder.length; i++) {        if (zOrder[i].modal) {          zIndex++;          topModal = zOrder[i];        }        zOrder[i].getEl().style.zIndex = zIndex;        zOrder[i].zIndex = zIndex;        zIndex++;      }    }    var modalBlockEl = global$9('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];    if (topModal) {      global$9(modalBlockEl).css('z-index', topModal.zIndex - 1);    } else if (modalBlockEl) {      modalBlockEl.parentNode.removeChild(modalBlockEl);      hasModal = false;    }    FloatPanel.currentZIndex = zIndex;  }  var FloatPanel = Panel.extend({    Mixins: [      $_d97gfctrjh8lz3lm,      $_8a2gtru8jh8lz3ny    ],    init: function (settings) {      var self = this;      self._super(settings);      self._eventsRoot = self;      self.classes.add('floatpanel');      if (settings.autohide) {        bindDocumentClickHandler();        bindWindowResizeHandler();        visiblePanels.push(self);      }      if (settings.autofix) {        bindDocumentScrollHandler();        self.on('move', function () {          repositionPanel(this);        });      }      self.on('postrender show', function (e) {        if (e.control === self) {          var $modalBlockEl_1;          var prefix_1 = self.classPrefix;          if (self.modal && !hasModal) {            $modalBlockEl_1 = global$9('#' + prefix_1 + 'modal-block', self.getContainerElm());            if (!$modalBlockEl_1[0]) {              $modalBlockEl_1 = global$9('<div id="' + prefix_1 + 'modal-block" class="' + prefix_1 + 'reset ' + prefix_1 + 'fade"></div>').appendTo(self.getContainerElm());            }            global$7.setTimeout(function () {              $modalBlockEl_1.addClass(prefix_1 + 'in');              global$9(self.getEl()).addClass(prefix_1 + 'in');            });            hasModal = true;          }          addRemove(true, self);        }      });      self.on('show', function () {        self.parents().each(function (ctrl) {          if (ctrl.state.get('fixed')) {            self.fixed(true);            return false;          }        });      });      if (settings.popover) {        self._preBodyHtml = '<div class="' + self.classPrefix + 'arrow"></div>';        self.classes.add('popover').add('bottom').add(self.isRtl() ? 'end' : 'start');      }      self.aria('label', settings.ariaLabel);      self.aria('labelledby', self._id);      self.aria('describedby', self.describedBy || self._id + '-none');    },    fixed: function (state) {      var self = this;      if (self.state.get('fixed') !== state) {        if (self.state.get('rendered')) {          var viewport = funcs.getViewPort();          if (state) {            self.layoutRect().y -= viewport.y;          } else {            self.layoutRect().y += viewport.y;          }        }        self.classes.toggle('fixed', state);        self.state.set('fixed', state);      }      return self;    },    show: function () {      var self = this;      var i;      var state = self._super();      i = visiblePanels.length;      while (i--) {        if (visiblePanels[i] === self) {          break;        }      }      if (i === -1) {        visiblePanels.push(self);      }      return state;    },    hide: function () {      removeVisiblePanel(this);      addRemove(false, this);      return this._super();    },    hideAll: function () {      FloatPanel.hideAll();    },    close: function () {      var self = this;      if (!self.fire('close').isDefaultPrevented()) {        self.remove();        addRemove(false, self);      }      return self;    },    remove: function () {      removeVisiblePanel(this);      this._super();    },    postRender: function () {      var self = this;      if (self.settings.bodyRole) {        this.getEl('body').setAttribute('role', self.settings.bodyRole);      }      return self._super();    }  });  FloatPanel.hideAll = function () {    var i = visiblePanels.length;    while (i--) {      var panel = visiblePanels[i];      if (panel && panel.settings.autohide) {        panel.hide();        visiblePanels.splice(i, 1);      }    }  };  function removeVisiblePanel(panel) {    var i;    i = visiblePanels.length;    while (i--) {      if (visiblePanels[i] === panel) {        visiblePanels.splice(i, 1);      }    }    i = zOrder.length;    while (i--) {      if (zOrder[i] === panel) {        zOrder.splice(i, 1);      }    }  }  var isFixed$1 = function (inlineToolbarContainer, editor) {    return !!(inlineToolbarContainer && !editor.settings.ui_container);  };  var render$1 = function (editor, theme, args) {    var panel, inlineToolbarContainer;    var DOM = global$3.DOM;    var fixedToolbarContainer = getFixedToolbarContainer(editor);    if (fixedToolbarContainer) {      inlineToolbarContainer = DOM.select(fixedToolbarContainer)[0];    }    var reposition = function () {      if (panel && panel.moveRel && panel.visible() && !panel._fixed) {        var scrollContainer = editor.selection.getScrollContainer(), body = editor.getBody();        var deltaX = 0, deltaY = 0;        if (scrollContainer) {          var bodyPos = DOM.getPos(body), scrollContainerPos = DOM.getPos(scrollContainer);          deltaX = Math.max(0, scrollContainerPos.x - bodyPos.x);          deltaY = Math.max(0, scrollContainerPos.y - bodyPos.y);        }        panel.fixed(false).moveRel(body, editor.rtl ? [          'tr-br',          'br-tr'        ] : [          'tl-bl',          'bl-tl',          'tr-br'        ]).moveBy(deltaX, deltaY);      }    };    var show = function () {      if (panel) {        panel.show();        reposition();        DOM.addClass(editor.getBody(), 'mce-edit-focus');      }    };    var hide = function () {      if (panel) {        panel.hide();        FloatPanel.hideAll();        DOM.removeClass(editor.getBody(), 'mce-edit-focus');      }    };    var render = function () {      if (panel) {        if (!panel.visible()) {          show();        }        return;      }      panel = theme.panel = global$4.create({        type: inlineToolbarContainer ? 'panel' : 'floatpanel',        role: 'application',        classes: 'tinymce tinymce-inline',        layout: 'flex',        direction: 'column',        align: 'stretch',        autohide: false,        autofix: isFixed$1(inlineToolbarContainer, editor),        fixed: isFixed$1(inlineToolbarContainer, editor),        border: 1,        items: [          hasMenubar(editor) === false ? null : {            type: 'menubar',            border: '0 0 1 0',            items: $_8i78rftgjh8lz3ka.createMenuButtons(editor)          },          $_fudqhrtfjh8lz3k7.createToolbars(editor, getToolbarSize(editor))        ]      });      $_1jk3jvtcjh8lz3jy.setUiContainer(editor, panel);      $_aycuj2t7jh8lz3jp.fireBeforeRenderUI(editor);      if (inlineToolbarContainer) {        panel.renderTo(inlineToolbarContainer).reflow();      } else {        panel.renderTo().reflow();      }      $_47hpztt8jh8lz3jq.addKeys(editor, panel);      show();      $_5kodmdt9jh8lz3js.addContextualToolbars(editor);      editor.on('nodeChange', reposition);      editor.on('ResizeWindow', reposition);      editor.on('activate', show);      editor.on('deactivate', hide);      editor.nodeChanged();    };    editor.settings.content_editable = true;    editor.on('focus', function () {      if (isSkinDisabled(editor) === false && args.skinUiCss) {        DOM.styleSheetLoader.load(args.skinUiCss, render, render);      } else {        render();      }    });    editor.on('blur hide', hide);    editor.on('remove', function () {      if (panel) {        panel.remove();        panel = null;      }    });    if (isSkinDisabled(editor) === false && args.skinUiCss) {      DOM.styleSheetLoader.load(args.skinUiCss, $_231e94tmjh8lz3ku.fireSkinLoaded(editor));    } else {      $_231e94tmjh8lz3ku.fireSkinLoaded(editor)();    }    return {};  };  var $_7wdylstnjh8lz3kv = { render: render$1 };  function Throbber (elm, inline) {    var self = this;    var state;    var classPrefix = Control$1.classPrefix;    var timer;    self.show = function (time, callback) {      function render() {        if (state) {          global$9(elm).append('<div class="' + classPrefix + 'throbber' + (inline ? ' ' + classPrefix + 'throbber-inline' : '') + '"></div>');          if (callback) {            callback();          }        }      }      self.hide();      state = true;      if (time) {        timer = global$7.setTimeout(render, time);      } else {        render();      }      return self;    };    self.hide = function () {      var child = elm.lastChild;      global$7.clearTimeout(timer);      if (child && child.className.indexOf('throbber') !== -1) {        child.parentNode.removeChild(child);      }      state = false;      return self;    };  }  var setup = function (editor, theme) {    var throbber;    editor.on('ProgressState', function (e) {      throbber = throbber || new Throbber(theme.panel.getEl('body'));      if (e.state) {        throbber.show(e.time);      } else {        throbber.hide();      }    });  };  var $_e9w0qfu9jh8lz3nz = { setup: setup };  var renderUI = function (editor, theme, args) {    var skinUrl = getSkinUrl(editor);    if (skinUrl) {      args.skinUiCss = skinUrl + '/skin.min.css';      editor.contentCSS.push(skinUrl + '/content' + (editor.inline ? '.inline' : '') + '.min.css');    }    $_e9w0qfu9jh8lz3nz.setup(editor, theme);    return isInline(editor) ? $_7wdylstnjh8lz3kv.render(editor, theme, args) : $_4cj0a3t3jh8lz3jk.render(editor, theme, args);  };  var $_5ent4szjh8lz3ja = { renderUI: renderUI };  var Tooltip = Control$1.extend({    Mixins: [$_d97gfctrjh8lz3lm],    Defaults: { classes: 'widget tooltip tooltip-n' },    renderHtml: function () {      var self = this, prefix = self.classPrefix;      return '<div id="' + self._id + '" class="' + self.classes + '" role="presentation">' + '<div class="' + prefix + 'tooltip-arrow"></div>' + '<div class="' + prefix + 'tooltip-inner">' + self.encode(self.state.get('text')) + '</div>' + '</div>';    },    bindStates: function () {      var self = this;      self.state.on('change:text', function (e) {        self.getEl().lastChild.innerHTML = self.encode(e.value);      });      return self._super();    },    repaint: function () {      var self = this;      var style, rect;      style = self.getEl().style;      rect = self._layoutRect;      style.left = rect.x + 'px';      style.top = rect.y + 'px';      style.zIndex = 65535 + 65535;    }  });  var Widget = Control$1.extend({    init: function (settings) {      var self = this;      self._super(settings);      settings = self.settings;      self.canFocus = true;      if (settings.tooltip && Widget.tooltips !== false) {        self.on('mouseenter', function (e) {          var tooltip = self.tooltip().moveTo(-65535);          if (e.control === self) {            var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), [              'bc-tc',              'bc-tl',              'bc-tr'            ]);            tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');            tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');            tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');            tooltip.moveRel(self.getEl(), rel);          } else {            tooltip.hide();          }        });        self.on('mouseleave mousedown click', function () {          self.tooltip().remove();          self._tooltip = null;        });      }      self.aria('label', settings.ariaLabel || settings.tooltip);    },    tooltip: function () {      if (!this._tooltip) {        this._tooltip = new Tooltip({ type: 'tooltip' });        $_1jk3jvtcjh8lz3jy.inheritUiContainer(this, this._tooltip);        this._tooltip.renderTo();      }      return this._tooltip;    },    postRender: function () {      var self = this, settings = self.settings;      self._super();      if (!self.parent() && (settings.width || settings.height)) {        self.initLayoutRect();        self.repaint();      }      if (settings.autofocus) {        self.focus();      }    },    bindStates: function () {      var self = this;      function disable(state) {        self.aria('disabled', state);        self.classes.toggle('disabled', state);      }      function active(state) {        self.aria('pressed', state);        self.classes.toggle('active', state);      }      self.state.on('change:disabled', function (e) {        disable(e.value);      });      self.state.on('change:active', function (e) {        active(e.value);      });      if (self.state.get('disabled')) {        disable(true);      }      if (self.state.get('active')) {        active(true);      }      return self._super();    },    remove: function () {      this._super();      if (this._tooltip) {        this._tooltip.remove();        this._tooltip = null;      }    }  });  var Progress = Widget.extend({    Defaults: { value: 0 },    init: function (settings) {      var self = this;      self._super(settings);      self.classes.add('progress');      if (!self.settings.filter) {        self.settings.filter = function (value) {          return Math.round(value);        };      }    },    renderHtml: function () {      var self = this, id = self._id, prefix = this.classPrefix;      return '<div id="' + id + '" class="' + self.classes + '">' + '<div class="' + prefix + 'bar-container">' + '<div class="' + prefix + 'bar"></div>' + '</div>' + '<div class="' + prefix + 'text">0%</div>' + '</div>';    },    postRender: function () {      var self = this;      self._super();      self.value(self.settings.value);      return self;    },    bindStates: function () {      var self = this;      function setValue(value) {        value = self.settings.filter(value);        self.getEl().lastChild.innerHTML = value + '%';        self.getEl().firstChild.firstChild.style.width = value + '%';      }      self.state.on('change:value', function (e) {        setValue(e.value);      });      setValue(self.state.get('value'));      return self._super();    }  });  var updateLiveRegion = function (ctx, text) {    ctx.getEl().lastChild.textContent = text + (ctx.progressBar ? ' ' + ctx.progressBar.value() + '%' : '');  };  var Notification = Control$1.extend({    Mixins: [$_d97gfctrjh8lz3lm],    Defaults: { classes: 'widget notification' },    init: function (settings) {      var self = this;      self._super(settings);      self.maxWidth = settings.maxWidth;      if (settings.text) {        self.text(settings.text);      }      if (settings.icon) {        self.icon = settings.icon;      }      if (settings.color) {        self.color = settings.color;      }      if (settings.type) {        self.classes.add('notification-' + settings.type);      }      if (settings.timeout && (settings.timeout < 0 || settings.timeout > 0) && !settings.closeButton) {        self.closeButton = false;      } else {        self.classes.add('has-close');        self.closeButton = true;      }      if (settings.progressBar) {        self.progressBar = new Progress();      }      self.on('click', function (e) {        if (e.target.className.indexOf(self.classPrefix + 'close') !== -1) {          self.close();        }      });    },    renderHtml: function () {      var self = this;      var prefix = self.classPrefix;      var icon = '', closeButton = '', progressBar = '', notificationStyle = '';      if (self.icon) {        icon = '<i class="' + prefix + 'ico' + ' ' + prefix + 'i-' + self.icon + '"></i>';      }      notificationStyle = ' style="max-width: ' + self.maxWidth + 'px;' + (self.color ? 'background-color: ' + self.color + ';"' : '"');      if (self.closeButton) {        closeButton = '<button type="button" class="' + prefix + 'close" aria-hidden="true">\xD7</button>';      }      if (self.progressBar) {        progressBar = self.progressBar.renderHtml();      }      return '<div id="' + self._id + '" class="' + self.classes + '"' + notificationStyle + ' role="presentation">' + icon + '<div class="' + prefix + 'notification-inner">' + self.state.get('text') + '</div>' + progressBar + closeButton + '<div style="clip: rect(1px, 1px, 1px, 1px);height: 1px;overflow: hidden;position: absolute;width: 1px;"' + ' aria-live="assertive" aria-relevant="additions" aria-atomic="true"></div>' + '</div>';    },    postRender: function () {      var self = this;      global$7.setTimeout(function () {        self.$el.addClass(self.classPrefix + 'in');        updateLiveRegion(self, self.state.get('text'));      }, 100);      return self._super();    },    bindStates: function () {      var self = this;      self.state.on('change:text', function (e) {        self.getEl().firstChild.innerHTML = e.value;        updateLiveRegion(self, e.value);      });      if (self.progressBar) {        self.progressBar.bindStates();        self.progressBar.state.on('change:value', function (e) {          updateLiveRegion(self, self.state.get('text'));        });      }      return self._super();    },    close: function () {      var self = this;      if (!self.fire('close').isDefaultPrevented()) {        self.remove();      }      return self;    },    repaint: function () {      var self = this;      var style, rect;      style = self.getEl().style;      rect = self._layoutRect;      style.left = rect.x + 'px';      style.top = rect.y + 'px';      style.zIndex = 65535 - 1;    }  });  function NotificationManagerImpl (editor) {    var getEditorContainer = function (editor) {      return editor.inline ? editor.getElement() : editor.getContentAreaContainer();    };    var getContainerWidth = function () {      var container = getEditorContainer(editor);      return funcs.getSize(container).width;    };    var prePositionNotifications = function (notifications) {      $_f3qxhzthjh8lz3kg.each(notifications, function (notification) {        notification.moveTo(0, 0);      });    };    var positionNotifications = function (notifications) {      if (notifications.length > 0) {        var firstItem = notifications.slice(0, 1)[0];        var container = getEditorContainer(editor);        firstItem.moveRel(container, 'tc-tc');        $_f3qxhzthjh8lz3kg.each(notifications, function (notification, index) {          if (index > 0) {            notification.moveRel(notifications[index - 1].getEl(), 'bc-tc');          }        });      }    };    var reposition = function (notifications) {      prePositionNotifications(notifications);      positionNotifications(notifications);    };    var open = function (args, closeCallback) {      var extendedArgs = global$2.extend(args, { maxWidth: getContainerWidth() });      var notif = new Notification(extendedArgs);      notif.args = extendedArgs;      if (extendedArgs.timeout > 0) {        notif.timer = setTimeout(function () {          notif.close();          closeCallback();        }, extendedArgs.timeout);      }      notif.on('close', function () {        closeCallback();      });      notif.renderTo();      return notif;    };    var close = function (notification) {      notification.close();    };    var getArgs = function (notification) {      return notification.args;    };    return {      open: open,      close: close,      reposition: reposition,      getArgs: getArgs    };  }  var windows = [];  var oldMetaValue = '';  function toggleFullScreenState(state) {    var noScaleMetaValue = 'width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0';    var viewport = global$9('meta[name=viewport]')[0], contentValue;    if (global$8.overrideViewPort === false) {      return;    }    if (!viewport) {      viewport = document.createElement('meta');      viewport.setAttribute('name', 'viewport');      document.getElementsByTagName('head')[0].appendChild(viewport);    }    contentValue = viewport.getAttribute('content');    if (contentValue && typeof oldMetaValue !== 'undefined') {      oldMetaValue = contentValue;    }    viewport.setAttribute('content', state ? noScaleMetaValue : oldMetaValue);  }  function toggleBodyFullScreenClasses(classPrefix, state) {    if (checkFullscreenWindows() && state === false) {      global$9([        document.documentElement,        document.body      ]).removeClass(classPrefix + 'fullscreen');    }  }  function checkFullscreenWindows() {    for (var i = 0; i < windows.length; i++) {      if (windows[i]._fullscreen) {        return true;      }    }    return false;  }  function handleWindowResize() {    if (!global$8.desktop) {      var lastSize_1 = {        w: window.innerWidth,        h: window.innerHeight      };      global$7.setInterval(function () {        var w = window.innerWidth, h = window.innerHeight;        if (lastSize_1.w !== w || lastSize_1.h !== h) {          lastSize_1 = {            w: w,            h: h          };          global$9(window).trigger('resize');        }      }, 100);    }    function reposition() {      var i;      var rect = funcs.getWindowSize();      var layoutRect;      for (i = 0; i < windows.length; i++) {        layoutRect = windows[i].layoutRect();        windows[i].moveTo(windows[i].settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2), windows[i].settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2));      }    }    global$9(window).on('resize', reposition);  }  var Window = FloatPanel.extend({    modal: true,    Defaults: {      border: 1,      layout: 'flex',      containerCls: 'panel',      role: 'dialog',      callbacks: {        submit: function () {          this.fire('submit', { data: this.toJSON() });        },        close: function () {          this.close();        }      }    },    init: function (settings) {      var self = this;      self._super(settings);      if (self.isRtl()) {        self.classes.add('rtl');      }      self.classes.add('window');      self.bodyClasses.add('window-body');      self.state.set('fixed', true);      if (settings.buttons) {        self.statusbar = new Panel({          layout: 'flex',          border: '1 0 0 0',          spacing: 3,          padding: 10,          align: 'center',          pack: self.isRtl() ? 'start' : 'end',          defaults: { type: 'button' },          items: settings.buttons        });        self.statusbar.classes.add('foot');        self.statusbar.parent(self);      }      self.on('click', function (e) {        var closeClass = self.classPrefix + 'close';        if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {          self.close();        }      });      self.on('cancel', function () {        self.close();      });      self.on('move', function (e) {        if (e.control === self) {          FloatPanel.hideAll();        }      });      self.aria('describedby', self.describedBy || self._id + '-none');      self.aria('label', settings.title);      self._fullscreen = false;    },    recalc: function () {      var self = this;      var statusbar = self.statusbar;      var layoutRect, width, x, needsRecalc;      if (self._fullscreen) {        self.layoutRect(funcs.getWindowSize());        self.layoutRect().contentH = self.layoutRect().innerH;      }      self._super();      layoutRect = self.layoutRect();      if (self.settings.title && !self._fullscreen) {        width = layoutRect.headerW;        if (width > layoutRect.w) {          x = layoutRect.x - Math.max(0, width / 2);          self.layoutRect({            w: width,            x: x          });          needsRecalc = true;        }      }      if (statusbar) {        statusbar.layoutRect({ w: self.layoutRect().innerW }).recalc();        width = statusbar.layoutRect().minW + layoutRect.deltaW;        if (width > layoutRect.w) {          x = layoutRect.x - Math.max(0, width - layoutRect.w);          self.layoutRect({            w: width,            x: x          });          needsRecalc = true;        }      }      if (needsRecalc) {        self.recalc();      }    },    initLayoutRect: function () {      var self = this;      var layoutRect = self._super();      var deltaH = 0, headEl;      if (self.settings.title && !self._fullscreen) {        headEl = self.getEl('head');        var size = funcs.getSize(headEl);        layoutRect.headerW = size.width;        layoutRect.headerH = size.height;        deltaH += layoutRect.headerH;      }      if (self.statusbar) {        deltaH += self.statusbar.layoutRect().h;      }      layoutRect.deltaH += deltaH;      layoutRect.minH += deltaH;      layoutRect.h += deltaH;      var rect = funcs.getWindowSize();      layoutRect.x = self.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);      layoutRect.y = self.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);      return layoutRect;    },    renderHtml: function () {      var self = this, layout = self._layout, id = self._id, prefix = self.classPrefix;      var settings = self.settings;      var headerHtml = '', footerHtml = '', html = settings.html;      self.preRender();      layout.preRender(self);      if (settings.title) {        headerHtml = '<div id="' + id + '-head" class="' + prefix + 'window-head">' + '<div id="' + id + '-title" class="' + prefix + 'title">' + self.encode(settings.title) + '</div>' + '<div id="' + id + '-dragh" class="' + prefix + 'dragh"></div>' + '<button type="button" class="' + prefix + 'close" aria-hidden="true">' + '<i class="mce-ico mce-i-remove"></i>' + '</button>' + '</div>';      }      if (settings.url) {        html = '<iframe src="' + settings.url + '" tabindex="-1"></iframe>';      }      if (typeof html === 'undefined') {        html = layout.renderHtml(self);      }      if (self.statusbar) {        footerHtml = self.statusbar.renderHtml();      }      return '<div id="' + id + '" class="' + self.classes + '" hidefocus="1">' + '<div class="' + self.classPrefix + 'reset" role="application">' + headerHtml + '<div id="' + id + '-body" class="' + self.bodyClasses + '">' + html + '</div>' + footerHtml + '</div>' + '</div>';    },    fullscreen: function (state) {      var self = this;      var documentElement = document.documentElement;      var slowRendering;      var prefix = self.classPrefix;      var layoutRect;      if (state !== self._fullscreen) {        global$9(window).on('resize', function () {          var time;          if (self._fullscreen) {            if (!slowRendering) {              time = new Date().getTime();              var rect = funcs.getWindowSize();              self.moveTo(0, 0).resizeTo(rect.w, rect.h);              if (new Date().getTime() - time > 50) {                slowRendering = true;              }            } else {              if (!self._timer) {                self._timer = global$7.setTimeout(function () {                  var rect = funcs.getWindowSize();                  self.moveTo(0, 0).resizeTo(rect.w, rect.h);                  self._timer = 0;                }, 50);              }            }          }        });        layoutRect = self.layoutRect();        self._fullscreen = state;        if (!state) {          self.borderBox = $_focdcktxjh8lz3mn.parseBox(self.settings.border);          self.getEl('head').style.display = '';          layoutRect.deltaH += layoutRect.headerH;          global$9([            documentElement,            document.body          ]).removeClass(prefix + 'fullscreen');          self.classes.remove('fullscreen');          self.moveTo(self._initial.x, self._initial.y).resizeTo(self._initial.w, self._initial.h);        } else {          self._initial = {            x: layoutRect.x,            y: layoutRect.y,            w: layoutRect.w,            h: layoutRect.h          };          self.borderBox = $_focdcktxjh8lz3mn.parseBox('0');          self.getEl('head').style.display = 'none';          layoutRect.deltaH -= layoutRect.headerH + 2;          global$9([            documentElement,            document.body          ]).addClass(prefix + 'fullscreen');          self.classes.add('fullscreen');          var rect = funcs.getWindowSize();          self.moveTo(0, 0).resizeTo(rect.w, rect.h);        }      }      return self.reflow();    },    postRender: function () {      var self = this;      var startPos;      setTimeout(function () {        self.classes.add('in');        self.fire('open');      }, 0);      self._super();      if (self.statusbar) {        self.statusbar.postRender();      }      self.focus();      this.dragHelper = new DragHelper(self._id + '-dragh', {        start: function () {          startPos = {            x: self.layoutRect().x,            y: self.layoutRect().y          };        },        drag: function (e) {          self.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);        }      });      self.on('submit', function (e) {        if (!e.isDefaultPrevented()) {          self.close();        }      });      windows.push(self);      toggleFullScreenState(true);    },    submit: function () {      return this.fire('submit', { data: this.toJSON() });    },    remove: function () {      var self = this;      var i;      self.dragHelper.destroy();      self._super();      if (self.statusbar) {        this.statusbar.remove();      }      toggleBodyFullScreenClasses(self.classPrefix, false);      i = windows.length;      while (i--) {        if (windows[i] === self) {          windows.splice(i, 1);        }      }      toggleFullScreenState(windows.length > 0);    },    getContentWindow: function () {      var ifr = this.getEl().getElementsByTagName('iframe')[0];      return ifr ? ifr.contentWindow : null;    }  });  handleWindowResize();  var MessageBox = Window.extend({    init: function (settings) {      settings = {        border: 1,        padding: 20,        layout: 'flex',        pack: 'center',        align: 'center',        containerCls: 'panel',        autoScroll: true,        buttons: {          type: 'button',          text: 'Ok',          action: 'ok'        },        items: {          type: 'label',          multiline: true,          maxWidth: 500,          maxHeight: 200        }      };      this._super(settings);    },    Statics: {      OK: 1,      OK_CANCEL: 2,      YES_NO: 3,      YES_NO_CANCEL: 4,      msgBox: function (settings) {        var buttons;        var callback = settings.callback || function () {        };        function createButton(text, status, primary) {          return {            type: 'button',            text: text,            subtype: primary ? 'primary' : '',            onClick: function (e) {              e.control.parents()[1].close();              callback(status);            }          };        }        switch (settings.buttons) {        case MessageBox.OK_CANCEL:          buttons = [            createButton('Ok', true, true),            createButton('Cancel', false)          ];          break;        case MessageBox.YES_NO:        case MessageBox.YES_NO_CANCEL:          buttons = [            createButton('Yes', 1, true),            createButton('No', 0)          ];          if (settings.buttons === MessageBox.YES_NO_CANCEL) {            buttons.push(createButton('Cancel', -1));          }          break;        default:          buttons = [createButton('Ok', true, true)];          break;        }        return new Window({          padding: 20,          x: settings.x,          y: settings.y,          minWidth: 300,          minHeight: 100,          layout: 'flex',          pack: 'center',          align: 'center',          buttons: buttons,          title: settings.title,          role: 'alertdialog',          items: {            type: 'label',            multiline: true,            maxWidth: 500,            maxHeight: 200,            text: settings.text          },          onPostRender: function () {            this.aria('describedby', this.items()[0]._id);          },          onClose: settings.onClose,          onCancel: function () {            callback(false);          }        }).renderTo(document.body).reflow();      },      alert: function (settings, callback) {        if (typeof settings === 'string') {          settings = { text: settings };        }        settings.callback = callback;        return MessageBox.msgBox(settings);      },      confirm: function (settings, callback) {        if (typeof settings === 'string') {          settings = { text: settings };        }        settings.callback = callback;        settings.buttons = MessageBox.OK_CANCEL;        return MessageBox.msgBox(settings);      }    }  });  function WindowManagerImpl (editor) {    var open = function (args, params, closeCallback) {      var win;      args.title = args.title || ' ';      args.url = args.url || args.file;      if (args.url) {        args.width = parseInt(args.width || 320, 10);        args.height = parseInt(args.height || 240, 10);      }      if (args.body) {        args.items = {          defaults: args.defaults,          type: args.bodyType || 'form',          items: args.body,          data: args.data,          callbacks: args.commands        };      }      if (!args.url && !args.buttons) {        args.buttons = [          {            text: 'Ok',            subtype: 'primary',            onclick: function () {              win.find('form')[0].submit();            }          },          {            text: 'Cancel',            onclick: function () {              win.close();            }          }        ];      }      win = new Window(args);      win.on('close', function () {        closeCallback(win);      });      if (args.data) {        win.on('postRender', function () {          this.find('*').each(function (ctrl) {            var name = ctrl.name();            if (name in args.data) {              ctrl.value(args.data[name]);            }          });        });      }      win.features = args || {};      win.params = params || {};      win = win.renderTo(document.body).reflow();      return win;    };    var alert = function (message, choiceCallback, closeCallback) {      var win;      win = MessageBox.alert(message, function () {        choiceCallback();      });      win.on('close', function () {        closeCallback(win);      });      return win;    };    var confirm = function (message, choiceCallback, closeCallback) {      var win;      win = MessageBox.confirm(message, function (state) {        choiceCallback(state);      });      win.on('close', function () {        closeCallback(win);      });      return win;    };    var close = function (window) {      window.close();    };    var getParams = function (window) {      return window.params;    };    var setParams = function (window, params) {      window.params = params;    };    return {      open: open,      alert: alert,      confirm: confirm,      close: close,      getParams: getParams,      setParams: setParams    };  }  var get = function (editor) {    var renderUI = function (args) {      return $_5ent4szjh8lz3ja.renderUI(editor, this, args);    };    var resizeTo = function (w, h) {      return $_5toavetjjh8lz3ko.resizeTo(editor, w, h);    };    var resizeBy = function (dw, dh) {      return $_5toavetjjh8lz3ko.resizeBy(editor, dw, dh);    };    var getNotificationManagerImpl = function () {      return NotificationManagerImpl(editor);    };    var getWindowManagerImpl = function () {      return WindowManagerImpl(editor);    };    return {      renderUI: renderUI,      resizeTo: resizeTo,      resizeBy: resizeBy,      getNotificationManagerImpl: getNotificationManagerImpl,      getWindowManagerImpl: getWindowManagerImpl    };  };  var $_1os0v5syjh8lz3j9 = { get: get };  var Layout = global$10.extend({    Defaults: {      firstControlClass: 'first',      lastControlClass: 'last'    },    init: function (settings) {      this.settings = global$2.extend({}, this.Defaults, settings);    },    preRender: function (container) {      container.bodyClasses.add(this.settings.containerClass);    },    applyClasses: function (items) {      var self = this;      var settings = self.settings;      var firstClass, lastClass, firstItem, lastItem;      firstClass = settings.firstControlClass;      lastClass = settings.lastControlClass;      items.each(function (item) {        item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);        if (item.visible()) {          if (!firstItem) {            firstItem = item;          }          lastItem = item;        }      });      if (firstItem) {        firstItem.classes.add(firstClass);      }      if (lastItem) {        lastItem.classes.add(lastClass);      }    },    renderHtml: function (container) {      var self = this;      var html = '';      self.applyClasses(container.items());      container.items().each(function (item) {        html += item.renderHtml();      });      return html;    },    recalc: function () {    },    postRender: function () {    },    isNative: function () {      return false;    }  });  var AbsoluteLayout = Layout.extend({    Defaults: {      containerClass: 'abs-layout',      controlClass: 'abs-layout-item'    },    recalc: function (container) {      container.items().filter(':visible').each(function (ctrl) {        var settings = ctrl.settings;        ctrl.layoutRect({          x: settings.x,          y: settings.y,          w: settings.w,          h: settings.h        });        if (ctrl.recalc) {          ctrl.recalc();        }      });    },    renderHtml: function (container) {      return '<div id="' + container._id + '-absend" class="' + container.classPrefix + 'abs-end"></div>' + this._super(container);    }  });  var Button = Widget.extend({    Defaults: {      classes: 'widget btn',      role: 'button'    },    init: function (settings) {      var self = this;      var size;      self._super(settings);      settings = self.settings;      size = self.settings.size;      self.on('click mousedown', function (e) {        e.preventDefault();      });      self.on('touchstart', function (e) {        self.fire('click', e);        e.preventDefault();      });      if (settings.subtype) {        self.classes.add(settings.subtype);      }      if (size) {        self.classes.add('btn-' + size);      }      if (settings.icon) {        self.icon(settings.icon);      }    },    icon: function (icon) {      if (!arguments.length) {        return this.state.get('icon');      }      this.state.set('icon', icon);      return this;    },    repaint: function () {      var btnElm = this.getEl().firstChild;      var btnStyle;      if (btnElm) {        btnStyle = btnElm.style;        btnStyle.width = btnStyle.height = '100%';      }      this._super();    },    renderHtml: function () {      var self = this, id = self._id, prefix = self.classPrefix;      var icon = self.state.get('icon'), image;      var text = self.state.get('text');      var textHtml = '';      var ariaPressed;      var settings = self.settings;      image = settings.image;      if (image) {        icon = 'none';        if (typeof image !== 'string') {          image = window.getSelection ? image[0] : image[1];        }        image = ' style="background-image: url(\'' + image + '\')"';      } else {        image = '';      }      if (text) {        self.classes.add('btn-has-text');        textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';      }      icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';      ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';      return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1"' + ariaPressed + '>' + '<button id="' + id + '-button" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '</div>';    },    bindStates: function () {      var self = this, $ = self.$, textCls = self.classPrefix + 'txt';      function setButtonText(text) {        var $span = $('span.' + textCls, self.getEl());        if (text) {          if (!$span[0]) {            $('button:first', self.getEl()).append('<span class="' + textCls + '"></span>');            $span = $('span.' + textCls, self.getEl());          }          $span.html(self.encode(text));        } else {          $span.remove();        }        self.classes.toggle('btn-has-text', !!text);      }      self.state.on('change:text', function (e) {        setButtonText(e.value);      });      self.state.on('change:icon', function (e) {        var icon = e.value;        var prefix = self.classPrefix;        self.settings.icon = icon;        icon = icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';        var btnElm = self.getEl().firstChild;        var iconElm = btnElm.getElementsByTagName('i')[0];        if (icon) {          if (!iconElm || iconElm !== btnElm.firstChild) {            iconElm = document.createElement('i');            btnElm.insertBefore(iconElm, btnElm.firstChild);          }          iconElm.className = icon;        } else if (iconElm) {          btnElm.removeChild(iconElm);        }        setButtonText(self.state.get('text'));      });      return self._super();    }  });  var BrowseButton = Button.extend({    init: function (settings) {      var self = this;      settings = global$2.extend({        text: 'Browse...',        multiple: false,        accept: null      }, settings);      self._super(settings);      self.classes.add('browsebutton');      if (settings.multiple) {        self.classes.add('multiple');      }    },    postRender: function () {      var self = this;      var input = funcs.create('input', {        type: 'file',        id: self._id + '-browse',        accept: self.settings.accept      });      self._super();      global$9(input).on('change', function (e) {        var files = e.target.files;        self.value = function () {          if (!files.length) {            return null;          } else if (self.settings.multiple) {            return files;          } else {            return files[0];          }        };        e.preventDefault();        if (files.length) {          self.fire('change', e);        }      });      global$9(input).on('click', function (e) {        e.stopPropagation();      });      global$9(self.getEl('button')).on('click', function (e) {        e.stopPropagation();        input.click();      });      self.getEl().appendChild(input);    },    remove: function () {      global$9(this.getEl('button')).off();      global$9(this.getEl('input')).off();      this._super();    }  });  var ButtonGroup = Container.extend({    Defaults: {      defaultType: 'button',      role: 'group'    },    renderHtml: function () {      var self = this, layout = self._layout;      self.classes.add('btn-group');      self.preRender();      layout.preRender(self);      return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';    }  });  var Checkbox = Widget.extend({    Defaults: {      classes: 'checkbox',      role: 'checkbox',      checked: false    },    init: function (settings) {      var self = this;      self._super(settings);      self.on('click mousedown', function (e) {        e.preventDefault();      });      self.on('click', function (e) {        e.preventDefault();        if (!self.disabled()) {          self.checked(!self.checked());        }      });      self.checked(self.settings.checked);    },    checked: function (state) {      if (!arguments.length) {        return this.state.get('checked');      }      this.state.set('checked', state);      return this;    },    value: function (state) {      if (!arguments.length) {        return this.checked();      }      return this.checked(state);    },    renderHtml: function () {      var self = this, id = self._id, prefix = self.classPrefix;      return '<div id="' + id + '" class="' + self.classes + '" unselectable="on" aria-labelledby="' + id + '-al" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-checkbox"></i>' + '<span id="' + id + '-al" class="' + prefix + 'label">' + self.encode(self.state.get('text')) + '</span>' + '</div>';    },    bindStates: function () {      var self = this;      function checked(state) {        self.classes.toggle('checked', state);        self.aria('checked', state);      }      self.state.on('change:text', function (e) {        self.getEl('al').firstChild.data = self.translate(e.value);      });      self.state.on('change:checked change:value', function (e) {        self.fire('change');        checked(e.value);      });      self.state.on('change:icon', function (e) {        var icon = e.value;        var prefix = self.classPrefix;        if (typeof icon === 'undefined') {          return self.settings.icon;        }        self.settings.icon = icon;        icon = icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';        var btnElm = self.getEl().firstChild;        var iconElm = btnElm.getElementsByTagName('i')[0];        if (icon) {          if (!iconElm || iconElm !== btnElm.firstChild) {            iconElm = document.createElement('i');            btnElm.insertBefore(iconElm, btnElm.firstChild);          }          iconElm.className = icon;        } else if (iconElm) {          btnElm.removeChild(iconElm);        }      });      if (self.state.get('checked')) {        checked(true);      }      return self._super();    }  });  var global$13 = tinymce.util.Tools.resolve('tinymce.util.VK');  var ComboBox = Widget.extend({    init: function (settings) {      var self = this;      self._super(settings);      settings = self.settings;      self.classes.add('combobox');      self.subinput = true;      self.ariaTarget = 'inp';      settings.menu = settings.menu || settings.values;      if (settings.menu) {        settings.icon = 'caret';      }      self.on('click', function (e) {        var elm = e.target;        var root = self.getEl();        if (!global$9.contains(root, elm) && elm !== root) {          return;        }        while (elm && elm !== root) {          if (elm.id && elm.id.indexOf('-open') !== -1) {            self.fire('action');            if (settings.menu) {              self.showMenu();              if (e.aria) {                self.menu.items()[0].focus();              }            }          }          elm = elm.parentNode;        }      });      self.on('keydown', function (e) {        var rootControl;        if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {          e.preventDefault();          self.parents().reverse().each(function (ctrl) {            if (ctrl.toJSON) {              rootControl = ctrl;              return false;            }          });          self.fire('submit', { data: rootControl.toJSON() });        }      });      self.on('keyup', function (e) {        if (e.target.nodeName === 'INPUT') {          var oldValue = self.state.get('value');          var newValue = e.target.value;          if (newValue !== oldValue) {            self.state.set('value', newValue);            self.fire('autocomplete', e);          }        }      });      self.on('mouseover', function (e) {        var tooltip = self.tooltip().moveTo(-65535);        if (self.statusLevel() && e.target.className.indexOf(self.classPrefix + 'status') !== -1) {          var statusMessage = self.statusMessage() || 'Ok';          var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [            'bc-tc',            'bc-tl',            'bc-tr'          ]);          tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');          tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');          tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');          tooltip.moveRel(e.target, rel);        }      });    },    statusLevel: function (value) {      if (arguments.length > 0) {        this.state.set('statusLevel', value);      }      return this.state.get('statusLevel');    },    statusMessage: function (value) {      if (arguments.length > 0) {        this.state.set('statusMessage', value);      }      return this.state.get('statusMessage');    },    showMenu: function () {      var self = this;      var settings = self.settings;      var menu;      if (!self.menu) {        menu = settings.menu || [];        if (menu.length) {          menu = {            type: 'menu',            items: menu          };        } else {          menu.type = menu.type || 'menu';        }        self.menu = global$4.create(menu).parent(self).renderTo(self.getContainerElm());        self.fire('createmenu');        self.menu.reflow();        self.menu.on('cancel', function (e) {          if (e.control === self.menu) {            self.focus();          }        });        self.menu.on('show hide', function (e) {          e.control.items().each(function (ctrl) {            ctrl.active(ctrl.value() === self.value());          });        }).fire('show');        self.menu.on('select', function (e) {          self.value(e.control.value());        });        self.on('focusin', function (e) {          if (e.target.tagName.toUpperCase() === 'INPUT') {            self.menu.hide();          }        });        self.aria('expanded', true);      }      self.menu.show();      self.menu.layoutRect({ w: self.layoutRect().w });      self.menu.moveRel(self.getEl(), self.isRtl() ? [        'br-tr',        'tr-br'      ] : [        'bl-tl',        'tl-bl'      ]);    },    focus: function () {      this.getEl('inp').focus();    },    repaint: function () {      var self = this, elm = self.getEl(), openElm = self.getEl('open'), rect = self.layoutRect();      var width, lineHeight, innerPadding = 0;      var inputElm = elm.firstChild;      if (self.statusLevel() && self.statusLevel() !== 'none') {        innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);      }      if (openElm) {        width = rect.w - funcs.getSize(openElm).width - 10;      } else {        width = rect.w - 10;      }      var doc = document;      if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {        lineHeight = self.layoutRect().h - 2 + 'px';      }      global$9(inputElm).css({        width: width - innerPadding,        lineHeight: lineHeight      });      self._super();      return self;    },    postRender: function () {      var self = this;      global$9(this.getEl('inp')).on('change', function (e) {        self.state.set('value', e.target.value);        self.fire('change', e);      });      return self._super();    },    renderHtml: function () {      var self = this, id = self._id, settings = self.settings, prefix = self.classPrefix;      var value = self.state.get('value') || '';      var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';      if ('spellcheck' in settings) {        extraAttrs += ' spellcheck="' + settings.spellcheck + '"';      }      if (settings.maxLength) {        extraAttrs += ' maxlength="' + settings.maxLength + '"';      }      if (settings.size) {        extraAttrs += ' size="' + settings.size + '"';      }      if (settings.subtype) {        extraAttrs += ' type="' + settings.subtype + '"';      }      statusHtml = '<i id="' + id + '-status" class="mce-status mce-ico" style="display: none"></i>';      if (self.disabled()) {        extraAttrs += ' disabled="disabled"';      }      icon = settings.icon;      if (icon && icon !== 'caret') {        icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;      }      text = self.state.get('text');      if (icon || text) {        openBtnHtml = '<div id="' + id + '-open" class="' + prefix + 'btn ' + prefix + 'open" tabIndex="-1" role="button">' + '<button id="' + id + '-action" type="button" hidefocus="1" tabindex="-1">' + (icon !== 'caret' ? '<i class="' + icon + '"></i>' : '<i class="' + prefix + 'caret"></i>') + (text ? (icon ? ' ' : '') + text : '') + '</button>' + '</div>';        self.classes.add('has-open');      }      return '<div id="' + id + '" class="' + self.classes + '">' + '<input id="' + id + '-inp" class="' + prefix + 'textbox" value="' + self.encode(value, false) + '" hidefocus="1"' + extraAttrs + ' placeholder="' + self.encode(settings.placeholder) + '" />' + statusHtml + openBtnHtml + '</div>';    },    value: function (value) {      if (arguments.length) {        this.state.set('value', value);        return this;      }      if (this.state.get('rendered')) {        this.state.set('value', this.getEl('inp').value);      }      return this.state.get('value');    },    showAutoComplete: function (items, term) {      var self = this;      if (items.length === 0) {        self.hideMenu();        return;      }      var insert = function (value, title) {        return function () {          self.fire('selectitem', {            title: title,            value: value          });        };      };      if (self.menu) {        self.menu.items().remove();      } else {        self.menu = global$4.create({          type: 'menu',          classes: 'combobox-menu',          layout: 'flow'        }).parent(self).renderTo();      }      global$2.each(items, function (item) {        self.menu.add({          text: item.title,          url: item.previewUrl,          match: term,          classes: 'menu-item-ellipsis',          onclick: insert(item.value, item.title)        });      });      self.menu.renderNew();      self.hideMenu();      self.menu.on('cancel', function (e) {        if (e.control.parent() === self.menu) {          e.stopPropagation();          self.focus();          self.hideMenu();        }      });      self.menu.on('select', function () {        self.focus();      });      var maxW = self.layoutRect().w;      self.menu.layoutRect({        w: maxW,        minW: 0,        maxW: maxW      });      self.menu.repaint();      self.menu.reflow();      self.menu.show();      self.menu.moveRel(self.getEl(), self.isRtl() ? [        'br-tr',        'tr-br'      ] : [        'bl-tl',        'tl-bl'      ]);    },    hideMenu: function () {      if (this.menu) {        this.menu.hide();      }    },    bindStates: function () {      var self = this;      self.state.on('change:value', function (e) {        if (self.getEl('inp').value !== e.value) {          self.getEl('inp').value = e.value;        }      });      self.state.on('change:disabled', function (e) {        self.getEl('inp').disabled = e.value;      });      self.state.on('change:statusLevel', function (e) {        var statusIconElm = self.getEl('status');        var prefix = self.classPrefix, value = e.value;        funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');        funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');        funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');        funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');        self.classes.toggle('has-status', value !== 'none');        self.repaint();      });      funcs.on(self.getEl('status'), 'mouseleave', function () {        self.tooltip().hide();      });      self.on('cancel', function (e) {        if (self.menu && self.menu.visible()) {          e.stopPropagation();          self.hideMenu();        }      });      var focusIdx = function (idx, menu) {        if (menu && menu.items().length > 0) {          menu.items().eq(idx)[0].focus();        }      };      self.on('keydown', function (e) {        var keyCode = e.keyCode;        if (e.target.nodeName === 'INPUT') {          if (keyCode === global$13.DOWN) {            e.preventDefault();            self.fire('autocomplete');            focusIdx(0, self.menu);          } else if (keyCode === global$13.UP) {            e.preventDefault();            focusIdx(-1, self.menu);          }        }      });      return self._super();    },    remove: function () {      global$9(this.getEl('inp')).off();      if (this.menu) {        this.menu.remove();      }      this._super();    }  });  var ColorBox = ComboBox.extend({    init: function (settings) {      var self = this;      settings.spellcheck = false;      if (settings.onaction) {        settings.icon = 'none';      }      self._super(settings);      self.classes.add('colorbox');      self.on('change keyup postrender', function () {        self.repaintColor(self.value());      });    },    repaintColor: function (value) {      var openElm = this.getEl('open');      var elm = openElm ? openElm.getElementsByTagName('i')[0] : null;      if (elm) {        try {          elm.style.background = value;        } catch (ex) {        }      }    },    bindStates: function () {      var self = this;      self.state.on('change:value', function (e) {        if (self.state.get('rendered')) {          self.repaintColor(e.value);        }      });      return self._super();    }  });  var PanelButton = Button.extend({    showPanel: function () {      var self = this, settings = self.settings;      self.classes.add('opened');      if (!self.panel) {        var panelSettings = settings.panel;        if (panelSettings.type) {          panelSettings = {            layout: 'grid',            items: panelSettings          };        }        panelSettings.role = panelSettings.role || 'dialog';        panelSettings.popover = true;        panelSettings.autohide = true;        panelSettings.ariaRoot = true;        self.panel = new FloatPanel(panelSettings).on('hide', function () {          self.classes.remove('opened');        }).on('cancel', function (e) {          e.stopPropagation();          self.focus();          self.hidePanel();        }).parent(self).renderTo(self.getContainerElm());        self.panel.fire('show');        self.panel.reflow();      } else {        self.panel.show();      }      var rtlRels = [        'bc-tc',        'bc-tl',        'bc-tr'      ];      var ltrRels = [        'bc-tc',        'bc-tr',        'bc-tl',        'tc-bc',        'tc-br',        'tc-bl'      ];      var rel = self.panel.testMoveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? rtlRels : ltrRels));      self.panel.classes.toggle('start', rel.substr(-1) === 'l');      self.panel.classes.toggle('end', rel.substr(-1) === 'r');      var isTop = rel.substr(0, 1) === 't';      self.panel.classes.toggle('bottom', !isTop);      self.panel.classes.toggle('top', isTop);      self.panel.moveRel(self.getEl(), rel);    },    hidePanel: function () {      var self = this;      if (self.panel) {        self.panel.hide();      }    },    postRender: function () {      var self = this;      self.aria('haspopup', true);      self.on('click', function (e) {        if (e.control === self) {          if (self.panel && self.panel.visible()) {            self.hidePanel();          } else {            self.showPanel();            self.panel.focus(!!e.aria);          }        }      });      return self._super();    },    remove: function () {      if (this.panel) {        this.panel.remove();        this.panel = null;      }      return this._super();    }  });  var DOM$3 = global$3.DOM;  var ColorButton = PanelButton.extend({    init: function (settings) {      this._super(settings);      this.classes.add('splitbtn');      this.classes.add('colorbutton');    },    color: function (color) {      if (color) {        this._color = color;        this.getEl('preview').style.backgroundColor = color;        return this;      }      return this._color;    },    resetColor: function () {      this._color = null;      this.getEl('preview').style.backgroundColor = null;      return this;    },    renderHtml: function () {      var self = this, id = self._id, prefix = self.classPrefix, text = self.state.get('text');      var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';      var image = self.settings.image ? ' style="background-image: url(\'' + self.settings.image + '\')"' : '';      var textHtml = '';      if (text) {        self.classes.add('btn-has-text');        textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';      }      return '<div id="' + id + '" class="' + self.classes + '" role="button" tabindex="-1" aria-haspopup="true">' + '<button role="presentation" hidefocus="1" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + '<span id="' + id + '-preview" class="' + prefix + 'preview"></span>' + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';    },    postRender: function () {      var self = this, onClickHandler = self.settings.onclick;      self.on('click', function (e) {        if (e.aria && e.aria.key === 'down') {          return;        }        if (e.control === self && !DOM$3.getParent(e.target, '.' + self.classPrefix + 'open')) {          e.stopImmediatePropagation();          onClickHandler.call(self, e);        }      });      delete self.settings.onclick;      return self._super();    }  });  var global$14 = tinymce.util.Tools.resolve('tinymce.util.Color');  var ColorPicker = Widget.extend({    Defaults: { classes: 'widget colorpicker' },    init: function (settings) {      this._super(settings);    },    postRender: function () {      var self = this;      var color = self.color();      var hsv, hueRootElm, huePointElm, svRootElm, svPointElm;      hueRootElm = self.getEl('h');      huePointElm = self.getEl('hp');      svRootElm = self.getEl('sv');      svPointElm = self.getEl('svp');      function getPos(elm, event) {        var pos = funcs.getPos(elm);        var x, y;        x = event.pageX - pos.x;        y = event.pageY - pos.y;        x = Math.max(0, Math.min(x / elm.clientWidth, 1));        y = Math.max(0, Math.min(y / elm.clientHeight, 1));        return {          x: x,          y: y        };      }      function updateColor(hsv, hueUpdate) {        var hue = (360 - hsv.h) / 360;        funcs.css(huePointElm, { top: hue * 100 + '%' });        if (!hueUpdate) {          funcs.css(svPointElm, {            left: hsv.s + '%',            top: 100 - hsv.v + '%'          });        }        svRootElm.style.background = global$14({          s: 100,          v: 100,          h: hsv.h        }).toHex();        self.color().parse({          s: hsv.s,          v: hsv.v,          h: hsv.h        });      }      function updateSaturationAndValue(e) {        var pos;        pos = getPos(svRootElm, e);        hsv.s = pos.x * 100;        hsv.v = (1 - pos.y) * 100;        updateColor(hsv);        self.fire('change');      }      function updateHue(e) {        var pos;        pos = getPos(hueRootElm, e);        hsv = color.toHsv();        hsv.h = (1 - pos.y) * 360;        updateColor(hsv, true);        self.fire('change');      }      self._repaint = function () {        hsv = color.toHsv();        updateColor(hsv);      };      self._super();      self._svdraghelper = new DragHelper(self._id + '-sv', {        start: updateSaturationAndValue,        drag: updateSaturationAndValue      });      self._hdraghelper = new DragHelper(self._id + '-h', {        start: updateHue,        drag: updateHue      });      self._repaint();    },    rgb: function () {      return this.color().toRgb();    },    value: function (value) {      var self = this;      if (arguments.length) {        self.color().parse(value);        if (self._rendered) {          self._repaint();        }      } else {        return self.color().toHex();      }    },    color: function () {      if (!this._color) {        this._color = global$14();      }      return this._color;    },    renderHtml: function () {      var self = this;      var id = self._id;      var prefix = self.classPrefix;      var hueHtml;      var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';      function getOldIeFallbackHtml() {        var i, l, html = '', gradientPrefix, stopsList;        gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';        stopsList = stops.split(',');        for (i = 0, l = stopsList.length - 1; i < l; i++) {          html += '<div class="' + prefix + 'colorpicker-h-chunk" style="' + 'height:' + 100 / l + '%;' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ');' + '-ms-' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ')' + '"></div>';        }        return html;      }      var gradientCssText = 'background: -ms-linear-gradient(top,' + stops + ');' + 'background: linear-gradient(to bottom,' + stops + ');';      hueHtml = '<div id="' + id + '-h" class="' + prefix + 'colorpicker-h" style="' + gradientCssText + '">' + getOldIeFallbackHtml() + '<div id="' + id + '-hp" class="' + prefix + 'colorpicker-h-marker"></div>' + '</div>';      return '<div id="' + id + '" class="' + self.classes + '">' + '<div id="' + id + '-sv" class="' + prefix + 'colorpicker-sv">' + '<div class="' + prefix + 'colorpicker-overlay1">' + '<div class="' + prefix + 'colorpicker-overlay2">' + '<div id="' + id + '-svp" class="' + prefix + 'colorpicker-selector1">' + '<div class="' + prefix + 'colorpicker-selector2"></div>' + '</div>' + '</div>' + '</div>' + '</div>' + hueHtml + '</div>';    }  });  var DropZone = Widget.extend({    init: function (settings) {      var self = this;      settings = global$2.extend({        height: 100,        text: 'Drop an image here',        multiple: false,        accept: null      }, settings);      self._super(settings);      self.classes.add('dropzone');      if (settings.multiple) {        self.classes.add('multiple');      }    },    renderHtml: function () {      var self = this;      var attrs, elm;      var cfg = self.settings;      attrs = {        id: self._id,        hidefocus: '1'      };      elm = funcs.create('div', attrs, '<span>' + this.translate(cfg.text) + '</span>');      if (cfg.height) {        funcs.css(elm, 'height', cfg.height + 'px');      }      if (cfg.width) {        funcs.css(elm, 'width', cfg.width + 'px');      }      elm.className = self.classes;      return elm.outerHTML;    },    postRender: function () {      var self = this;      var toggleDragClass = function (e) {        e.preventDefault();        self.classes.toggle('dragenter');        self.getEl().className = self.classes;      };      var filter = function (files) {        var accept = self.settings.accept;        if (typeof accept !== 'string') {          return files;        }        var re = new RegExp('(' + accept.split(/\s*,\s*/).join('|') + ')$', 'i');        return global$2.grep(files, function (file) {          return re.test(file.name);        });      };      self._super();      self.$el.on('dragover', function (e) {        e.preventDefault();      });      self.$el.on('dragenter', toggleDragClass);      self.$el.on('dragleave', toggleDragClass);      self.$el.on('drop', function (e) {        e.preventDefault();        if (self.state.get('disabled')) {          return;        }        var files = filter(e.dataTransfer.files);        self.value = function () {          if (!files.length) {            return null;          } else if (self.settings.multiple) {            return files;          } else {            return files[0];          }        };        if (files.length) {          self.fire('change', e);        }      });    },    remove: function () {      this.$el.off();      this._super();    }  });  var Path = Widget.extend({    init: function (settings) {      var self = this;      if (!settings.delimiter) {        settings.delimiter = '\xBB';      }      self._super(settings);      self.classes.add('path');      self.canFocus = true;      self.on('click', function (e) {        var index;        var target = e.target;        if (index = target.getAttribute('data-index')) {          self.fire('select', {            value: self.row()[index],            index: index          });        }      });      self.row(self.settings.row);    },    focus: function () {      var self = this;      self.getEl().firstChild.focus();      return self;    },    row: function (row) {      if (!arguments.length) {        return this.state.get('row');      }      this.state.set('row', row);      return this;    },    renderHtml: function () {      var self = this;      return '<div id="' + self._id + '" class="' + self.classes + '">' + self._getDataPathHtml(self.state.get('row')) + '</div>';    },    bindStates: function () {      var self = this;      self.state.on('change:row', function (e) {        self.innerHtml(self._getDataPathHtml(e.value));      });      return self._super();    },    _getDataPathHtml: function (data) {      var self = this;      var parts = data || [];      var i, l, html = '';      var prefix = self.classPrefix;      for (i = 0, l = parts.length; i < l; i++) {        html += (i > 0 ? '<div class="' + prefix + 'divider" aria-hidden="true"> ' + self.settings.delimiter + ' </div>' : '') + '<div role="button" class="' + prefix + 'path-item' + (i === l - 1 ? ' ' + prefix + 'last' : '') + '" data-index="' + i + '" tabindex="-1" id="' + self._id + '-' + i + '" aria-level="' + (i + 1) + '">' + parts[i].name + '</div>';      }      if (!html) {        html = '<div class="' + prefix + 'path-item">\xA0</div>';      }      return html;    }  });  var ElementPath = Path.extend({    postRender: function () {      var self = this, editor = self.settings.editor;      function isHidden(elm) {        if (elm.nodeType === 1) {          if (elm.nodeName === 'BR' || !!elm.getAttribute('data-mce-bogus')) {            return true;          }          if (elm.getAttribute('data-mce-type') === 'bookmark') {            return true;          }        }        return false;      }      if (editor.settings.elementpath !== false) {        self.on('select', function (e) {          editor.focus();          editor.selection.select(this.row()[e.index].element);          editor.nodeChanged();        });        editor.on('nodeChange', function (e) {          var outParents = [];          var parents = e.parents;          var i = parents.length;          while (i--) {            if (parents[i].nodeType === 1 && !isHidden(parents[i])) {              var args = editor.fire('ResolveName', {                name: parents[i].nodeName.toLowerCase(),                target: parents[i]              });              if (!args.isDefaultPrevented()) {                outParents.push({                  name: args.name,                  element: parents[i]                });              }              if (args.isPropagationStopped()) {                break;              }            }          }          self.row(outParents);        });      }      return self._super();    }  });  var FormItem = Container.extend({    Defaults: {      layout: 'flex',      align: 'center',      defaults: { flex: 1 }    },    renderHtml: function () {      var self = this, layout = self._layout, prefix = self.classPrefix;      self.classes.add('formitem');      layout.preRender(self);      return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + (self.settings.title ? '<div id="' + self._id + '-title" class="' + prefix + 'title">' + self.settings.title + '</div>' : '') + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';    }  });  var Form = Container.extend({    Defaults: {      containerCls: 'form',      layout: 'flex',      direction: 'column',      align: 'stretch',      flex: 1,      padding: 15,      labelGap: 30,      spacing: 10,      callbacks: {        submit: function () {          this.submit();        }      }    },    preRender: function () {      var self = this, items = self.items();      if (!self.settings.formItemDefaults) {        self.settings.formItemDefaults = {          layout: 'flex',          autoResize: 'overflow',          defaults: { flex: 1 }        };      }      items.each(function (ctrl) {        var formItem;        var label = ctrl.settings.label;        if (label) {          formItem = new FormItem(global$2.extend({            items: {              type: 'label',              id: ctrl._id + '-l',              text: label,              flex: 0,              forId: ctrl._id,              disabled: ctrl.disabled()            }          }, self.settings.formItemDefaults));          formItem.type = 'formitem';          ctrl.aria('labelledby', ctrl._id + '-l');          if (typeof ctrl.settings.flex === 'undefined') {            ctrl.settings.flex = 1;          }          self.replace(ctrl, formItem);          formItem.add(ctrl);        }      });    },    submit: function () {      return this.fire('submit', { data: this.toJSON() });    },    postRender: function () {      var self = this;      self._super();      self.fromJSON(self.settings.data);    },    bindStates: function () {      var self = this;      self._super();      function recalcLabels() {        var maxLabelWidth = 0;        var labels = [];        var i, labelGap, items;        if (self.settings.labelGapCalc === false) {          return;        }        if (self.settings.labelGapCalc === 'children') {          items = self.find('formitem');        } else {          items = self.items();        }        items.filter('formitem').each(function (item) {          var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;          maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;          labels.push(labelCtrl);        });        labelGap = self.settings.labelGap || 0;        i = labels.length;        while (i--) {          labels[i].settings.minWidth = maxLabelWidth + labelGap;        }      }      self.on('show', recalcLabels);      recalcLabels();    }  });  var FieldSet = Form.extend({    Defaults: {      containerCls: 'fieldset',      layout: 'flex',      direction: 'column',      align: 'stretch',      flex: 1,      padding: '25 15 5 15',      labelGap: 30,      spacing: 10,      border: 1    },    renderHtml: function () {      var self = this, layout = self._layout, prefix = self.classPrefix;      self.preRender();      layout.preRender(self);      return '<fieldset id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + (self.settings.title ? '<legend id="' + self._id + '-title" class="' + prefix + 'fieldset-title">' + self.settings.title + '</legend>' : '') + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</fieldset>';    }  });  var unique$1 = 0;  var generate = function (prefix) {    var date = new Date();    var time = date.getTime();    var random = Math.floor(Math.random() * 1000000000);    unique$1++;    return prefix + '_' + random + unique$1 + String(time);  };  var $_gdeezvv5jh8lz3rl = { generate: generate };  var fromHtml = function (html, scope) {    var doc = scope || document;    var div = doc.createElement('div');    div.innerHTML = html;    if (!div.hasChildNodes() || div.childNodes.length > 1) {      console.error('HTML does not have a single root node', html);      throw 'HTML must have a single root node';    }    return fromDom(div.childNodes[0]);  };  var fromTag = function (tag, scope) {    var doc = scope || document;    var node = doc.createElement(tag);    return fromDom(node);  };  var fromText = function (text, scope) {    var doc = scope || document;    var node = doc.createTextNode(text);    return fromDom(node);  };  var fromDom = function (node) {    if (node === null || node === undefined)      throw new Error('Node cannot be null or undefined');    return { dom: $_3pjweotejh8lz3k4.constant(node) };  };  var fromPoint = function (doc, x, y) {    return Option.from(doc.dom().elementFromPoint(x, y)).map(fromDom);  };  var $_3bkrfxv6jh8lz3rm = {    fromHtml: fromHtml,    fromTag: fromTag,    fromText: fromText,    fromDom: fromDom,    fromPoint: fromPoint  };  var cached = function (f) {    var called = false;    var r;    return function () {      if (!called) {        called = true;        r = f.apply(null, arguments);      }      return r;    };  };  var $_8me1xevajh8lz3s0 = { cached: cached };  var $_8xkvw6vcjh8lz3s2 = {    ATTRIBUTE: 2,    CDATA_SECTION: 4,    COMMENT: 8,    DOCUMENT: 9,    DOCUMENT_TYPE: 10,    DOCUMENT_FRAGMENT: 11,    ELEMENT: 1,    TEXT: 3,    PROCESSING_INSTRUCTION: 7,    ENTITY_REFERENCE: 5,    ENTITY: 6,    NOTATION: 12  };  var name = function (element) {    var r = element.dom().nodeName;    return r.toLowerCase();  };  var type = function (element) {    return element.dom().nodeType;  };  var value = function (element) {    return element.dom().nodeValue;  };  var isType$1 = function (t) {    return function (element) {      return type(element) === t;    };  };  var isComment = function (element) {    return type(element) === $_8xkvw6vcjh8lz3s2.COMMENT || name(element) === '#comment';  };  var isElement = isType$1($_8xkvw6vcjh8lz3s2.ELEMENT);  var isText = isType$1($_8xkvw6vcjh8lz3s2.TEXT);  var isDocument = isType$1($_8xkvw6vcjh8lz3s2.DOCUMENT);  var $_11h2nlvbjh8lz3s1 = {    name: name,    type: type,    value: value,    isElement: isElement,    isText: isText,    isDocument: isDocument,    isComment: isComment  };  var inBody = function (element) {    var dom = $_11h2nlvbjh8lz3s1.isText(element) ? element.dom().parentNode : element.dom();    return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);  };  var body = $_8me1xevajh8lz3s0.cached(function () {    return getBody($_3bkrfxv6jh8lz3rm.fromDom(document));  });  var getBody = function (doc) {    var body = doc.dom().body;    if (body === null || body === undefined)      throw 'Body is not available yet';    return $_3bkrfxv6jh8lz3rm.fromDom(body);  };  var $_35bizev9jh8lz3rx = {    body: body,    getBody: getBody,    inBody: inBody  };  function Immutable () {    var fields = [];    for (var _i = 0; _i < arguments.length; _i++) {      fields[_i] = arguments[_i];    }    return function () {      var values = [];      for (var _i = 0; _i < arguments.length; _i++) {        values[_i] = arguments[_i];      }      if (fields.length !== values.length) {        throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments');      }      var struct = {};      $_f3qxhzthjh8lz3kg.each(fields, function (name, i) {        struct[name] = $_3pjweotejh8lz3k4.constant(values[i]);      });      return struct;    };  }  var keys = function () {    var fastKeys = Object.keys;    var slowKeys = function (o) {      var r = [];      for (var i in o) {        if (o.hasOwnProperty(i)) {          r.push(i);        }      }      return r;    };    return fastKeys === undefined ? slowKeys : fastKeys;  }();  var each$1 = function (obj, f) {    var props = keys(obj);    for (var k = 0, len = props.length; k < len; k++) {      var i = props[k];      var x = obj[i];      f(x, i, obj);    }  };  var objectMap = function (obj, f) {    return tupleMap(obj, function (x, i, obj) {      return {        k: i,        v: f(x, i, obj)      };    });  };  var tupleMap = function (obj, f) {    var r = {};    each$1(obj, function (x, i) {      var tuple = f(x, i, obj);      r[tuple.k] = tuple.v;    });    return r;  };  var bifilter = function (obj, pred) {    var t = {};    var f = {};    each$1(obj, function (x, i) {      var branch = pred(x, i) ? t : f;      branch[i] = x;    });    return {      t: t,      f: f    };  };  var mapToArray = function (obj, f) {    var r = [];    each$1(obj, function (value, name) {      r.push(f(value, name));    });    return r;  };  var find$1 = function (obj, pred) {    var props = keys(obj);    for (var k = 0, len = props.length; k < len; k++) {      var i = props[k];      var x = obj[i];      if (pred(x, i, obj)) {        return Option.some(x);      }    }    return Option.none();  };  var values = function (obj) {    return mapToArray(obj, function (v) {      return v;    });  };  var size = function (obj) {    return values(obj).length;  };  var $_el35e0vhjh8lz3sl = {    bifilter: bifilter,    each: each$1,    map: objectMap,    mapToArray: mapToArray,    tupleMap: tupleMap,    find: find$1,    keys: keys,    values: values,    size: size  };  var sort$1 = function (arr) {    return arr.slice(0).sort();  };  var reqMessage = function (required, keys) {    throw new Error('All required keys (' + sort$1(required).join(', ') + ') were not specified. Specified keys were: ' + sort$1(keys).join(', ') + '.');  };  var unsuppMessage = function (unsupported) {    throw new Error('Unsupported keys for object: ' + sort$1(unsupported).join(', '));  };  var validateStrArr = function (label, array) {    if (!$_d8bie3tijh8lz3kn.isArray(array))      throw new Error('The ' + label + ' fields must be an array. Was: ' + array + '.');    $_f3qxhzthjh8lz3kg.each(array, function (a) {      if (!$_d8bie3tijh8lz3kn.isString(a))        throw new Error('The value ' + a + ' in the ' + label + ' fields was not a string.');    });  };  var invalidTypeMessage = function (incorrect, type) {    throw new Error('All values need to be of type: ' + type + '. Keys (' + sort$1(incorrect).join(', ') + ') were not.');  };  var checkDupes = function (everything) {    var sorted = sort$1(everything);    var dupe = $_f3qxhzthjh8lz3kg.find(sorted, function (s, i) {      return i < sorted.length - 1 && s === sorted[i + 1];    });    dupe.each(function (d) {      throw new Error('The field: ' + d + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].');    });  };  var $_6xoomwvijh8lz3sn = {    sort: sort$1,    reqMessage: reqMessage,    unsuppMessage: unsuppMessage,    validateStrArr: validateStrArr,    invalidTypeMessage: invalidTypeMessage,    checkDupes: checkDupes  };  function MixedBag (required, optional) {    var everything = required.concat(optional);    if (everything.length === 0)      throw new Error('You must specify at least one required or optional field.');    $_6xoomwvijh8lz3sn.validateStrArr('required', required);    $_6xoomwvijh8lz3sn.validateStrArr('optional', optional);    $_6xoomwvijh8lz3sn.checkDupes(everything);    return function (obj) {      var keys = $_el35e0vhjh8lz3sl.keys(obj);      var allReqd = $_f3qxhzthjh8lz3kg.forall(required, function (req) {        return $_f3qxhzthjh8lz3kg.contains(keys, req);      });      if (!allReqd)        $_6xoomwvijh8lz3sn.reqMessage(required, keys);      var unsupported = $_f3qxhzthjh8lz3kg.filter(keys, function (key) {        return !$_f3qxhzthjh8lz3kg.contains(everything, key);      });      if (unsupported.length > 0)        $_6xoomwvijh8lz3sn.unsuppMessage(unsupported);      var r = {};      $_f3qxhzthjh8lz3kg.each(required, function (req) {        r[req] = $_3pjweotejh8lz3k4.constant(obj[req]);      });      $_f3qxhzthjh8lz3kg.each(optional, function (opt) {        r[opt] = $_3pjweotejh8lz3k4.constant(Object.prototype.hasOwnProperty.call(obj, opt) ? Option.some(obj[opt]) : Option.none());      });      return r;    };  }  var $_57mdu6vejh8lz3sg = {    immutable: Immutable,    immutableBag: MixedBag  };  var toArray = function (target, f) {    var r = [];    var recurse = function (e) {      r.push(e);      return f(e);    };    var cur = f(target);    do {      cur = cur.bind(recurse);    } while (cur.isSome());    return r;  };  var $_861s8bvjjh8lz3sp = { toArray: toArray };  var global$15 = typeof window !== 'undefined' ? window : Function('return this;')();  var path = function (parts, scope) {    var o = scope !== undefined && scope !== null ? scope : global$15;    for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)      o = o[parts[i]];    return o;  };  var resolve = function (p, scope) {    var parts = p.split('.');    return path(parts, scope);  };  var step = function (o, part) {    if (o[part] === undefined || o[part] === null)      o[part] = {};    return o[part];  };  var forge = function (parts, target) {    var o = target !== undefined ? target : global$15;    for (var i = 0; i < parts.length; ++i)      o = step(o, parts[i]);    return o;  };  var namespace = function (name, target) {    var parts = name.split('.');    return forge(parts, target);  };  var $_1cxe7nvnjh8lz3td = {    path: path,    resolve: resolve,    forge: forge,    namespace: namespace  };  var unsafe = function (name, scope) {    return $_1cxe7nvnjh8lz3td.resolve(name, scope);  };  var getOrDie = function (name, scope) {    var actual = unsafe(name, scope);    if (actual === undefined || actual === null)      throw name + ' not available on this browser';    return actual;  };  var $_eol4qgvmjh8lz3t9 = { getOrDie: getOrDie };  var node = function () {    var f = $_eol4qgvmjh8lz3t9.getOrDie('Node');    return f;  };  var compareDocumentPosition = function (a, b, match) {    return (a.compareDocumentPosition(b) & match) !== 0;  };  var documentPositionPreceding = function (a, b) {    return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);  };  var documentPositionContainedBy = function (a, b) {    return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);  };  var $_7n27kvvljh8lz3t8 = {    documentPositionPreceding: documentPositionPreceding,    documentPositionContainedBy: documentPositionContainedBy  };  var firstMatch = function (regexes, s) {    for (var i = 0; i < regexes.length; i++) {      var x = regexes[i];      if (x.test(s))        return x;    }    return undefined;  };  var find$2 = function (regexes, agent) {    var r = firstMatch(regexes, agent);    if (!r)      return {        major: 0,        minor: 0      };    var group = function (i) {      return Number(agent.replace(r, '$' + i));    };    return nu(group(1), group(2));  };  var detect = function (versionRegexes, agent) {    var cleanedAgent = String(agent).toLowerCase();    if (versionRegexes.length === 0)      return unknown();    return find$2(versionRegexes, cleanedAgent);  };  var unknown = function () {    return nu(0, 0);  };  var nu = function (major, minor) {    return {      major: major,      minor: minor    };  };  var $_afos0kvsjh8lz3tm = {    nu: nu,    detect: detect,    unknown: unknown  };  var edge = 'Edge';  var chrome = 'Chrome';  var ie = 'IE';  var opera = 'Opera';  var firefox = 'Firefox';  var safari = 'Safari';  var isBrowser = function (name, current) {    return function () {      return current === name;    };  };  var unknown$1 = function () {    return nu$1({      current: undefined,      version: $_afos0kvsjh8lz3tm.unknown()    });  };  var nu$1 = function (info) {    var current = info.current;    var version = info.version;    return {      current: current,      version: version,      isEdge: isBrowser(edge, current),      isChrome: isBrowser(chrome, current),      isIE: isBrowser(ie, current),      isOpera: isBrowser(opera, current),      isFirefox: isBrowser(firefox, current),      isSafari: isBrowser(safari, current)    };  };  var $_fidpetvrjh8lz3tj = {    unknown: unknown$1,    nu: nu$1,    edge: $_3pjweotejh8lz3k4.constant(edge),    chrome: $_3pjweotejh8lz3k4.constant(chrome),    ie: $_3pjweotejh8lz3k4.constant(ie),    opera: $_3pjweotejh8lz3k4.constant(opera),    firefox: $_3pjweotejh8lz3k4.constant(firefox),    safari: $_3pjweotejh8lz3k4.constant(safari)  };  var windows$1 = 'Windows';  var ios = 'iOS';  var android = 'Android';  var linux = 'Linux';  var osx = 'OSX';  var solaris = 'Solaris';  var freebsd = 'FreeBSD';  var isOS = function (name, current) {    return function () {      return current === name;    };  };  var unknown$2 = function () {    return nu$2({      current: undefined,      version: $_afos0kvsjh8lz3tm.unknown()    });  };  var nu$2 = function (info) {    var current = info.current;    var version = info.version;    return {      current: current,      version: version,      isWindows: isOS(windows$1, current),      isiOS: isOS(ios, current),      isAndroid: isOS(android, current),      isOSX: isOS(osx, current),      isLinux: isOS(linux, current),      isSolaris: isOS(solaris, current),      isFreeBSD: isOS(freebsd, current)    };  };  var $_1z8n9kvtjh8lz3to = {    unknown: unknown$2,    nu: nu$2,    windows: $_3pjweotejh8lz3k4.constant(windows$1),    ios: $_3pjweotejh8lz3k4.constant(ios),    android: $_3pjweotejh8lz3k4.constant(android),    linux: $_3pjweotejh8lz3k4.constant(linux),    osx: $_3pjweotejh8lz3k4.constant(osx),    solaris: $_3pjweotejh8lz3k4.constant(solaris),    freebsd: $_3pjweotejh8lz3k4.constant(freebsd)  };  function DeviceType (os, browser, userAgent) {    var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;    var isiPhone = os.isiOS() && !isiPad;    var isAndroid3 = os.isAndroid() && os.version.major === 3;    var isAndroid4 = os.isAndroid() && os.version.major === 4;    var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;    var isTouch = os.isiOS() || os.isAndroid();    var isPhone = isTouch && !isTablet;    var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;    return {      isiPad: $_3pjweotejh8lz3k4.constant(isiPad),      isiPhone: $_3pjweotejh8lz3k4.constant(isiPhone),      isTablet: $_3pjweotejh8lz3k4.constant(isTablet),      isPhone: $_3pjweotejh8lz3k4.constant(isPhone),      isTouch: $_3pjweotejh8lz3k4.constant(isTouch),      isAndroid: os.isAndroid,      isiOS: os.isiOS,      isWebView: $_3pjweotejh8lz3k4.constant(iOSwebview)    };  }  var detect$1 = function (candidates, userAgent) {    var agent = String(userAgent).toLowerCase();    return $_f3qxhzthjh8lz3kg.find(candidates, function (candidate) {      return candidate.search(agent);    });  };  var detectBrowser = function (browsers, userAgent) {    return detect$1(browsers, userAgent).map(function (browser) {      var version = $_afos0kvsjh8lz3tm.detect(browser.versionRegexes, userAgent);      return {        current: browser.name,        version: version      };    });  };  var detectOs = function (oses, userAgent) {    return detect$1(oses, userAgent).map(function (os) {      var version = $_afos0kvsjh8lz3tm.detect(os.versionRegexes, userAgent);      return {        current: os.name,        version: version      };    });  };  var $_bvrih8vvjh8lz3tv = {    detectBrowser: detectBrowser,    detectOs: detectOs  };  var addToStart = function (str, prefix) {    return prefix + str;  };  var addToEnd = function (str, suffix) {    return str + suffix;  };  var removeFromStart = function (str, numChars) {    return str.substring(numChars);  };  var removeFromEnd = function (str, numChars) {    return str.substring(0, str.length - numChars);  };  var $_enj27ovyjh8lz3u7 = {    addToStart: addToStart,    addToEnd: addToEnd,    removeFromStart: removeFromStart,    removeFromEnd: removeFromEnd  };  var first = function (str, count) {    return str.substr(0, count);  };  var last$1 = function (str, count) {    return str.substr(str.length - count, str.length);  };  var head$1 = function (str) {    return str === '' ? Option.none() : Option.some(str.substr(0, 1));  };  var tail = function (str) {    return str === '' ? Option.none() : Option.some(str.substring(1));  };  var $_49etxbvzjh8lz3u8 = {    first: first,    last: last$1,    head: head$1,    tail: tail  };  var checkRange = function (str, substr, start) {    if (substr === '')      return true;    if (str.length < substr.length)      return false;    var x = str.substr(start, start + substr.length);    return x === substr;  };  var supplant = function (str, obj) {    var isStringOrNumber = function (a) {      var t = typeof a;      return t === 'string' || t === 'number';    };    return str.replace(/\${([^{}]*)}/g, function (a, b) {      var value = obj[b];      return isStringOrNumber(value) ? value : a;    });  };  var removeLeading = function (str, prefix) {    return startsWith(str, prefix) ? $_enj27ovyjh8lz3u7.removeFromStart(str, prefix.length) : str;  };  var removeTrailing = function (str, prefix) {    return endsWith(str, prefix) ? $_enj27ovyjh8lz3u7.removeFromEnd(str, prefix.length) : str;  };  var ensureLeading = function (str, prefix) {    return startsWith(str, prefix) ? str : $_enj27ovyjh8lz3u7.addToStart(str, prefix);  };  var ensureTrailing = function (str, prefix) {    return endsWith(str, prefix) ? str : $_enj27ovyjh8lz3u7.addToEnd(str, prefix);  };  var contains$1 = function (str, substr) {    return str.indexOf(substr) !== -1;  };  var capitalize = function (str) {    return $_49etxbvzjh8lz3u8.head(str).bind(function (head) {      return $_49etxbvzjh8lz3u8.tail(str).map(function (tail) {        return head.toUpperCase() + tail;      });    }).getOr(str);  };  var startsWith = function (str, prefix) {    return checkRange(str, prefix, 0);  };  var endsWith = function (str, suffix) {    return checkRange(str, suffix, str.length - suffix.length);  };  var trim = function (str) {    return str.replace(/^\s+|\s+$/g, '');  };  var lTrim = function (str) {    return str.replace(/^\s+/g, '');  };  var rTrim = function (str) {    return str.replace(/\s+$/g, '');  };  var $_2absfgvxjh8lz3u4 = {    supplant: supplant,    startsWith: startsWith,    removeLeading: removeLeading,    removeTrailing: removeTrailing,    ensureLeading: ensureLeading,    ensureTrailing: ensureTrailing,    endsWith: endsWith,    contains: contains$1,    trim: trim,    lTrim: lTrim,    rTrim: rTrim,    capitalize: capitalize  };  var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;  var checkContains = function (target) {    return function (uastring) {      return $_2absfgvxjh8lz3u4.contains(uastring, target);    };  };  var browsers = [    {      name: 'Edge',      versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],      search: function (uastring) {        var monstrosity = $_2absfgvxjh8lz3u4.contains(uastring, 'edge/') && $_2absfgvxjh8lz3u4.contains(uastring, 'chrome') && $_2absfgvxjh8lz3u4.contains(uastring, 'safari') && $_2absfgvxjh8lz3u4.contains(uastring, 'applewebkit');        return monstrosity;      }    },    {      name: 'Chrome',      versionRegexes: [        /.*?chrome\/([0-9]+)\.([0-9]+).*/,        normalVersionRegex      ],      search: function (uastring) {        return $_2absfgvxjh8lz3u4.contains(uastring, 'chrome') && !$_2absfgvxjh8lz3u4.contains(uastring, 'chromeframe');      }    },    {      name: 'IE',      versionRegexes: [        /.*?msie\ ?([0-9]+)\.([0-9]+).*/,        /.*?rv:([0-9]+)\.([0-9]+).*/      ],      search: function (uastring) {        return $_2absfgvxjh8lz3u4.contains(uastring, 'msie') || $_2absfgvxjh8lz3u4.contains(uastring, 'trident');      }    },    {      name: 'Opera',      versionRegexes: [        normalVersionRegex,        /.*?opera\/([0-9]+)\.([0-9]+).*/      ],      search: checkContains('opera')    },    {      name: 'Firefox',      versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],      search: checkContains('firefox')    },    {      name: 'Safari',      versionRegexes: [        normalVersionRegex,        /.*?cpu os ([0-9]+)_([0-9]+).*/      ],      search: function (uastring) {        return ($_2absfgvxjh8lz3u4.contains(uastring, 'safari') || $_2absfgvxjh8lz3u4.contains(uastring, 'mobile/')) && $_2absfgvxjh8lz3u4.contains(uastring, 'applewebkit');      }    }  ];  var oses = [    {      name: 'Windows',      search: checkContains('win'),      versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]    },    {      name: 'iOS',      search: function (uastring) {        return $_2absfgvxjh8lz3u4.contains(uastring, 'iphone') || $_2absfgvxjh8lz3u4.contains(uastring, 'ipad');      },      versionRegexes: [        /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,        /.*cpu os ([0-9]+)_([0-9]+).*/,        /.*cpu iphone os ([0-9]+)_([0-9]+).*/      ]    },    {      name: 'Android',      search: checkContains('android'),      versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]    },    {      name: 'OSX',      search: checkContains('os x'),      versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]    },    {      name: 'Linux',      search: checkContains('linux'),      versionRegexes: []    },    {      name: 'Solaris',      search: checkContains('sunos'),      versionRegexes: []    },    {      name: 'FreeBSD',      search: checkContains('freebsd'),      versionRegexes: []    }  ];  var $_dne06dvwjh8lz3ty = {    browsers: $_3pjweotejh8lz3k4.constant(browsers),    oses: $_3pjweotejh8lz3k4.constant(oses)  };  var detect$2 = function (userAgent) {    var browsers = $_dne06dvwjh8lz3ty.browsers();    var oses = $_dne06dvwjh8lz3ty.oses();    var browser = $_bvrih8vvjh8lz3tv.detectBrowser(browsers, userAgent).fold($_fidpetvrjh8lz3tj.unknown, $_fidpetvrjh8lz3tj.nu);    var os = $_bvrih8vvjh8lz3tv.detectOs(oses, userAgent).fold($_1z8n9kvtjh8lz3to.unknown, $_1z8n9kvtjh8lz3to.nu);    var deviceType = DeviceType(os, browser, userAgent);    return {      browser: browser,      os: os,      deviceType: deviceType    };  };  var $_8gsy8vqjh8lz3ti = { detect: detect$2 };  var detect$3 = $_8me1xevajh8lz3s0.cached(function () {    var userAgent = navigator.userAgent;    return $_8gsy8vqjh8lz3ti.detect(userAgent);  });  var $_2rbkegvpjh8lz3tf = { detect: detect$3 };  var ELEMENT = $_8xkvw6vcjh8lz3s2.ELEMENT;  var DOCUMENT = $_8xkvw6vcjh8lz3s2.DOCUMENT;  var is = function (element, selector) {    var elem = element.dom();    if (elem.nodeType !== ELEMENT)      return false;    else if (elem.matches !== undefined)      return elem.matches(selector);    else if (elem.msMatchesSelector !== undefined)      return elem.msMatchesSelector(selector);    else if (elem.webkitMatchesSelector !== undefined)      return elem.webkitMatchesSelector(selector);    else if (elem.mozMatchesSelector !== undefined)      return elem.mozMatchesSelector(selector);    else      throw new Error('Browser lacks native selectors');  };  var bypassSelector = function (dom) {    return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || dom.childElementCount === 0;  };  var all = function (selector, scope) {    var base = scope === undefined ? document : scope.dom();    return bypassSelector(base) ? [] : $_f3qxhzthjh8lz3kg.map(base.querySelectorAll(selector), $_3bkrfxv6jh8lz3rm.fromDom);  };  var one = function (selector, scope) {    var base = scope === undefined ? document : scope.dom();    return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map($_3bkrfxv6jh8lz3rm.fromDom);  };  var $_2nczsvw0jh8lz3ua = {    all: all,    is: is,    one: one  };  var eq = function (e1, e2) {    return e1.dom() === e2.dom();  };  var isEqualNode = function (e1, e2) {    return e1.dom().isEqualNode(e2.dom());  };  var member = function (element, elements) {    return $_f3qxhzthjh8lz3kg.exists(elements, $_3pjweotejh8lz3k4.curry(eq, element));  };  var regularContains = function (e1, e2) {    var d1 = e1.dom(), d2 = e2.dom();    return d1 === d2 ? false : d1.contains(d2);  };  var ieContains = function (e1, e2) {    return $_7n27kvvljh8lz3t8.documentPositionContainedBy(e1.dom(), e2.dom());  };  var browser = $_2rbkegvpjh8lz3tf.detect().browser;  var contains$2 = browser.isIE() ? ieContains : regularContains;  var $_9ypjy6vkjh8lz3sq = {    eq: eq,    isEqualNode: isEqualNode,    member: member,    contains: contains$2,    is: $_2nczsvw0jh8lz3ua.is  };  var owner = function (element) {    return $_3bkrfxv6jh8lz3rm.fromDom(element.dom().ownerDocument);  };  var documentElement = function (element) {    var doc = owner(element);    return $_3bkrfxv6jh8lz3rm.fromDom(doc.dom().documentElement);  };  var defaultView = function (element) {    var el = element.dom();    var defaultView = el.ownerDocument.defaultView;    return $_3bkrfxv6jh8lz3rm.fromDom(defaultView);  };  var parent = function (element) {    var dom = element.dom();    return Option.from(dom.parentNode).map($_3bkrfxv6jh8lz3rm.fromDom);  };  var findIndex$1 = function (element) {    return parent(element).bind(function (p) {      var kin = children(p);      return $_f3qxhzthjh8lz3kg.findIndex(kin, function (elem) {        return $_9ypjy6vkjh8lz3sq.eq(element, elem);      });    });  };  var parents = function (element, isRoot) {    var stop = $_d8bie3tijh8lz3kn.isFunction(isRoot) ? isRoot : $_3pjweotejh8lz3k4.constant(false);    var dom = element.dom();    var ret = [];    while (dom.parentNode !== null && dom.parentNode !== undefined) {      var rawParent = dom.parentNode;      var parent = $_3bkrfxv6jh8lz3rm.fromDom(rawParent);      ret.push(parent);      if (stop(parent) === true)        break;      else        dom = rawParent;    }    return ret;  };  var siblings = function (element) {    var filterSelf = function (elements) {      return $_f3qxhzthjh8lz3kg.filter(elements, function (x) {        return !$_9ypjy6vkjh8lz3sq.eq(element, x);      });    };    return parent(element).map(children).map(filterSelf).getOr([]);  };  var offsetParent = function (element) {    var dom = element.dom();    return Option.from(dom.offsetParent).map($_3bkrfxv6jh8lz3rm.fromDom);  };  var prevSibling = function (element) {    var dom = element.dom();    return Option.from(dom.previousSibling).map($_3bkrfxv6jh8lz3rm.fromDom);  };  var nextSibling = function (element) {    var dom = element.dom();    return Option.from(dom.nextSibling).map($_3bkrfxv6jh8lz3rm.fromDom);  };  var prevSiblings = function (element) {    return $_f3qxhzthjh8lz3kg.reverse($_861s8bvjjh8lz3sp.toArray(element, prevSibling));  };  var nextSiblings = function (element) {    return $_861s8bvjjh8lz3sp.toArray(element, nextSibling);  };  var children = function (element) {    var dom = element.dom();    return $_f3qxhzthjh8lz3kg.map(dom.childNodes, $_3bkrfxv6jh8lz3rm.fromDom);  };  var child = function (element, index) {    var children = element.dom().childNodes;    return Option.from(children[index]).map($_3bkrfxv6jh8lz3rm.fromDom);  };  var firstChild = function (element) {    return child(element, 0);  };  var lastChild = function (element) {    return child(element, element.dom().childNodes.length - 1);  };  var childNodesCount = function (element) {    return element.dom().childNodes.length;  };  var hasChildNodes = function (element) {    return element.dom().hasChildNodes();  };  var spot = $_57mdu6vejh8lz3sg.immutable('element', 'offset');  var leaf = function (element, offset) {    var cs = children(element);    return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset);  };  var $_3jmbxmvdjh8lz3s4 = {    owner: owner,    defaultView: defaultView,    documentElement: documentElement,    parent: parent,    findIndex: findIndex$1,    parents: parents,    siblings: siblings,    prevSibling: prevSibling,    offsetParent: offsetParent,    prevSiblings: prevSiblings,    nextSibling: nextSibling,    nextSiblings: nextSiblings,    children: children,    child: child,    firstChild: firstChild,    lastChild: lastChild,    childNodesCount: childNodesCount,    hasChildNodes: hasChildNodes,    leaf: leaf  };  var all$1 = function (predicate) {    return descendants($_35bizev9jh8lz3rx.body(), predicate);  };  var ancestors = function (scope, predicate, isRoot) {    return $_f3qxhzthjh8lz3kg.filter($_3jmbxmvdjh8lz3s4.parents(scope, isRoot), predicate);  };  var siblings$1 = function (scope, predicate) {    return $_f3qxhzthjh8lz3kg.filter($_3jmbxmvdjh8lz3s4.siblings(scope), predicate);  };  var children$1 = function (scope, predicate) {    return $_f3qxhzthjh8lz3kg.filter($_3jmbxmvdjh8lz3s4.children(scope), predicate);  };  var descendants = function (scope, predicate) {    var result = [];    $_f3qxhzthjh8lz3kg.each($_3jmbxmvdjh8lz3s4.children(scope), function (x) {      if (predicate(x)) {        result = result.concat([x]);      }      result = result.concat(descendants(x, predicate));    });    return result;  };  var $_dz5cwuv8jh8lz3rt = {    all: all$1,    ancestors: ancestors,    siblings: siblings$1,    children: children$1,    descendants: descendants  };  var all$2 = function (selector) {    return $_2nczsvw0jh8lz3ua.all(selector);  };  var ancestors$1 = function (scope, selector, isRoot) {    return $_dz5cwuv8jh8lz3rt.ancestors(scope, function (e) {      return $_2nczsvw0jh8lz3ua.is(e, selector);    }, isRoot);  };  var siblings$2 = function (scope, selector) {    return $_dz5cwuv8jh8lz3rt.siblings(scope, function (e) {      return $_2nczsvw0jh8lz3ua.is(e, selector);    });  };  var children$2 = function (scope, selector) {    return $_dz5cwuv8jh8lz3rt.children(scope, function (e) {      return $_2nczsvw0jh8lz3ua.is(e, selector);    });  };  var descendants$1 = function (scope, selector) {    return $_2nczsvw0jh8lz3ua.all(selector, scope);  };  var $_am3j0fv7jh8lz3rs = {    all: all$2,    ancestors: ancestors$1,    siblings: siblings$2,    children: children$2,    descendants: descendants$1  };  var trim$1 = global$2.trim;  var hasContentEditableState = function (value) {    return function (node) {      if (node && node.nodeType === 1) {        if (node.contentEditable === value) {          return true;        }        if (node.getAttribute('data-mce-contenteditable') === value) {          return true;        }      }      return false;    };  };  var isContentEditableTrue = hasContentEditableState('true');  var isContentEditableFalse = hasContentEditableState('false');  var create = function (type, title, url, level, attach) {    return {      type: type,      title: title,      url: url,      level: level,      attach: attach    };  };  var isChildOfContentEditableTrue = function (node) {    while (node = node.parentNode) {      var value = node.contentEditable;      if (value && value !== 'inherit') {        return isContentEditableTrue(node);      }    }    return false;  };  var select = function (selector, root) {    return $_f3qxhzthjh8lz3kg.map($_am3j0fv7jh8lz3rs.descendants($_3bkrfxv6jh8lz3rm.fromDom(root), selector), function (element) {      return element.dom();    });  };  var getElementText = function (elm) {    return elm.innerText || elm.textContent;  };  var getOrGenerateId = function (elm) {    return elm.id ? elm.id : $_gdeezvv5jh8lz3rl.generate('h');  };  var isAnchor = function (elm) {    return elm && elm.nodeName === 'A' && (elm.id || elm.name);  };  var isValidAnchor = function (elm) {    return isAnchor(elm) && isEditable(elm);  };  var isHeader = function (elm) {    return elm && /^(H[1-6])$/.test(elm.nodeName);  };  var isEditable = function (elm) {    return isChildOfContentEditableTrue(elm) && !isContentEditableFalse(elm);  };  var isValidHeader = function (elm) {    return isHeader(elm) && isEditable(elm);  };  var getLevel = function (elm) {    return isHeader(elm) ? parseInt(elm.nodeName.substr(1), 10) : 0;  };  var headerTarget = function (elm) {    var headerId = getOrGenerateId(elm);    var attach = function () {      elm.id = headerId;    };    return create('header', getElementText(elm), '#' + headerId, getLevel(elm), attach);  };  var anchorTarget = function (elm) {    var anchorId = elm.id || elm.name;    var anchorText = getElementText(elm);    return create('anchor', anchorText ? anchorText : '#' + anchorId, '#' + anchorId, 0, $_3pjweotejh8lz3k4.noop);  };  var getHeaderTargets = function (elms) {    return $_f3qxhzthjh8lz3kg.map($_f3qxhzthjh8lz3kg.filter(elms, isValidHeader), headerTarget);  };  var getAnchorTargets = function (elms) {    return $_f3qxhzthjh8lz3kg.map($_f3qxhzthjh8lz3kg.filter(elms, isValidAnchor), anchorTarget);  };  var getTargetElements = function (elm) {    var elms = select('h1,h2,h3,h4,h5,h6,a:not([href])', elm);    return elms;  };  var hasTitle = function (target) {    return trim$1(target.title).length > 0;  };  var find$3 = function (elm) {    var elms = getTargetElements(elm);    return $_f3qxhzthjh8lz3kg.filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);  };  var $_p3wpev4jh8lz3ra = { find: find$3 };  var getActiveEditor = function () {    return window.tinymce ? window.tinymce.activeEditor : global$1.activeEditor;  };  var history = {};  var HISTORY_LENGTH = 5;  var clearHistory = function () {    history = {};  };  var toMenuItem = function (target) {    return {      title: target.title,      value: {        title: { raw: target.title },        url: target.url,        attach: target.attach      }    };  };  var toMenuItems = function (targets) {    return global$2.map(targets, toMenuItem);  };  var staticMenuItem = function (title, url) {    return {      title: title,      value: {        title: title,        url: url,        attach: $_3pjweotejh8lz3k4.noop      }    };  };  var isUniqueUrl = function (url, targets) {    var foundTarget = $_f3qxhzthjh8lz3kg.exists(targets, function (target) {      return target.url === url;    });    return !foundTarget;  };  var getSetting = function (editorSettings, name, defaultValue) {    var value = name in editorSettings ? editorSettings[name] : defaultValue;    return value === false ? null : value;  };  var createMenuItems = function (term, targets, fileType, editorSettings) {    var separator = { title: '-' };    var fromHistoryMenuItems = function (history) {      var historyItems = history.hasOwnProperty(fileType) ? history[fileType] : [];      var uniqueHistory = $_f3qxhzthjh8lz3kg.filter(historyItems, function (url) {        return isUniqueUrl(url, targets);      });      return global$2.map(uniqueHistory, function (url) {        return {          title: url,          value: {            title: url,            url: url,            attach: $_3pjweotejh8lz3k4.noop          }        };      });    };    var fromMenuItems = function (type) {      var filteredTargets = $_f3qxhzthjh8lz3kg.filter(targets, function (target) {        return target.type === type;      });      return toMenuItems(filteredTargets);    };    var anchorMenuItems = function () {      var anchorMenuItems = fromMenuItems('anchor');      var topAnchor = getSetting(editorSettings, 'anchor_top', '#top');      var bottomAchor = getSetting(editorSettings, 'anchor_bottom', '#bottom');      if (topAnchor !== null) {        anchorMenuItems.unshift(staticMenuItem('<top>', topAnchor));      }      if (bottomAchor !== null) {        anchorMenuItems.push(staticMenuItem('<bottom>', bottomAchor));      }      return anchorMenuItems;    };    var join = function (items) {      return $_f3qxhzthjh8lz3kg.foldl(items, function (a, b) {        var bothEmpty = a.length === 0 || b.length === 0;        return bothEmpty ? a.concat(b) : a.concat(separator, b);      }, []);    };    if (editorSettings.typeahead_urls === false) {      return [];    }    return fileType === 'file' ? join([      filterByQuery(term, fromHistoryMenuItems(history)),      filterByQuery(term, fromMenuItems('header')),      filterByQuery(term, anchorMenuItems())    ]) : filterByQuery(term, fromHistoryMenuItems(history));  };  var addToHistory = function (url, fileType) {    var items = history[fileType];    if (!/^https?/.test(url)) {      return;    }    if (items) {      if ($_f3qxhzthjh8lz3kg.indexOf(items, url).isNone()) {        history[fileType] = items.slice(0, HISTORY_LENGTH).concat(url);      }    } else {      history[fileType] = [url];    }  };  var filterByQuery = function (term, menuItems) {    var lowerCaseTerm = term.toLowerCase();    var result = global$2.grep(menuItems, function (item) {      return item.title.toLowerCase().indexOf(lowerCaseTerm) !== -1;    });    return result.length === 1 && result[0].title === term ? [] : result;  };  var getTitle = function (linkDetails) {    var title = linkDetails.title;    return title.raw ? title.raw : title;  };  var setupAutoCompleteHandler = function (ctrl, editorSettings, bodyElm, fileType) {    var autocomplete = function (term) {      var linkTargets = $_p3wpev4jh8lz3ra.find(bodyElm);      var menuItems = createMenuItems(term, linkTargets, fileType, editorSettings);      ctrl.showAutoComplete(menuItems, term);    };    ctrl.on('autocomplete', function () {      autocomplete(ctrl.value());    });    ctrl.on('selectitem', function (e) {      var linkDetails = e.value;      ctrl.value(linkDetails.url);      var title = getTitle(linkDetails);      if (fileType === 'image') {        ctrl.fire('change', {          meta: {            alt: title,            attach: linkDetails.attach          }        });      } else {        ctrl.fire('change', {          meta: {            text: title,            attach: linkDetails.attach          }        });      }      ctrl.focus();    });    ctrl.on('click', function (e) {      if (ctrl.value().length === 0 && e.target.nodeName === 'INPUT') {        autocomplete('');      }    });    ctrl.on('PostRender', function () {      ctrl.getRoot().on('submit', function (e) {        if (!e.isDefaultPrevented()) {          addToHistory(ctrl.value(), fileType);        }      });    });  };  var statusToUiState = function (result) {    var status = result.status, message = result.message;    if (status === 'valid') {      return {        status: 'ok',        message: message      };    } else if (status === 'unknown') {      return {        status: 'warn',        message: message      };    } else if (status === 'invalid') {      return {        status: 'warn',        message: message      };    } else {      return {        status: 'none',        message: ''      };    }  };  var setupLinkValidatorHandler = function (ctrl, editorSettings, fileType) {    var validatorHandler = editorSettings.filepicker_validator_handler;    if (validatorHandler) {      var validateUrl_1 = function (url) {        if (url.length === 0) {          ctrl.statusLevel('none');          return;        }        validatorHandler({          url: url,          type: fileType        }, function (result) {          var uiState = statusToUiState(result);          ctrl.statusMessage(uiState.message);          ctrl.statusLevel(uiState.status);        });      };      ctrl.state.on('change:value', function (e) {        validateUrl_1(e.value);      });    }  };  var FilePicker = ComboBox.extend({    Statics: { clearHistory: clearHistory },    init: function (settings) {      var self = this, editor = getActiveEditor(), editorSettings = editor.settings;      var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;      var fileType = settings.filetype;      settings.spellcheck = false;      fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;      if (fileBrowserCallbackTypes) {        fileBrowserCallbackTypes = global$2.makeMap(fileBrowserCallbackTypes, /[, ]/);      }      if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType]) {        fileBrowserCallback = editorSettings.file_picker_callback;        if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {          actionCallback = function () {            var meta = self.fire('beforecall').meta;            meta = global$2.extend({ filetype: fileType }, meta);            fileBrowserCallback.call(editor, function (value, meta) {              self.value(value).fire('change', { meta: meta });            }, self.value(), meta);          };        } else {          fileBrowserCallback = editorSettings.file_browser_callback;          if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {            actionCallback = function () {              fileBrowserCallback(self.getEl('inp').id, self.value(), fileType, window);            };          }        }      }      if (actionCallback) {        settings.icon = 'browse';        settings.onaction = actionCallback;      }      self._super(settings);      self.classes.add('filepicker');      setupAutoCompleteHandler(self, editorSettings, editor.getBody(), fileType);      setupLinkValidatorHandler(self, editorSettings, fileType);    }  });  var FitLayout = AbsoluteLayout.extend({    recalc: function (container) {      var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox;      container.items().filter(':visible').each(function (ctrl) {        ctrl.layoutRect({          x: paddingBox.left,          y: paddingBox.top,          w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,          h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom        });        if (ctrl.recalc) {          ctrl.recalc();        }      });    }  });  var FlexLayout = AbsoluteLayout.extend({    recalc: function (container) {      var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;      var ctrl, ctrlLayoutRect, ctrlSettings, flex;      var maxSizeItems = [];      var size, maxSize, ratio, rect, pos, maxAlignEndPos;      var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;      var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;      var alignDeltaSizeName, alignContentSizeName;      var max = Math.max, min = Math.min;      items = container.items().filter(':visible');      contLayoutRect = container.layoutRect();      contPaddingBox = container.paddingBox;      contSettings = container.settings;      direction = container.isRtl() ? contSettings.direction || 'row-reversed' : contSettings.direction;      align = contSettings.align;      pack = container.isRtl() ? contSettings.pack || 'end' : contSettings.pack;      spacing = contSettings.spacing || 0;      if (direction === 'row-reversed' || direction === 'column-reverse') {        items = items.set(items.toArray().reverse());        direction = direction.split('-')[0];      }      if (direction === 'column') {        posName = 'y';        sizeName = 'h';        minSizeName = 'minH';        maxSizeName = 'maxH';        innerSizeName = 'innerH';        beforeName = 'top';        deltaSizeName = 'deltaH';        contentSizeName = 'contentH';        alignBeforeName = 'left';        alignSizeName = 'w';        alignAxisName = 'x';        alignInnerSizeName = 'innerW';        alignMinSizeName = 'minW';        alignAfterName = 'right';        alignDeltaSizeName = 'deltaW';        alignContentSizeName = 'contentW';      } else {        posName = 'x';        sizeName = 'w';        minSizeName = 'minW';        maxSizeName = 'maxW';        innerSizeName = 'innerW';        beforeName = 'left';        deltaSizeName = 'deltaW';        contentSizeName = 'contentW';        alignBeforeName = 'top';        alignSizeName = 'h';        alignAxisName = 'y';        alignInnerSizeName = 'innerH';        alignMinSizeName = 'minH';        alignAfterName = 'bottom';        alignDeltaSizeName = 'deltaH';        alignContentSizeName = 'contentH';      }      availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];      maxAlignEndPos = totalFlex = 0;      for (i = 0, l = items.length; i < l; i++) {        ctrl = items[i];        ctrlLayoutRect = ctrl.layoutRect();        ctrlSettings = ctrl.settings;        flex = ctrlSettings.flex;        availableSpace -= i < l - 1 ? spacing : 0;        if (flex > 0) {          totalFlex += flex;          if (ctrlLayoutRect[maxSizeName]) {            maxSizeItems.push(ctrl);          }          ctrlLayoutRect.flex = flex;        }        availableSpace -= ctrlLayoutRect[minSizeName];        size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];        if (size > maxAlignEndPos) {          maxAlignEndPos = size;        }      }      rect = {};      if (availableSpace < 0) {        rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];      } else {        rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];      }      rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];      rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;      rect[alignContentSizeName] = maxAlignEndPos;      rect.minW = min(rect.minW, contLayoutRect.maxW);      rect.minH = min(rect.minH, contLayoutRect.maxH);      rect.minW = max(rect.minW, contLayoutRect.startMinWidth);      rect.minH = max(rect.minH, contLayoutRect.startMinHeight);      if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {        rect.w = rect.minW;        rect.h = rect.minH;        container.layoutRect(rect);        this.recalc(container);        if (container._lastRect === null) {          var parentCtrl = container.parent();          if (parentCtrl) {            parentCtrl._lastRect = null;            parentCtrl.recalc();          }        }        return;      }      ratio = availableSpace / totalFlex;      for (i = 0, l = maxSizeItems.length; i < l; i++) {        ctrl = maxSizeItems[i];        ctrlLayoutRect = ctrl.layoutRect();        maxSize = ctrlLayoutRect[maxSizeName];        size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;        if (size > maxSize) {          availableSpace -= ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName];          totalFlex -= ctrlLayoutRect.flex;          ctrlLayoutRect.flex = 0;          ctrlLayoutRect.maxFlexSize = maxSize;        } else {          ctrlLayoutRect.maxFlexSize = 0;        }      }      ratio = availableSpace / totalFlex;      pos = contPaddingBox[beforeName];      rect = {};      if (totalFlex === 0) {        if (pack === 'end') {          pos = availableSpace + contPaddingBox[beforeName];        } else if (pack === 'center') {          pos = Math.round(contLayoutRect[innerSizeName] / 2 - (contLayoutRect[innerSizeName] - availableSpace) / 2) + contPaddingBox[beforeName];          if (pos < 0) {            pos = contPaddingBox[beforeName];          }        } else if (pack === 'justify') {          pos = contPaddingBox[beforeName];          spacing = Math.floor(availableSpace / (items.length - 1));        }      }      rect[alignAxisName] = contPaddingBox[alignBeforeName];      for (i = 0, l = items.length; i < l; i++) {        ctrl = items[i];        ctrlLayoutRect = ctrl.layoutRect();        size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];        if (align === 'center') {          rect[alignAxisName] = Math.round(contLayoutRect[alignInnerSizeName] / 2 - ctrlLayoutRect[alignSizeName] / 2);        } else if (align === 'stretch') {          rect[alignSizeName] = max(ctrlLayoutRect[alignMinSizeName] || 0, contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]);          rect[alignAxisName] = contPaddingBox[alignBeforeName];        } else if (align === 'end') {          rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;        }        if (ctrlLayoutRect.flex > 0) {          size += ctrlLayoutRect.flex * ratio;        }        rect[sizeName] = size;        rect[posName] = pos;        ctrl.layoutRect(rect);        if (ctrl.recalc) {          ctrl.recalc();        }        pos += size + spacing;      }    }  });  var FlowLayout = Layout.extend({    Defaults: {      containerClass: 'flow-layout',      controlClass: 'flow-layout-item',      endClass: 'break'    },    recalc: function (container) {      container.items().filter(':visible').each(function (ctrl) {        if (ctrl.recalc) {          ctrl.recalc();        }      });    },    isNative: function () {      return true;    }  });  function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {    return is(scope, a) ? Option.some(scope) : $_d8bie3tijh8lz3kn.isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);  }  var first$1 = function (predicate) {    return descendant($_35bizev9jh8lz3rx.body(), predicate);  };  var ancestor = function (scope, predicate, isRoot) {    var element = scope.dom();    var stop = $_d8bie3tijh8lz3kn.isFunction(isRoot) ? isRoot : $_3pjweotejh8lz3k4.constant(false);    while (element.parentNode) {      element = element.parentNode;      var el = $_3bkrfxv6jh8lz3rm.fromDom(element);      if (predicate(el))        return Option.some(el);      else if (stop(el))        break;    }    return Option.none();  };  var closest = function (scope, predicate, isRoot) {    var is = function (scope) {      return predicate(scope);    };    return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);  };  var sibling = function (scope, predicate) {    var element = scope.dom();    if (!element.parentNode)      return Option.none();    return child$1($_3bkrfxv6jh8lz3rm.fromDom(element.parentNode), function (x) {      return !$_9ypjy6vkjh8lz3sq.eq(scope, x) && predicate(x);    });  };  var child$1 = function (scope, predicate) {    var result = $_f3qxhzthjh8lz3kg.find(scope.dom().childNodes, $_3pjweotejh8lz3k4.compose(predicate, $_3bkrfxv6jh8lz3rm.fromDom));    return result.map($_3bkrfxv6jh8lz3rm.fromDom);  };  var descendant = function (scope, predicate) {    var descend = function (element) {      for (var i = 0; i < element.childNodes.length; i++) {        if (predicate($_3bkrfxv6jh8lz3rm.fromDom(element.childNodes[i])))          return Option.some($_3bkrfxv6jh8lz3rm.fromDom(element.childNodes[i]));        var res = descend(element.childNodes[i]);        if (res.isSome())          return res;      }      return Option.none();    };    return descend(scope.dom());  };  var $_5a72sw6jh8lz3uv = {    first: first$1,    ancestor: ancestor,    closest: closest,    sibling: sibling,    child: child$1,    descendant: descendant  };  var first$2 = function (selector) {    return $_2nczsvw0jh8lz3ua.one(selector);  };  var ancestor$1 = function (scope, selector, isRoot) {    return $_5a72sw6jh8lz3uv.ancestor(scope, function (e) {      return $_2nczsvw0jh8lz3ua.is(e, selector);    }, isRoot);  };  var sibling$1 = function (scope, selector) {    return $_5a72sw6jh8lz3uv.sibling(scope, function (e) {      return $_2nczsvw0jh8lz3ua.is(e, selector);    });  };  var child$2 = function (scope, selector) {    return $_5a72sw6jh8lz3uv.child(scope, function (e) {      return $_2nczsvw0jh8lz3ua.is(e, selector);    });  };  var descendant$1 = function (scope, selector) {    return $_2nczsvw0jh8lz3ua.one(selector, scope);  };  var closest$1 = function (scope, selector, isRoot) {    return ClosestOrAncestor($_2nczsvw0jh8lz3ua.is, ancestor$1, scope, selector, isRoot);  };  var $_9rr9rgw5jh8lz3uu = {    first: first$2,    ancestor: ancestor$1,    sibling: sibling$1,    child: child$2,    descendant: descendant$1,    closest: closest$1  };  var toggleFormat = function (editor, fmt) {    return function () {      editor.execCommand('mceToggleFormat', false, fmt);    };  };  var addFormatChangedListener = function (editor, name, changed) {    var handler = function (state) {      changed(state, name);    };    if (editor.formatter) {      editor.formatter.formatChanged(name, handler);    } else {      editor.on('init', function () {        editor.formatter.formatChanged(name, handler);      });    }  };  var postRenderFormatToggle = function (editor, name) {    return function (e) {      addFormatChangedListener(editor, name, function (state) {        e.control.active(state);      });    };  };  var register = function (editor) {    var alignFormats = [      'alignleft',      'aligncenter',      'alignright',      'alignjustify'    ];    var defaultAlign = 'alignleft';    var alignMenuItems = [      {        text: 'Left',        icon: 'alignleft',        onclick: toggleFormat(editor, 'alignleft')      },      {        text: 'Center',        icon: 'aligncenter',        onclick: toggleFormat(editor, 'aligncenter')      },      {        text: 'Right',        icon: 'alignright',        onclick: toggleFormat(editor, 'alignright')      },      {        text: 'Justify',        icon: 'alignjustify',        onclick: toggleFormat(editor, 'alignjustify')      }    ];    editor.addMenuItem('align', {      text: 'Align',      menu: alignMenuItems    });    editor.addButton('align', {      type: 'menubutton',      icon: defaultAlign,      menu: alignMenuItems,      onShowMenu: function (e) {        var menu = e.control.menu;        global$2.each(alignFormats, function (formatName, idx) {          menu.items().eq(idx).each(function (item) {            return item.active(editor.formatter.match(formatName));          });        });      },      onPostRender: function (e) {        var ctrl = e.control;        global$2.each(alignFormats, function (formatName, idx) {          addFormatChangedListener(editor, formatName, function (state) {            ctrl.icon(defaultAlign);            if (state) {              ctrl.icon(formatName);            }          });        });      }    });    global$2.each({      alignleft: [        'Align left',        'JustifyLeft'      ],      aligncenter: [        'Align center',        'JustifyCenter'      ],      alignright: [        'Align right',        'JustifyRight'      ],      alignjustify: [        'Justify',        'JustifyFull'      ],      alignnone: [        'No alignment',        'JustifyNone'      ]    }, function (item, name) {      editor.addButton(name, {        active: false,        tooltip: item[0],        cmd: item[1],        onPostRender: postRenderFormatToggle(editor, name)      });    });  };  var $_a6x5k4w8jh8lz3vh = { register: register };  var getFirstFont = function (fontFamily) {    return fontFamily ? fontFamily.split(',')[0] : '';  };  var findMatchingValue = function (items, fontFamily) {    var font = fontFamily ? fontFamily.toLowerCase() : '';    var value;    global$2.each(items, function (item) {      if (item.value.toLowerCase() === font) {        value = item.value;      }    });    global$2.each(items, function (item) {      if (!value && getFirstFont(item.value).toLowerCase() === getFirstFont(font).toLowerCase()) {        value = item.value;      }    });    return value;  };  var createFontNameListBoxChangeHandler = function (editor, items) {    return function () {      var self = this;      editor.on('init nodeChange', function (e) {        var fontFamily = editor.queryCommandValue('FontName');        var match = findMatchingValue(items, fontFamily);        self.value(match ? match : null);        if (!match && fontFamily) {          self.text(getFirstFont(fontFamily));        }      });    };  };  var createFormats = function (formats) {    formats = formats.replace(/;$/, '').split(';');    var i = formats.length;    while (i--) {      formats[i] = formats[i].split('=');    }    return formats;  };  var getFontItems = function (editor) {    var defaultFontsFormats = 'Andale Mono=andale mono,monospace;' + 'Arial=arial,helvetica,sans-serif;' + 'Arial Black=arial black,sans-serif;' + 'Book Antiqua=book antiqua,palatino,serif;' + 'Comic Sans MS=comic sans ms,sans-serif;' + 'Courier New=courier new,courier,monospace;' + 'Georgia=georgia,palatino,serif;' + 'Helvetica=helvetica,arial,sans-serif;' + 'Impact=impact,sans-serif;' + 'Symbol=symbol;' + 'Tahoma=tahoma,arial,helvetica,sans-serif;' + 'Terminal=terminal,monaco,monospace;' + 'Times New Roman=times new roman,times,serif;' + 'Trebuchet MS=trebuchet ms,geneva,sans-serif;' + 'Verdana=verdana,geneva,sans-serif;' + 'Webdings=webdings;' + 'Wingdings=wingdings,zapf dingbats';    var fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);    return global$2.map(fonts, function (font) {      return {        text: { raw: font[0] },        value: font[1],        textStyle: font[1].indexOf('dings') === -1 ? 'font-family:' + font[1] : ''      };    });  };  var registerButtons = function (editor) {    editor.addButton('fontselect', function () {      var items = getFontItems(editor);      return {        type: 'listbox',        text: 'Font Family',        tooltip: 'Font Family',        values: items,        fixedWidth: true,        onPostRender: createFontNameListBoxChangeHandler(editor, items),        onselect: function (e) {          if (e.control.settings.value) {            editor.execCommand('FontName', false, e.control.settings.value);          }        }      };    });  };  var register$1 = function (editor) {    registerButtons(editor);  };  var $_4hdsyewajh8lz3vk = { register: register$1 };  var round = function (number, precision) {    var factor = Math.pow(10, precision);    return Math.round(number * factor) / factor;  };  var toPt = function (fontSize, precision) {    if (/[0-9.]+px$/.test(fontSize)) {      return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';    }    return fontSize;  };  var findMatchingValue$1 = function (items, pt, px) {    var value;    global$2.each(items, function (item) {      if (item.value === px) {        value = px;      } else if (item.value === pt) {        value = pt;      }    });    return value;  };  var createFontSizeListBoxChangeHandler = function (editor, items) {    return function () {      var self = this;      editor.on('init nodeChange', function (e) {        var px, pt, precision, match;        px = editor.queryCommandValue('FontSize');        if (px) {          for (precision = 3; !match && precision >= 0; precision--) {            pt = toPt(px, precision);            match = findMatchingValue$1(items, pt, px);          }        }        self.value(match ? match : null);        if (!match) {          self.text(pt);        }      });    };  };  var getFontSizeItems = function (editor) {    var defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';    var fontsizeFormats = editor.settings.fontsize_formats || defaultFontsizeFormats;    return global$2.map(fontsizeFormats.split(' '), function (item) {      var text = item, value = item;      var values = item.split('=');      if (values.length > 1) {        text = values[0];        value = values[1];      }      return {        text: text,        value: value      };    });  };  var registerButtons$1 = function (editor) {    editor.addButton('fontsizeselect', function () {      var items = getFontSizeItems(editor);      return {        type: 'listbox',        text: 'Font Sizes',        tooltip: 'Font Sizes',        values: items,        fixedWidth: true,        onPostRender: createFontSizeListBoxChangeHandler(editor, items),        onclick: function (e) {          if (e.control.settings.value) {            editor.execCommand('FontSize', false, e.control.settings.value);          }        }      };    });  };  var register$2 = function (editor) {    registerButtons$1(editor);  };  var $_du9atdwbjh8lz3vn = { register: register$2 };  var hideMenuObjects = function (editor, menu) {    var count = menu.length;    global$2.each(menu, function (item) {      if (item.menu) {        item.hidden = hideMenuObjects(editor, item.menu) === 0;      }      var formatName = item.format;      if (formatName) {        item.hidden = !editor.formatter.canApply(formatName);      }      if (item.hidden) {        count--;      }    });    return count;  };  var hideFormatMenuItems = function (editor, menu) {    var count = menu.items().length;    menu.items().each(function (item) {      if (item.menu) {        item.visible(hideFormatMenuItems(editor, item.menu) > 0);      }      if (!item.menu && item.settings.menu) {        item.visible(hideMenuObjects(editor, item.settings.menu) > 0);      }      var formatName = item.settings.format;      if (formatName) {        item.visible(editor.formatter.canApply(formatName));      }      if (!item.visible()) {        count--;      }    });    return count;  };  var createFormatMenu = function (editor) {    var count = 0;    var newFormats = [];    var defaultStyleFormats = [      {        title: 'Headings',        items: [          {            title: 'Heading 1',            format: 'h1'          },          {            title: 'Heading 2',            format: 'h2'          },          {            title: 'Heading 3',            format: 'h3'          },          {            title: 'Heading 4',            format: 'h4'          },          {            title: 'Heading 5',            format: 'h5'          },          {            title: 'Heading 6',            format: 'h6'          }        ]      },      {        title: 'Inline',        items: [          {            title: 'Bold',            icon: 'bold',            format: 'bold'          },          {            title: 'Italic',            icon: 'italic',            format: 'italic'          },          {            title: 'Underline',            icon: 'underline',            format: 'underline'          },          {            title: 'Strikethrough',            icon: 'strikethrough',            format: 'strikethrough'          },          {            title: 'Superscript',            icon: 'superscript',            format: 'superscript'          },          {            title: 'Subscript',            icon: 'subscript',            format: 'subscript'          },          {            title: 'Code',            icon: 'code',            format: 'code'          }        ]      },      {        title: 'Blocks',        items: [          {            title: 'Paragraph',            format: 'p'          },          {            title: 'Blockquote',            format: 'blockquote'          },          {            title: 'Div',            format: 'div'          },          {            title: 'Pre',            format: 'pre'          }        ]      },      {        title: 'Alignment',        items: [          {            title: 'Left',            icon: 'alignleft',            format: 'alignleft'          },          {            title: 'Center',            icon: 'aligncenter',            format: 'aligncenter'          },          {            title: 'Right',            icon: 'alignright',            format: 'alignright'          },          {            title: 'Justify',            icon: 'alignjustify',            format: 'alignjustify'          }        ]      }    ];    var createMenu = function (formats) {      var menu = [];      if (!formats) {        return;      }      global$2.each(formats, function (format) {        var menuItem = {          text: format.title,          icon: format.icon        };        if (format.items) {          menuItem.menu = createMenu(format.items);        } else {          var formatName = format.format || 'custom' + count++;          if (!format.format) {            format.name = formatName;            newFormats.push(format);          }          menuItem.format = formatName;          menuItem.cmd = format.cmd;        }        menu.push(menuItem);      });      return menu;    };    var createStylesMenu = function () {      var menu;      if (editor.settings.style_formats_merge) {        if (editor.settings.style_formats) {          menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));        } else {          menu = createMenu(defaultStyleFormats);        }      } else {        menu = createMenu(editor.settings.style_formats || defaultStyleFormats);      }      return menu;    };    editor.on('init', function () {      global$2.each(newFormats, function (format) {        editor.formatter.register(format.name, format);      });    });    return {      type: 'menu',      items: createStylesMenu(),      onPostRender: function (e) {        editor.fire('renderFormatsMenu', { control: e.control });      },      itemDefaults: {        preview: true,        textStyle: function () {          if (this.settings.format) {            return editor.formatter.getCssText(this.settings.format);          }        },        onPostRender: function () {          var self = this;          self.parent().on('show', function () {            var formatName, command;            formatName = self.settings.format;            if (formatName) {              self.disabled(!editor.formatter.canApply(formatName));              self.active(editor.formatter.match(formatName));            }            command = self.settings.cmd;            if (command) {              self.active(editor.queryCommandState(command));            }          });        },        onclick: function () {          if (this.settings.format) {            toggleFormat(editor, this.settings.format)();          }          if (this.settings.cmd) {            editor.execCommand(this.settings.cmd);          }        }      }    };  };  var registerMenuItems = function (editor, formatMenu) {    editor.addMenuItem('formats', {      text: 'Formats',      menu: formatMenu    });  };  var registerButtons$2 = function (editor, formatMenu) {    editor.addButton('styleselect', {      type: 'menubutton',      text: 'Formats',      menu: formatMenu,      onShowMenu: function () {        if (editor.settings.style_formats_autohide) {          hideFormatMenuItems(editor, this.menu);        }      }    });  };  var register$3 = function (editor) {    var formatMenu = createFormatMenu(editor);    registerMenuItems(editor, formatMenu);    registerButtons$2(editor, formatMenu);  };  var $_5xlhbcwcjh8lz3vr = { register: register$3 };  var defaultBlocks = 'Paragraph=p;' + 'Heading 1=h1;' + 'Heading 2=h2;' + 'Heading 3=h3;' + 'Heading 4=h4;' + 'Heading 5=h5;' + 'Heading 6=h6;' + 'Preformatted=pre';  var createFormats$1 = function (formats) {    formats = formats.replace(/;$/, '').split(';');    var i = formats.length;    while (i--) {      formats[i] = formats[i].split('=');    }    return formats;  };  var createListBoxChangeHandler = function (editor, items, formatName) {    return function () {      var self = this;      editor.on('nodeChange', function (e) {        var formatter = editor.formatter;        var value = null;        global$2.each(e.parents, function (node) {          global$2.each(items, function (item) {            if (formatName) {              if (formatter.matchNode(node, formatName, { value: item.value })) {                value = item.value;              }            } else {              if (formatter.matchNode(node, item.value)) {                value = item.value;              }            }            if (value) {              return false;            }          });          if (value) {            return false;          }        });        self.value(value);      });    };  };  var lazyFormatSelectBoxItems = function (editor, blocks) {    return function () {      var items = [];      global$2.each(blocks, function (block) {        items.push({          text: block[0],          value: block[1],          textStyle: function () {            return editor.formatter.getCssText(block[1]);          }        });      });      return {        type: 'listbox',        text: blocks[0][0],        values: items,        fixedWidth: true,        onselect: function (e) {          if (e.control) {            var fmt = e.control.value();            toggleFormat(editor, fmt)();          }        },        onPostRender: createListBoxChangeHandler(editor, items)      };    };  };  var buildMenuItems = function (editor, blocks) {    return global$2.map(blocks, function (block) {      return {        text: block[0],        onclick: toggleFormat(editor, block[1]),        textStyle: function () {          return editor.formatter.getCssText(block[1]);        }      };    });  };  var register$4 = function (editor) {    var blocks = createFormats$1(editor.settings.block_formats || defaultBlocks);    editor.addMenuItem('blockformats', {      text: 'Blocks',      menu: buildMenuItems(editor, blocks)    });    editor.addButton('formatselect', lazyFormatSelectBoxItems(editor, blocks));  };  var $_bj8nxmwdjh8lz3vw = { register: register$4 };  var createCustomMenuItems = function (editor, names) {    var items, nameList;    if (typeof names === 'string') {      nameList = names.split(' ');    } else if (global$2.isArray(names)) {      return $_f3qxhzthjh8lz3kg.flatten(global$2.map(names, function (names) {        return createCustomMenuItems(editor, names);      }));    }    items = global$2.grep(nameList, function (name) {      return name === '|' || name in editor.menuItems;    });    return global$2.map(items, function (name) {      return name === '|' ? { text: '-' } : editor.menuItems[name];    });  };  var isSeparator$1 = function (menuItem) {    return menuItem && menuItem.text === '-';  };  var trimMenuItems = function (menuItems) {    var menuItems2 = $_f3qxhzthjh8lz3kg.filter(menuItems, function (menuItem, i, menuItems) {      return !isSeparator$1(menuItem) || !isSeparator$1(menuItems[i - 1]);    });    return $_f3qxhzthjh8lz3kg.filter(menuItems2, function (menuItem, i, menuItems) {      return !isSeparator$1(menuItem) || i > 0 && i < menuItems.length - 1;    });  };  var createContextMenuItems = function (editor, context) {    var outputMenuItems = [{ text: '-' }];    var menuItems = global$2.grep(editor.menuItems, function (menuItem) {      return menuItem.context === context;    });    global$2.each(menuItems, function (menuItem) {      if (menuItem.separator === 'before') {        outputMenuItems.push({ text: '|' });      }      if (menuItem.prependToContext) {        outputMenuItems.unshift(menuItem);      } else {        outputMenuItems.push(menuItem);      }      if (menuItem.separator === 'after') {        outputMenuItems.push({ text: '|' });      }    });    return outputMenuItems;  };  var createInsertMenu = function (editor) {    var insertButtonItems = editor.settings.insert_button_items;    if (insertButtonItems) {      return trimMenuItems(createCustomMenuItems(editor, insertButtonItems));    } else {      return trimMenuItems(createContextMenuItems(editor, 'insert'));    }  };  var registerButtons$3 = function (editor) {    editor.addButton('insert', {      type: 'menubutton',      icon: 'insert',      menu: [],      oncreatemenu: function () {        this.menu.add(createInsertMenu(editor));        this.menu.renderNew();      }    });  };  var register$5 = function (editor) {    registerButtons$3(editor);  };  var $_drvzmkwejh8lz3vz = { register: register$5 };  var registerFormatButtons = function (editor) {    global$2.each({      bold: 'Bold',      italic: 'Italic',      underline: 'Underline',      strikethrough: 'Strikethrough',      subscript: 'Subscript',      superscript: 'Superscript'    }, function (text, name) {      editor.addButton(name, {        active: false,        tooltip: text,        onPostRender: postRenderFormatToggle(editor, name),        onclick: toggleFormat(editor, name)      });    });  };  var registerCommandButtons = function (editor) {    global$2.each({      outdent: [        'Decrease indent',        'Outdent'      ],      indent: [        'Increase indent',        'Indent'      ],      cut: [        'Cut',        'Cut'      ],      copy: [        'Copy',        'Copy'      ],      paste: [        'Paste',        'Paste'      ],      help: [        'Help',        'mceHelp'      ],      selectall: [        'Select all',        'SelectAll'      ],      visualaid: [        'Visual aids',        'mceToggleVisualAid'      ],      newdocument: [        'New document',        'mceNewDocument'      ],      removeformat: [        'Clear formatting',        'RemoveFormat'      ],      remove: [        'Remove',        'Delete'      ]    }, function (item, name) {      editor.addButton(name, {        tooltip: item[0],        cmd: item[1]      });    });  };  var registerCommandToggleButtons = function (editor) {    global$2.each({      blockquote: [        'Blockquote',        'mceBlockQuote'      ],      subscript: [        'Subscript',        'Subscript'      ],      superscript: [        'Superscript',        'Superscript'      ]    }, function (item, name) {      editor.addButton(name, {        active: false,        tooltip: item[0],        cmd: item[1],        onPostRender: postRenderFormatToggle(editor, name)      });    });  };  var registerButtons$4 = function (editor) {    registerFormatButtons(editor);    registerCommandButtons(editor);    registerCommandToggleButtons(editor);  };  var registerMenuItems$1 = function (editor) {    global$2.each({      bold: [        'Bold',        'Bold',        'Meta+B'      ],      italic: [        'Italic',        'Italic',        'Meta+I'      ],      underline: [        'Underline',        'Underline',        'Meta+U'      ],      strikethrough: [        'Strikethrough',        'Strikethrough'      ],      subscript: [        'Subscript',        'Subscript'      ],      superscript: [        'Superscript',        'Superscript'      ],      removeformat: [        'Clear formatting',        'RemoveFormat'      ],      newdocument: [        'New document',        'mceNewDocument'      ],      cut: [        'Cut',        'Cut',        'Meta+X'      ],      copy: [        'Copy',        'Copy',        'Meta+C'      ],      paste: [        'Paste',        'Paste',        'Meta+V'      ],      selectall: [        'Select all',        'SelectAll',        'Meta+A'      ]    }, function (item, name) {      editor.addMenuItem(name, {        text: item[0],        icon: name,        shortcut: item[2],        cmd: item[1]      });    });    editor.addMenuItem('codeformat', {      text: 'Code',      icon: 'code',      onclick: toggleFormat(editor, 'code')    });  };  var register$6 = function (editor) {    registerButtons$4(editor);    registerMenuItems$1(editor);  };  var $_2d67dwfjh8lz3w2 = { register: register$6 };  var toggleUndoRedoState = function (editor, type) {    return function () {      var self = this;      var checkState = function () {        var typeFn = type === 'redo' ? 'hasRedo' : 'hasUndo';        return editor.undoManager ? editor.undoManager[typeFn]() : false;      };      self.disabled(!checkState());      editor.on('Undo Redo AddUndo TypingUndo ClearUndos SwitchMode', function () {        self.disabled(editor.readonly || !checkState());      });    };  };  var registerMenuItems$2 = function (editor) {    editor.addMenuItem('undo', {      text: 'Undo',      icon: 'undo',      shortcut: 'Meta+Z',      onPostRender: toggleUndoRedoState(editor, 'undo'),      cmd: 'undo'    });    editor.addMenuItem('redo', {      text: 'Redo',      icon: 'redo',      shortcut: 'Meta+Y',      onPostRender: toggleUndoRedoState(editor, 'redo'),      cmd: 'redo'    });  };  var registerButtons$5 = function (editor) {    editor.addButton('undo', {      tooltip: 'Undo',      onPostRender: toggleUndoRedoState(editor, 'undo'),      cmd: 'undo'    });    editor.addButton('redo', {      tooltip: 'Redo',      onPostRender: toggleUndoRedoState(editor, 'redo'),      cmd: 'redo'    });  };  var register$7 = function (editor) {    registerMenuItems$2(editor);    registerButtons$5(editor);  };  var $_cd5m9xwgjh8lz3w5 = { register: register$7 };  var toggleVisualAidState = function (editor) {    return function () {      var self = this;      editor.on('VisualAid', function (e) {        self.active(e.hasVisual);      });      self.active(editor.hasVisual);    };  };  var registerMenuItems$3 = function (editor) {    editor.addMenuItem('visualaid', {      text: 'Visual aids',      selectable: true,      onPostRender: toggleVisualAidState(editor),      cmd: 'mceToggleVisualAid'    });  };  var register$8 = function (editor) {    registerMenuItems$3(editor);  };  var $_1ojpofwhjh8lz3w6 = { register: register$8 };  var setupEnvironment = function () {    Widget.tooltips = !global$8.iOS;    Control$1.translate = function (text) {      return global$1.translate(text);    };  };  var setupUiContainer = function (editor) {    if (editor.settings.ui_container) {      global$8.container = $_9rr9rgw5jh8lz3uu.descendant($_3bkrfxv6jh8lz3rm.fromDom(document.body), editor.settings.ui_container).fold($_3pjweotejh8lz3k4.constant(null), function (elm) {        return elm.dom();      });    }  };  var setupRtlMode = function (editor) {    if (editor.rtl) {      Control$1.rtl = true;    }  };  var setupHideFloatPanels = function (editor) {    editor.on('mousedown', function () {      FloatPanel.hideAll();    });  };  var setup$1 = function (editor) {    setupRtlMode(editor);    setupHideFloatPanels(editor);    setupUiContainer(editor);    setupEnvironment();    $_bj8nxmwdjh8lz3vw.register(editor);    $_a6x5k4w8jh8lz3vh.register(editor);    $_2d67dwfjh8lz3w2.register(editor);    $_cd5m9xwgjh8lz3w5.register(editor);    $_du9atdwbjh8lz3vn.register(editor);    $_4hdsyewajh8lz3vk.register(editor);    $_5xlhbcwcjh8lz3vr.register(editor);    $_1ojpofwhjh8lz3w6.register(editor);    $_drvzmkwejh8lz3vz.register(editor);  };  var $_4qdht3w4jh8lz3uo = { setup: setup$1 };  var GridLayout = AbsoluteLayout.extend({    recalc: function (container) {      var settings, rows, cols, items, contLayoutRect, width, height, rect, ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY;      var colWidths = [];      var rowHeights = [];      var ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;      settings = container.settings;      items = container.items().filter(':visible');      contLayoutRect = container.layoutRect();      cols = settings.columns || Math.ceil(Math.sqrt(items.length));      rows = Math.ceil(items.length / cols);      spacingH = settings.spacingH || settings.spacing || 0;      spacingV = settings.spacingV || settings.spacing || 0;      alignH = settings.alignH || settings.align;      alignV = settings.alignV || settings.align;      contPaddingBox = container.paddingBox;      reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();      if (alignH && typeof alignH === 'string') {        alignH = [alignH];      }      if (alignV && typeof alignV === 'string') {        alignV = [alignV];      }      for (x = 0; x < cols; x++) {        colWidths.push(0);      }      for (y = 0; y < rows; y++) {        rowHeights.push(0);      }      for (y = 0; y < rows; y++) {        for (x = 0; x < cols; x++) {          ctrl = items[y * cols + x];          if (!ctrl) {            break;          }          ctrlLayoutRect = ctrl.layoutRect();          ctrlMinWidth = ctrlLayoutRect.minW;          ctrlMinHeight = ctrlLayoutRect.minH;          colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];          rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];        }      }      availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;      for (maxX = 0, x = 0; x < cols; x++) {        maxX += colWidths[x] + (x > 0 ? spacingH : 0);        availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];      }      availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;      for (maxY = 0, y = 0; y < rows; y++) {        maxY += rowHeights[y] + (y > 0 ? spacingV : 0);        availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];      }      maxX += contPaddingBox.left + contPaddingBox.right;      maxY += contPaddingBox.top + contPaddingBox.bottom;      rect = {};      rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);      rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);      rect.contentW = rect.minW - contLayoutRect.deltaW;      rect.contentH = rect.minH - contLayoutRect.deltaH;      rect.minW = Math.min(rect.minW, contLayoutRect.maxW);      rect.minH = Math.min(rect.minH, contLayoutRect.maxH);      rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);      rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);      if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {        rect.w = rect.minW;        rect.h = rect.minH;        container.layoutRect(rect);        this.recalc(container);        if (container._lastRect === null) {          var parentCtrl = container.parent();          if (parentCtrl) {            parentCtrl._lastRect = null;            parentCtrl.recalc();          }        }        return;      }      if (contLayoutRect.autoResize) {        rect = container.layoutRect(rect);        rect.contentW = rect.minW - contLayoutRect.deltaW;        rect.contentH = rect.minH - contLayoutRect.deltaH;      }      var flexV;      if (settings.packV === 'start') {        flexV = 0;      } else {        flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;      }      var totalFlex = 0;      var flexWidths = settings.flexWidths;      if (flexWidths) {        for (x = 0; x < flexWidths.length; x++) {          totalFlex += flexWidths[x];        }      } else {        totalFlex = cols;      }      var ratio = availableWidth / totalFlex;      for (x = 0; x < cols; x++) {        colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;      }      posY = contPaddingBox.top;      for (y = 0; y < rows; y++) {        posX = contPaddingBox.left;        height = rowHeights[y] + flexV;        for (x = 0; x < cols; x++) {          if (reverseRows) {            idx = y * cols + cols - 1 - x;          } else {            idx = y * cols + x;          }          ctrl = items[idx];          if (!ctrl) {            break;          }          ctrlSettings = ctrl.settings;          ctrlLayoutRect = ctrl.layoutRect();          width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);          ctrlLayoutRect.x = posX;          ctrlLayoutRect.y = posY;          align = ctrlSettings.alignH || (alignH ? alignH[x] || alignH[0] : null);          if (align === 'center') {            ctrlLayoutRect.x = posX + width / 2 - ctrlLayoutRect.w / 2;          } else if (align === 'right') {            ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;          } else if (align === 'stretch') {            ctrlLayoutRect.w = width;          }          align = ctrlSettings.alignV || (alignV ? alignV[x] || alignV[0] : null);          if (align === 'center') {            ctrlLayoutRect.y = posY + height / 2 - ctrlLayoutRect.h / 2;          } else if (align === 'bottom') {            ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;          } else if (align === 'stretch') {            ctrlLayoutRect.h = height;          }          ctrl.layoutRect(ctrlLayoutRect);          posX += width + spacingH;          if (ctrl.recalc) {            ctrl.recalc();          }        }        posY += height + spacingV;      }    }  });  var Iframe$1 = Widget.extend({    renderHtml: function () {      var self = this;      self.classes.add('iframe');      self.canFocus = false;      return '<iframe id="' + self._id + '" class="' + self.classes + '" tabindex="-1" src="' + (self.settings.url || 'javascript:\'\'') + '" frameborder="0"></iframe>';    },    src: function (src) {      this.getEl().src = src;    },    html: function (html, callback) {      var self = this, body = this.getEl().contentWindow.document.body;      if (!body) {        global$7.setTimeout(function () {          self.html(html);        });      } else {        body.innerHTML = html;        if (callback) {          callback();        }      }      return this;    }  });  var InfoBox = Widget.extend({    init: function (settings) {      var self = this;      self._super(settings);      self.classes.add('widget').add('infobox');      self.canFocus = false;    },    severity: function (level) {      this.classes.remove('error');      this.classes.remove('warning');      this.classes.remove('success');      this.classes.add(level);    },    help: function (state) {      this.state.set('help', state);    },    renderHtml: function () {      var self = this, prefix = self.classPrefix;      return '<div id="' + self._id + '" class="' + self.classes + '">' + '<div id="' + self._id + '-body">' + self.encode(self.state.get('text')) + '<button role="button" tabindex="-1">' + '<i class="' + prefix + 'ico ' + prefix + 'i-help"></i>' + '</button>' + '</div>' + '</div>';    },    bindStates: function () {      var self = this;      self.state.on('change:text', function (e) {        self.getEl('body').firstChild.data = self.encode(e.value);        if (self.state.get('rendered')) {          self.updateLayoutRect();        }      });      self.state.on('change:help', function (e) {        self.classes.toggle('has-help', e.value);        if (self.state.get('rendered')) {          self.updateLayoutRect();        }      });      return self._super();    }  });  var Label = Widget.extend({    init: function (settings) {      var self = this;      self._super(settings);      self.classes.add('widget').add('label');      self.canFocus = false;      if (settings.multiline) {        self.classes.add('autoscroll');      }      if (settings.strong) {        self.classes.add('strong');      }    },    initLayoutRect: function () {      var self = this, layoutRect = self._super();      if (self.settings.multiline) {        var size = funcs.getSize(self.getEl());        if (size.width > layoutRect.maxW) {          layoutRect.minW = layoutRect.maxW;          self.classes.add('multiline');        }        self.getEl().style.width = layoutRect.minW + 'px';        layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, funcs.getSize(self.getEl()).height);      }      return layoutRect;    },    repaint: function () {      var self = this;      if (!self.settings.multiline) {        self.getEl().style.lineHeight = self.layoutRect().h + 'px';      }      return self._super();    },    severity: function (level) {      this.classes.remove('error');      this.classes.remove('warning');      this.classes.remove('success');      this.classes.add(level);    },    renderHtml: function () {      var self = this;      var targetCtrl, forName, forId = self.settings.forId;      var text = self.settings.html ? self.settings.html : self.encode(self.state.get('text'));      if (!forId && (forName = self.settings.forName)) {        targetCtrl = self.getRoot().find('#' + forName)[0];        if (targetCtrl) {          forId = targetCtrl._id;        }      }      if (forId) {        return '<label id="' + self._id + '" class="' + self.classes + '"' + (forId ? ' for="' + forId + '"' : '') + '>' + text + '</label>';      }      return '<span id="' + self._id + '" class="' + self.classes + '">' + text + '</span>';    },    bindStates: function () {      var self = this;      self.state.on('change:text', function (e) {        self.innerHtml(self.encode(e.value));        if (self.state.get('rendered')) {          self.updateLayoutRect();        }      });      return self._super();    }  });  var Toolbar$1 = Container.extend({    Defaults: {      role: 'toolbar',      layout: 'flow'    },    init: function (settings) {      var self = this;      self._super(settings);      self.classes.add('toolbar');    },    postRender: function () {      var self = this;      self.items().each(function (ctrl) {        ctrl.classes.add('toolbar-item');      });      return self._super();    }  });  var MenuBar = Toolbar$1.extend({    Defaults: {      role: 'menubar',      containerCls: 'menubar',      ariaRoot: true,      defaults: { type: 'menubutton' }    }  });  function isChildOf$1(node, parent) {    while (node) {      if (parent === node) {        return true;      }      node = node.parentNode;    }    return false;  }  var MenuButton = Button.extend({    init: function (settings) {      var self = this;      self._renderOpen = true;      self._super(settings);      settings = self.settings;      self.classes.add('menubtn');      if (settings.fixedWidth) {        self.classes.add('fixed-width');      }      self.aria('haspopup', true);      self.state.set('menu', settings.menu || self.render());    },    showMenu: function (toggle) {      var self = this;      var menu;      if (self.menu && self.menu.visible() && toggle !== false) {        return self.hideMenu();      }      if (!self.menu) {        menu = self.state.get('menu') || [];        self.classes.add('opened');        if (menu.length) {          menu = {            type: 'menu',            animate: true,            items: menu          };        } else {          menu.type = menu.type || 'menu';          menu.animate = true;        }        if (!menu.renderTo) {          self.menu = global$4.create(menu).parent(self).renderTo();        } else {          self.menu = menu.parent(self).show().renderTo();        }        self.fire('createmenu');        self.menu.reflow();        self.menu.on('cancel', function (e) {          if (e.control.parent() === self.menu) {            e.stopPropagation();            self.focus();            self.hideMenu();          }        });        self.menu.on('select', function () {          self.focus();        });        self.menu.on('show hide', function (e) {          if (e.control === self.menu) {            self.activeMenu(e.type === 'show');            self.classes.toggle('opened', e.type === 'show');          }          self.aria('expanded', e.type === 'show');        }).fire('show');      }      self.menu.show();      self.menu.layoutRect({ w: self.layoutRect().w });      self.menu.repaint();      self.menu.moveRel(self.getEl(), self.isRtl() ? [        'br-tr',        'tr-br'      ] : [        'bl-tl',        'tl-bl'      ]);      self.fire('showmenu');    },    hideMenu: function () {      var self = this;      if (self.menu) {        self.menu.items().each(function (item) {          if (item.hideMenu) {            item.hideMenu();          }        });        self.menu.hide();      }    },    activeMenu: function (state) {      this.classes.toggle('active', state);    },    renderHtml: function () {      var self = this, id = self._id, prefix = self.classPrefix;      var icon = self.settings.icon, image;      var text = self.state.get('text');      var textHtml = '';      image = self.settings.image;      if (image) {        icon = 'none';        if (typeof image !== 'string') {          image = window.getSelection ? image[0] : image[1];        }        image = ' style="background-image: url(\'' + image + '\')"';      } else {        image = '';      }      if (text) {        self.classes.add('btn-has-text');        textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';      }      icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';      self.aria('role', self.parent() instanceof MenuBar ? 'menuitem' : 'button');      return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1" aria-labelledby="' + id + '">' + '<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';    },    postRender: function () {      var self = this;      self.on('click', function (e) {        if (e.control === self && isChildOf$1(e.target, self.getEl())) {          self.focus();          self.showMenu(!e.aria);          if (e.aria) {            self.menu.items().filter(':visible')[0].focus();          }        }      });      self.on('mouseenter', function (e) {        var overCtrl = e.control;        var parent = self.parent();        var hasVisibleSiblingMenu;        if (overCtrl && parent && overCtrl instanceof MenuButton && overCtrl.parent() === parent) {          parent.items().filter('MenuButton').each(function (ctrl) {            if (ctrl.hideMenu && ctrl !== overCtrl) {              if (ctrl.menu && ctrl.menu.visible()) {                hasVisibleSiblingMenu = true;              }              ctrl.hideMenu();            }          });          if (hasVisibleSiblingMenu) {            overCtrl.focus();            overCtrl.showMenu();          }        }      });      return self._super();    },    bindStates: function () {      var self = this;      self.state.on('change:menu', function () {        if (self.menu) {          self.menu.remove();        }        self.menu = null;      });      return self._super();    },    remove: function () {      this._super();      if (this.menu) {        this.menu.remove();      }    }  });  var Menu = FloatPanel.extend({    Defaults: {      defaultType: 'menuitem',      border: 1,      layout: 'stack',      role: 'application',      bodyRole: 'menu',      ariaRoot: true    },    init: function (settings) {      var self = this;      settings.autohide = true;      settings.constrainToViewport = true;      if (typeof settings.items === 'function') {        settings.itemsFactory = settings.items;        settings.items = [];      }      if (settings.itemDefaults) {        var items = settings.items;        var i = items.length;        while (i--) {          items[i] = global$2.extend({}, settings.itemDefaults, items[i]);        }      }      self._super(settings);      self.classes.add('menu');      if (settings.animate && global$8.ie !== 11) {        self.classes.add('animate');      }    },    repaint: function () {      this.classes.toggle('menu-align', true);      this._super();      this.getEl().style.height = '';      this.getEl('body').style.height = '';      return this;    },    cancel: function () {      var self = this;      self.hideAll();      self.fire('select');    },    load: function () {      var self = this;      var time, factory;      function hideThrobber() {        if (self.throbber) {          self.throbber.hide();          self.throbber = null;        }      }      factory = self.settings.itemsFactory;      if (!factory) {        return;      }      if (!self.throbber) {        self.throbber = new Throbber(self.getEl('body'), true);        if (self.items().length === 0) {          self.throbber.show();          self.fire('loading');        } else {          self.throbber.show(100, function () {            self.items().remove();            self.fire('loading');          });        }        self.on('hide close', hideThrobber);      }      self.requestTime = time = new Date().getTime();      self.settings.itemsFactory(function (items) {        if (items.length === 0) {          self.hide();          return;        }        if (self.requestTime !== time) {          return;        }        self.getEl().style.width = '';        self.getEl('body').style.width = '';        hideThrobber();        self.items().remove();        self.getEl('body').innerHTML = '';        self.add(items);        self.renderNew();        self.fire('loaded');      });    },    hideAll: function () {      var self = this;      this.find('menuitem').exec('hideMenu');      return self._super();    },    preRender: function () {      var self = this;      self.items().each(function (ctrl) {        var settings = ctrl.settings;        if (settings.icon || settings.image || settings.selectable) {          self._hasIcons = true;          return false;        }      });      if (self.settings.itemsFactory) {        self.on('postrender', function () {          if (self.settings.itemsFactory) {            self.load();          }        });      }      self.on('show hide', function (e) {        if (e.control === self) {          if (e.type === 'show') {            global$7.setTimeout(function () {              self.classes.add('in');            }, 0);          } else {            self.classes.remove('in');          }        }      });      return self._super();    }  });  var ListBox = MenuButton.extend({    init: function (settings) {      var self = this;      var values, selected, selectedText, lastItemCtrl;      function setSelected(menuValues) {        for (var i = 0; i < menuValues.length; i++) {          selected = menuValues[i].selected || settings.value === menuValues[i].value;          if (selected) {            selectedText = selectedText || menuValues[i].text;            self.state.set('value', menuValues[i].value);            return true;          }          if (menuValues[i].menu) {            if (setSelected(menuValues[i].menu)) {              return true;            }          }        }      }      self._super(settings);      settings = self.settings;      self._values = values = settings.values;      if (values) {        if (typeof settings.value !== 'undefined') {          setSelected(values);        }        if (!selected && values.length > 0) {          selectedText = values[0].text;          self.state.set('value', values[0].value);        }        self.state.set('menu', values);      }      self.state.set('text', settings.text || selectedText);      self.classes.add('listbox');      self.on('select', function (e) {        var ctrl = e.control;        if (lastItemCtrl) {          e.lastControl = lastItemCtrl;        }        if (settings.multiple) {          ctrl.active(!ctrl.active());        } else {          self.value(e.control.value());        }        lastItemCtrl = ctrl;      });    },    value: function (value) {      if (arguments.length === 0) {        return this.state.get('value');      }      if (typeof value === 'undefined') {        return this;      }      if (this.settings.values) {        var matchingValues = global$2.grep(this.settings.values, function (a) {          return a.value === value;        });        if (matchingValues.length > 0) {          this.state.set('value', value);        } else if (value === null) {          this.state.set('value', null);        }      } else {        this.state.set('value', value);      }      return this;    },    bindStates: function () {      var self = this;      function activateMenuItemsByValue(menu, value) {        if (menu instanceof Menu) {          menu.items().each(function (ctrl) {            if (!ctrl.hasMenus()) {              ctrl.active(ctrl.value() === value);            }          });        }      }      function getSelectedItem(menuValues, value) {        var selectedItem;        if (!menuValues) {          return;        }        for (var i = 0; i < menuValues.length; i++) {          if (menuValues[i].value === value) {            return menuValues[i];          }          if (menuValues[i].menu) {            selectedItem = getSelectedItem(menuValues[i].menu, value);            if (selectedItem) {              return selectedItem;            }          }        }      }      self.on('show', function (e) {        activateMenuItemsByValue(e.control, self.value());      });      self.state.on('change:value', function (e) {        var selectedItem = getSelectedItem(self.state.get('menu'), e.value);        if (selectedItem) {          self.text(selectedItem.text);        } else {          self.text(self.settings.text);        }      });      return self._super();    }  });  var toggleTextStyle = function (ctrl, state) {    var textStyle = ctrl._textStyle;    if (textStyle) {      var textElm = ctrl.getEl('text');      textElm.setAttribute('style', textStyle);      if (state) {        textElm.style.color = '';        textElm.style.backgroundColor = '';      }    }  };  var MenuItem = Widget.extend({    Defaults: {      border: 0,      role: 'menuitem'    },    init: function (settings) {      var self = this;      var text;      self._super(settings);      settings = self.settings;      self.classes.add('menu-item');      if (settings.menu) {        self.classes.add('menu-item-expand');      }      if (settings.preview) {        self.classes.add('menu-item-preview');      }      text = self.state.get('text');      if (text === '-' || text === '|') {        self.classes.add('menu-item-sep');        self.aria('role', 'separator');        self.state.set('text', '-');      }      if (settings.selectable) {        self.aria('role', 'menuitemcheckbox');        self.classes.add('menu-item-checkbox');        settings.icon = 'selected';      }      if (!settings.preview && !settings.selectable) {        self.classes.add('menu-item-normal');      }      self.on('mousedown', function (e) {        e.preventDefault();      });      if (settings.menu && !settings.ariaHideMenu) {        self.aria('haspopup', true);      }    },    hasMenus: function () {      return !!this.settings.menu;    },    showMenu: function () {      var self = this;      var settings = self.settings;      var menu;      var parent = self.parent();      parent.items().each(function (ctrl) {        if (ctrl !== self) {          ctrl.hideMenu();        }      });      if (settings.menu) {        menu = self.menu;        if (!menu) {          menu = settings.menu;          if (menu.length) {            menu = {              type: 'menu',              items: menu            };          } else {            menu.type = menu.type || 'menu';          }          if (parent.settings.itemDefaults) {            menu.itemDefaults = parent.settings.itemDefaults;          }          menu = self.menu = global$4.create(menu).parent(self).renderTo();          menu.reflow();          menu.on('cancel', function (e) {            e.stopPropagation();            self.focus();            menu.hide();          });          menu.on('show hide', function (e) {            if (e.control.items) {              e.control.items().each(function (ctrl) {                ctrl.active(ctrl.settings.selected);              });            }          }).fire('show');          menu.on('hide', function (e) {            if (e.control === menu) {              self.classes.remove('selected');            }          });          menu.submenu = true;        } else {          menu.show();        }        menu._parentMenu = parent;        menu.classes.add('menu-sub');        var rel = menu.testMoveRel(self.getEl(), self.isRtl() ? [          'tl-tr',          'bl-br',          'tr-tl',          'br-bl'        ] : [          'tr-tl',          'br-bl',          'tl-tr',          'bl-br'        ]);        menu.moveRel(self.getEl(), rel);        menu.rel = rel;        rel = 'menu-sub-' + rel;        menu.classes.remove(menu._lastRel).add(rel);        menu._lastRel = rel;        self.classes.add('selected');        self.aria('expanded', true);      }    },    hideMenu: function () {      var self = this;      if (self.menu) {        self.menu.items().each(function (item) {          if (item.hideMenu) {            item.hideMenu();          }        });        self.menu.hide();        self.aria('expanded', false);      }      return self;    },    renderHtml: function () {      var self = this;      var id = self._id;      var settings = self.settings;      var prefix = self.classPrefix;      var text = self.state.get('text');      var icon = self.settings.icon, image = '', shortcut = settings.shortcut;      var url = self.encode(settings.url), iconHtml = '';      function convertShortcut(shortcut) {        var i, value, replace = {};        if (global$8.mac) {          replace = {            alt: '⌥',            ctrl: '⌘',            shift: '⇧',            meta: '⌘'          };        } else {          replace = { meta: 'Ctrl' };        }        shortcut = shortcut.split('+');        for (i = 0; i < shortcut.length; i++) {          value = replace[shortcut[i].toLowerCase()];          if (value) {            shortcut[i] = value;          }        }        return shortcut.join('+');      }      function escapeRegExp(str) {        return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');      }      function markMatches(text) {        var match = settings.match || '';        return match ? text.replace(new RegExp(escapeRegExp(match), 'gi'), function (match) {          return '!mce~match[' + match + ']mce~match!';        }) : text;      }      function boldMatches(text) {        return text.replace(new RegExp(escapeRegExp('!mce~match['), 'g'), '<b>').replace(new RegExp(escapeRegExp(']mce~match!'), 'g'), '</b>');      }      if (icon) {        self.parent().classes.add('menu-has-icons');      }      if (settings.image) {        image = ' style="background-image: url(\'' + settings.image + '\')"';      }      if (shortcut) {        shortcut = convertShortcut(shortcut);      }      icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');      iconHtml = text !== '-' ? '<i class="' + icon + '"' + image + '></i>\xA0' : '';      text = boldMatches(self.encode(markMatches(text)));      url = boldMatches(self.encode(markMatches(url)));      return '<div id="' + id + '" class="' + self.classes + '" tabindex="-1">' + iconHtml + (text !== '-' ? '<span id="' + id + '-text" class="' + prefix + 'text">' + text + '</span>' : '') + (shortcut ? '<div id="' + id + '-shortcut" class="' + prefix + 'menu-shortcut">' + shortcut + '</div>' : '') + (settings.menu ? '<div class="' + prefix + 'caret"></div>' : '') + (url ? '<div class="' + prefix + 'menu-item-link">' + url + '</div>' : '') + '</div>';    },    postRender: function () {      var self = this, settings = self.settings;      var textStyle = settings.textStyle;      if (typeof textStyle === 'function') {        textStyle = textStyle.call(this);      }      if (textStyle) {        var textElm = self.getEl('text');        if (textElm) {          textElm.setAttribute('style', textStyle);          self._textStyle = textStyle;        }      }      self.on('mouseenter click', function (e) {        if (e.control === self) {          if (!settings.menu && e.type === 'click') {            self.fire('select');            global$7.requestAnimationFrame(function () {              self.parent().hideAll();            });          } else {            self.showMenu();            if (e.aria) {              self.menu.focus(true);            }          }        }      });      self._super();      return self;    },    hover: function () {      var self = this;      self.parent().items().each(function (ctrl) {        ctrl.classes.remove('selected');      });      self.classes.toggle('selected', true);      return self;    },    active: function (state) {      toggleTextStyle(this, state);      if (typeof state !== 'undefined') {        this.aria('checked', state);      }      return this._super(state);    },    remove: function () {      this._super();      if (this.menu) {        this.menu.remove();      }    }  });  var Radio = Checkbox.extend({    Defaults: {      classes: 'radio',      role: 'radio'    }  });  var ResizeHandle = Widget.extend({    renderHtml: function () {      var self = this, prefix = self.classPrefix;      self.classes.add('resizehandle');      if (self.settings.direction === 'both') {        self.classes.add('resizehandle-both');      }      self.canFocus = false;      return '<div id="' + self._id + '" class="' + self.classes + '">' + '<i class="' + prefix + 'ico ' + prefix + 'i-resize"></i>' + '</div>';    },    postRender: function () {      var self = this;      self._super();      self.resizeDragHelper = new DragHelper(this._id, {        start: function () {          self.fire('ResizeStart');        },        drag: function (e) {          if (self.settings.direction !== 'both') {            e.deltaX = 0;          }          self.fire('Resize', e);        },        stop: function () {          self.fire('ResizeEnd');        }      });    },    remove: function () {      if (this.resizeDragHelper) {        this.resizeDragHelper.destroy();      }      return this._super();    }  });  function createOptions(options) {    var strOptions = '';    if (options) {      for (var i = 0; i < options.length; i++) {        strOptions += '<option value="' + options[i] + '">' + options[i] + '</option>';      }    }    return strOptions;  }  var SelectBox = Widget.extend({    Defaults: {      classes: 'selectbox',      role: 'selectbox',      options: []    },    init: function (settings) {      var self = this;      self._super(settings);      if (self.settings.size) {        self.size = self.settings.size;      }      if (self.settings.options) {        self._options = self.settings.options;      }      self.on('keydown', function (e) {        var rootControl;        if (e.keyCode === 13) {          e.preventDefault();          self.parents().reverse().each(function (ctrl) {            if (ctrl.toJSON) {              rootControl = ctrl;              return false;            }          });          self.fire('submit', { data: rootControl.toJSON() });        }      });    },    options: function (state) {      if (!arguments.length) {        return this.state.get('options');      }      this.state.set('options', state);      return this;    },    renderHtml: function () {      var self = this;      var options, size = '';      options = createOptions(self._options);      if (self.size) {        size = ' size = "' + self.size + '"';      }      return '<select id="' + self._id + '" class="' + self.classes + '"' + size + '>' + options + '</select>';    },    bindStates: function () {      var self = this;      self.state.on('change:options', function (e) {        self.getEl().innerHTML = createOptions(e.value);      });      return self._super();    }  });  function constrain(value, minVal, maxVal) {    if (value < minVal) {      value = minVal;    }    if (value > maxVal) {      value = maxVal;    }    return value;  }  function setAriaProp(el, name, value) {    el.setAttribute('aria-' + name, value);  }  function updateSliderHandle(ctrl, value) {    var maxHandlePos, shortSizeName, sizeName, stylePosName, styleValue, handleEl;    if (ctrl.settings.orientation === 'v') {      stylePosName = 'top';      sizeName = 'height';      shortSizeName = 'h';    } else {      stylePosName = 'left';      sizeName = 'width';      shortSizeName = 'w';    }    handleEl = ctrl.getEl('handle');    maxHandlePos = (ctrl.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];    styleValue = maxHandlePos * ((value - ctrl._minValue) / (ctrl._maxValue - ctrl._minValue)) + 'px';    handleEl.style[stylePosName] = styleValue;    handleEl.style.height = ctrl.layoutRect().h + 'px';    setAriaProp(handleEl, 'valuenow', value);    setAriaProp(handleEl, 'valuetext', '' + ctrl.settings.previewFilter(value));    setAriaProp(handleEl, 'valuemin', ctrl._minValue);    setAriaProp(handleEl, 'valuemax', ctrl._maxValue);  }  var Slider = Widget.extend({    init: function (settings) {      var self = this;      if (!settings.previewFilter) {        settings.previewFilter = function (value) {          return Math.round(value * 100) / 100;        };      }      self._super(settings);      self.classes.add('slider');      if (settings.orientation === 'v') {        self.classes.add('vertical');      }      self._minValue = $_d8bie3tijh8lz3kn.isNumber(settings.minValue) ? settings.minValue : 0;      self._maxValue = $_d8bie3tijh8lz3kn.isNumber(settings.maxValue) ? settings.maxValue : 100;      self._initValue = self.state.get('value');    },    renderHtml: function () {      var self = this, id = self._id, prefix = self.classPrefix;      return '<div id="' + id + '" class="' + self.classes + '">' + '<div id="' + id + '-handle" class="' + prefix + 'slider-handle" role="slider" tabindex="-1"></div>' + '</div>';    },    reset: function () {      this.value(this._initValue).repaint();    },    postRender: function () {      var self = this;      var minValue, maxValue, screenCordName, stylePosName, sizeName, shortSizeName;      function toFraction(min, max, val) {        return (val + min) / (max - min);      }      function fromFraction(min, max, val) {        return val * (max - min) - min;      }      function handleKeyboard(minValue, maxValue) {        function alter(delta) {          var value;          value = self.value();          value = fromFraction(minValue, maxValue, toFraction(minValue, maxValue, value) + delta * 0.05);          value = constrain(value, minValue, maxValue);          self.value(value);          self.fire('dragstart', { value: value });          self.fire('drag', { value: value });          self.fire('dragend', { value: value });        }        self.on('keydown', function (e) {          switch (e.keyCode) {          case 37:          case 38:            alter(-1);            break;          case 39:          case 40:            alter(1);            break;          }        });      }      function handleDrag(minValue, maxValue, handleEl) {        var startPos, startHandlePos, maxHandlePos, handlePos, value;        self._dragHelper = new DragHelper(self._id, {          handle: self._id + '-handle',          start: function (e) {            startPos = e[screenCordName];            startHandlePos = parseInt(self.getEl('handle').style[stylePosName], 10);            maxHandlePos = (self.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];            self.fire('dragstart', { value: value });          },          drag: function (e) {            var delta = e[screenCordName] - startPos;            handlePos = constrain(startHandlePos + delta, 0, maxHandlePos);            handleEl.style[stylePosName] = handlePos + 'px';            value = minValue + handlePos / maxHandlePos * (maxValue - minValue);            self.value(value);            self.tooltip().text('' + self.settings.previewFilter(value)).show().moveRel(handleEl, 'bc tc');            self.fire('drag', { value: value });          },          stop: function () {            self.tooltip().hide();            self.fire('dragend', { value: value });          }        });      }      minValue = self._minValue;      maxValue = self._maxValue;      if (self.settings.orientation === 'v') {        screenCordName = 'screenY';        stylePosName = 'top';        sizeName = 'height';        shortSizeName = 'h';      } else {        screenCordName = 'screenX';        stylePosName = 'left';        sizeName = 'width';        shortSizeName = 'w';      }      self._super();      handleKeyboard(minValue, maxValue);      handleDrag(minValue, maxValue, self.getEl('handle'));    },    repaint: function () {      this._super();      updateSliderHandle(this, this.value());    },    bindStates: function () {      var self = this;      self.state.on('change:value', function (e) {        updateSliderHandle(self, e.value);      });      return self._super();    }  });  var Spacer = Widget.extend({    renderHtml: function () {      var self = this;      self.classes.add('spacer');      self.canFocus = false;      return '<div id="' + self._id + '" class="' + self.classes + '"></div>';    }  });  var SplitButton = MenuButton.extend({    Defaults: {      classes: 'widget btn splitbtn',      role: 'button'    },    repaint: function () {      var self = this;      var elm = self.getEl();      var rect = self.layoutRect();      var mainButtonElm, menuButtonElm;      self._super();      mainButtonElm = elm.firstChild;      menuButtonElm = elm.lastChild;      global$9(mainButtonElm).css({        width: rect.w - funcs.getSize(menuButtonElm).width,        height: rect.h - 2      });      global$9(menuButtonElm).css({ height: rect.h - 2 });      return self;    },    activeMenu: function (state) {      var self = this;      global$9(self.getEl().lastChild).toggleClass(self.classPrefix + 'active', state);    },    renderHtml: function () {      var self = this;      var id = self._id;      var prefix = self.classPrefix;      var image;      var icon = self.state.get('icon');      var text = self.state.get('text');      var settings = self.settings;      var textHtml = '', ariaPressed;      image = settings.image;      if (image) {        icon = 'none';        if (typeof image !== 'string') {          image = window.getSelection ? image[0] : image[1];        }        image = ' style="background-image: url(\'' + image + '\')"';      } else {        image = '';      }      icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';      if (text) {        self.classes.add('btn-has-text');        textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';      }      ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed="' + settings.active + '"' : '';      return '<div id="' + id + '" class="' + self.classes + '" role="button"' + ariaPressed + ' tabindex="-1">' + '<button type="button" hidefocus="1" tabindex="-1">' + (icon ? '<i class="' + icon + '"' + image + '></i>' : '') + textHtml + '</button>' + '<button type="button" class="' + prefix + 'open" hidefocus="1" tabindex="-1">' + (self._menuBtnText ? (icon ? '\xA0' : '') + self._menuBtnText : '') + ' <i class="' + prefix + 'caret"></i>' + '</button>' + '</div>';    },    postRender: function () {      var self = this, onClickHandler = self.settings.onclick;      self.on('click', function (e) {        var node = e.target;        if (e.control === this) {          while (node) {            if (e.aria && e.aria.key !== 'down' || node.nodeName === 'BUTTON' && node.className.indexOf('open') === -1) {              e.stopImmediatePropagation();              if (onClickHandler) {                onClickHandler.call(this, e);              }              return;            }            node = node.parentNode;          }        }      });      delete self.settings.onclick;      return self._super();    }  });  var StackLayout = FlowLayout.extend({    Defaults: {      containerClass: 'stack-layout',      controlClass: 'stack-layout-item',      endClass: 'break'    },    isNative: function () {      return true;    }  });  var TabPanel = Panel.extend({    Defaults: {      layout: 'absolute',      defaults: { type: 'panel' }    },    activateTab: function (idx) {      var activeTabElm;      if (this.activeTabId) {        activeTabElm = this.getEl(this.activeTabId);        global$9(activeTabElm).removeClass(this.classPrefix + 'active');        activeTabElm.setAttribute('aria-selected', 'false');      }      this.activeTabId = 't' + idx;      activeTabElm = this.getEl('t' + idx);      activeTabElm.setAttribute('aria-selected', 'true');      global$9(activeTabElm).addClass(this.classPrefix + 'active');      this.items()[idx].show().fire('showtab');      this.reflow();      this.items().each(function (item, i) {        if (idx !== i) {          item.hide();        }      });    },    renderHtml: function () {      var self = this;      var layout = self._layout;      var tabsHtml = '';      var prefix = self.classPrefix;      self.preRender();      layout.preRender(self);      self.items().each(function (ctrl, i) {        var id = self._id + '-t' + i;        ctrl.aria('role', 'tabpanel');        ctrl.aria('labelledby', id);        tabsHtml += '<div id="' + id + '" class="' + prefix + 'tab" ' + 'unselectable="on" role="tab" aria-controls="' + ctrl._id + '" aria-selected="false" tabIndex="-1">' + self.encode(ctrl.settings.title) + '</div>';      });      return '<div id="' + self._id + '" class="' + self.classes + '" hidefocus="1" tabindex="-1">' + '<div id="' + self._id + '-head" class="' + prefix + 'tabs" role="tablist">' + tabsHtml + '</div>' + '<div id="' + self._id + '-body" class="' + self.bodyClasses + '">' + layout.renderHtml(self) + '</div>' + '</div>';    },    postRender: function () {      var self = this;      self._super();      self.settings.activeTab = self.settings.activeTab || 0;      self.activateTab(self.settings.activeTab);      this.on('click', function (e) {        var targetParent = e.target.parentNode;        if (targetParent && targetParent.id === self._id + '-head') {          var i = targetParent.childNodes.length;          while (i--) {            if (targetParent.childNodes[i] === e.target) {              self.activateTab(i);            }          }        }      });    },    initLayoutRect: function () {      var self = this;      var rect, minW, minH;      minW = funcs.getSize(self.getEl('head')).width;      minW = minW < 0 ? 0 : minW;      minH = 0;      self.items().each(function (item) {        minW = Math.max(minW, item.layoutRect().minW);        minH = Math.max(minH, item.layoutRect().minH);      });      self.items().each(function (ctrl) {        ctrl.settings.x = 0;        ctrl.settings.y = 0;        ctrl.settings.w = minW;        ctrl.settings.h = minH;        ctrl.layoutRect({          x: 0,          y: 0,          w: minW,          h: minH        });      });      var headH = funcs.getSize(self.getEl('head')).height;      self.settings.minWidth = minW;      self.settings.minHeight = minH + headH;      rect = self._super();      rect.deltaH += headH;      rect.innerH = rect.h - rect.deltaH;      return rect;    }  });  var TextBox = Widget.extend({    init: function (settings) {      var self = this;      self._super(settings);      self.classes.add('textbox');      if (settings.multiline) {        self.classes.add('multiline');      } else {        self.on('keydown', function (e) {          var rootControl;          if (e.keyCode === 13) {            e.preventDefault();            self.parents().reverse().each(function (ctrl) {              if (ctrl.toJSON) {                rootControl = ctrl;                return false;              }            });            self.fire('submit', { data: rootControl.toJSON() });          }        });        self.on('keyup', function (e) {          self.state.set('value', e.target.value);        });      }    },    repaint: function () {      var self = this;      var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;      style = self.getEl().style;      rect = self._layoutRect;      lastRepaintRect = self._lastRepaintRect || {};      var doc = document;      if (!self.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {        style.lineHeight = rect.h - borderH + 'px';      }      borderBox = self.borderBox;      borderW = borderBox.left + borderBox.right + 8;      borderH = borderBox.top + borderBox.bottom + (self.settings.multiline ? 8 : 0);      if (rect.x !== lastRepaintRect.x) {        style.left = rect.x + 'px';        lastRepaintRect.x = rect.x;      }      if (rect.y !== lastRepaintRect.y) {        style.top = rect.y + 'px';        lastRepaintRect.y = rect.y;      }      if (rect.w !== lastRepaintRect.w) {        style.width = rect.w - borderW + 'px';        lastRepaintRect.w = rect.w;      }      if (rect.h !== lastRepaintRect.h) {        style.height = rect.h - borderH + 'px';        lastRepaintRect.h = rect.h;      }      self._lastRepaintRect = lastRepaintRect;      self.fire('repaint', {}, false);      return self;    },    renderHtml: function () {      var self = this;      var settings = self.settings;      var attrs, elm;      attrs = {        id: self._id,        hidefocus: '1'      };      global$2.each([        'rows',        'spellcheck',        'maxLength',        'size',        'readonly',        'min',        'max',        'step',        'list',        'pattern',        'placeholder',        'required',        'multiple'      ], function (name) {        attrs[name] = settings[name];      });      if (self.disabled()) {        attrs.disabled = 'disabled';      }      if (settings.subtype) {        attrs.type = settings.subtype;      }      elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);      elm.value = self.state.get('value');      elm.className = self.classes.toString();      return elm.outerHTML;    },    value: function (value) {      if (arguments.length) {        this.state.set('value', value);        return this;      }      if (this.state.get('rendered')) {        this.state.set('value', this.getEl().value);      }      return this.state.get('value');    },    postRender: function () {      var self = this;      self.getEl().value = self.state.get('value');      self._super();      self.$el.on('change', function (e) {        self.state.set('value', e.target.value);        self.fire('change', e);      });    },    bindStates: function () {      var self = this;      self.state.on('change:value', function (e) {        if (self.getEl().value !== e.value) {          self.getEl().value = e.value;        }      });      self.state.on('change:disabled', function (e) {        self.getEl().disabled = e.value;      });      return self._super();    },    remove: function () {      this.$el.off();      this._super();    }  });  var getApi = function () {    return {      Selector: Selector,      Collection: Collection$2,      ReflowQueue: $_ef12j5u4jh8lz3nl,      Control: Control$1,      Factory: global$4,      KeyboardNavigation: KeyboardNavigation,      Container: Container,      DragHelper: DragHelper,      Scrollable: $_4acv48u6jh8lz3ns,      Panel: Panel,      Movable: $_d97gfctrjh8lz3lm,      Resizable: $_8a2gtru8jh8lz3ny,      FloatPanel: FloatPanel,      Window: Window,      MessageBox: MessageBox,      Tooltip: Tooltip,      Widget: Widget,      Progress: Progress,      Notification: Notification,      Layout: Layout,      AbsoluteLayout: AbsoluteLayout,      Button: Button,      ButtonGroup: ButtonGroup,      Checkbox: Checkbox,      ComboBox: ComboBox,      ColorBox: ColorBox,      PanelButton: PanelButton,      ColorButton: ColorButton,      ColorPicker: ColorPicker,      Path: Path,      ElementPath: ElementPath,      FormItem: FormItem,      Form: Form,      FieldSet: FieldSet,      FilePicker: FilePicker,      FitLayout: FitLayout,      FlexLayout: FlexLayout,      FlowLayout: FlowLayout,      FormatControls: $_4qdht3w4jh8lz3uo,      GridLayout: GridLayout,      Iframe: Iframe$1,      InfoBox: InfoBox,      Label: Label,      Toolbar: Toolbar$1,      MenuBar: MenuBar,      MenuButton: MenuButton,      MenuItem: MenuItem,      Throbber: Throbber,      Menu: Menu,      ListBox: ListBox,      Radio: Radio,      ResizeHandle: ResizeHandle,      SelectBox: SelectBox,      Slider: Slider,      Spacer: Spacer,      SplitButton: SplitButton,      StackLayout: StackLayout,      TabPanel: TabPanel,      TextBox: TextBox,      DropZone: DropZone,      BrowseButton: BrowseButton    };  };  var appendTo = function (target) {    if (target.ui) {      global$2.each(getApi(), function (ref, key) {        target.ui[key] = ref;      });    } else {      target.ui = getApi();    }  };  var registerToFactory = function () {    global$2.each(getApi(), function (ref, key) {      global$4.add(key, ref);    });  };  var Api = {    appendTo: appendTo,    registerToFactory: registerToFactory  };  Api.registerToFactory();  Api.appendTo(window.tinymce ? window.tinymce : {});  global.add('modern', function (editor) {    $_4qdht3w4jh8lz3uo.setup(editor);    return $_1os0v5syjh8lz3j9.get(editor);  });  function Theme () {  }  return Theme;}());})();
 |