{"version":3,"sources":["webpack:///./src/views/project/stat/ProjectStatUser.vue?df13","webpack:///src/views/project/stat/ProjectStatUser.vue","webpack:///./src/views/project/stat/ProjectStatUser.vue?86c0","webpack:///./src/views/project/stat/ProjectStatUser.vue","webpack:///./node_modules/_vue-json-editor@1.4.3@vue-json-editor/assets/jsoneditor.js","webpack:///./src/views/project/appCreate/form/CreateAppModal.vue?a1d5","webpack:///./src/views/common/cloneValue.js","webpack:///./src/views/project/stat/ProjectStatDevice.vue?06d1","webpack:///./src/views/project/operation/AppPublish.vue?da20","webpack:///src/views/project/operation/AppPublish.vue","webpack:///./src/views/project/operation/AppPublish.vue?67de","webpack:///./src/views/project/operation/AppPublish.vue","webpack:///./src/views/project/appConfig/pages/UploadTranslationFile.vue?783d","webpack:///./src/views/project/appConfig/pages/CodeSmsConfig.vue?c931","webpack:///src/views/project/appConfig/pages/CodeSmsConfig.vue","webpack:///./src/views/project/appConfig/pages/CodeSmsConfig.vue?3404","webpack:///./src/views/project/appConfig/pages/CodeSmsConfig.vue","webpack:///./src/assets/img/product_icon_failed.png","webpack:///./src/components/MImgUpload.vue?fb53","webpack:///src/components/MImgUpload.vue","webpack:///./src/components/MImgUpload.vue?eb9d","webpack:///./src/components/MImgUpload.vue","webpack:///./src/views/project/operation/UserList.vue?842b","webpack:///./src/views/project/appConfig/pages/CodeEmailConfig.vue?39b0","webpack:///./src/views/project/appConfig/pages/PageConfig.vue?09f6","webpack:///src/views/project/appConfig/pages/PageConfig.vue","webpack:///./src/views/project/appConfig/pages/PageConfig.vue?4257","webpack:///./src/views/project/appConfig/pages/PageConfig.vue","webpack:///./src/views/project/product/Product.vue?0b5c","webpack:///./src/views/project/product/ProductCard.vue?115a","webpack:///src/views/project/product/ProductCard.vue","webpack:///./src/views/project/product/ProductCard.vue?eb14","webpack:///./src/views/project/product/ProductCard.vue","webpack:///src/views/project/product/Product.vue","webpack:///./src/views/project/product/Product.vue?9f0e","webpack:///./src/views/project/product/Product.vue","webpack:///./src/assets/img/app/code.png","webpack:///./src/views/project/appConfig/pages/AppCloudConfig.vue?0a93","webpack:///./node_modules/_vue-json-editor@1.4.3@vue-json-editor/vue-json-editor.vue?5464","webpack:///node_modules/_vue-json-editor@1.4.3@vue-json-editor/vue-json-editor.vue","webpack:///./node_modules/_vue-json-editor@1.4.3@vue-json-editor/vue-json-editor.vue?8da5","webpack:///./node_modules/_vue-json-editor@1.4.3@vue-json-editor/vue-json-editor.vue","webpack:///src/views/project/appConfig/pages/AppCloudConfig.vue","webpack:///./src/views/project/appConfig/pages/AppCloudConfig.vue?7d57","webpack:///./src/views/project/appConfig/pages/AppCloudConfig.vue","webpack:///./src/views/project/appCreate/AppAutoConfig.vue?efd4","webpack:///./src/components/MImage.vue?59b2","webpack:///src/components/MImage.vue","webpack:///./src/components/MImage.vue?0dc2","webpack:///./src/components/MImage.vue","webpack:///./src/views/project/appConfig/pages/BasicConfig.vue?a593","webpack:///./src/views/project/appConfig/pages/FunctionConfig.vue?b449","webpack:///src/views/project/appConfig/pages/FunctionConfig.vue","webpack:///./src/views/project/appConfig/pages/FunctionConfig.vue?265e","webpack:///./src/views/project/appConfig/pages/FunctionConfig.vue","webpack:///./src/views/project/setting/MemberList.vue?894d","webpack:///src/views/project/setting/MemberList.vue","webpack:///./src/views/project/setting/MemberList.vue?9968","webpack:///./src/views/project/setting/MemberList.vue","webpack:///./src/assets/img/app/upload-img.jpg","webpack:///./src/assets/img/logo.png","webpack:///./src/views/project/appCreate/form/FunctionSetting.vue?51f2","webpack:///./src/views/project/appConfig/AppConfig.vue?4a65","webpack:///src/views/project/appConfig/AppConfig.vue","webpack:///./src/views/project/appConfig/AppConfig.vue?e0d7","webpack:///./src/views/project/appConfig/AppConfig.vue","webpack:///./src/views/project/appConfig/pages/PushConfig.vue?af03","webpack:///src/views/project/appConfig/pages/PushConfig.vue","webpack:///./src/views/project/appConfig/pages/PushConfig.vue?0018","webpack:///./src/views/project/appConfig/pages/PushConfig.vue","webpack:///./src/views/project/operation/DeviceList.vue?7a58","webpack:///src/views/project/operation/DeviceList.vue","webpack:///./src/views/project/operation/DeviceList.vue?fe31","webpack:///./src/views/project/operation/DeviceList.vue","webpack:///./src/views/project/operation/DeviceList.vue?edaf","webpack:///./src/views/project/stat/ProjectStatDevice.vue?e79e","webpack:///src/views/project/stat/ProjectStatDevice.vue","webpack:///./src/views/project/stat/ProjectStatDevice.vue?bb51","webpack:///./src/views/project/stat/ProjectStatDevice.vue","webpack:///./src/views/common/Logo.vue?6b97","webpack:///./src/views/project/product/Company.vue?36c3","webpack:///src/views/project/product/Company.vue","webpack:///./src/views/project/product/Company.vue?7a85","webpack:///./src/views/project/product/Company.vue","webpack:///./src/views/project/appConfig/pages/GetKey.vue?5c6f","webpack:///./src/views/project/appCreate/form/BrandSetting.vue?2a33","webpack:///./src/assets/img/app/emptyIcon.png","webpack:///./src/views/project/appConfig/pages/ShelfConfig.vue?07aa","webpack:///src/views/project/appConfig/pages/ShelfConfig.vue","webpack:///./src/views/project/appConfig/pages/ShelfConfig.vue?b33b","webpack:///./src/views/project/appConfig/pages/ShelfConfig.vue","webpack:///./src/views/project/operation/OperationFeedback.vue?4019","webpack:///src/views/project/operation/OperationFeedback.vue","webpack:///./src/views/project/operation/OperationFeedback.vue?0d8f","webpack:///./src/views/project/operation/OperationFeedback.vue","webpack:///./src/views/project/appConfig/pages/BasicConfig.vue?7a5d","webpack:///src/views/project/appConfig/pages/BasicConfig.vue","webpack:///./src/views/project/appConfig/pages/BasicConfig.vue?6c3a","webpack:///./src/views/project/appConfig/pages/BasicConfig.vue","webpack:///./src/views/common/Logo.vue?1044","webpack:///src/views/common/Logo.vue","webpack:///./src/views/common/Logo.vue?5a66","webpack:///./src/views/common/Logo.vue","webpack:///./src/views/project/operation/DevicePublish.vue?807a","webpack:///./src/views/project/appCreate/form/CreateAppModal.vue?df06","webpack:///src/views/project/appCreate/form/CreateAppModal.vue","webpack:///./src/views/project/appCreate/form/CreateAppModal.vue?52b8","webpack:///./src/views/project/appCreate/form/CreateAppModal.vue","webpack:///./src/views/project/appConfig/pages/ShelfConfig.vue?0438","webpack:///./src/views/project/appCreate/form/PushConfiguration.vue?c752","webpack:///./src/views/project/appConfig/pages/VersionPage.vue?b27d","webpack:///src/views/project/appConfig/pages/VersionPage.vue","webpack:///./src/views/project/appConfig/pages/VersionPage.vue?f2f6","webpack:///./src/views/project/appConfig/pages/VersionPage.vue","webpack:///./node_modules/_element-ui@2.15.0@element-ui/packages/row/src/row.js","webpack:///./src/assets/img/app/empty_power_on.png","webpack:///./src/views/project/appConfig/pages/VersionPage.vue?0df4","webpack:///./src/views/project/appCreate/form/EmailConfiguration.vue?9f78","webpack:///./src/views/project/appCreate/form/SMSConfiguration.vue?d2cb","webpack:///./src/views/project/appConfig/pages/CodeEmailConfig.vue?019c","webpack:///src/views/project/appConfig/pages/CodeEmailConfig.vue","webpack:///./src/views/project/appConfig/pages/CodeEmailConfig.vue?df3e","webpack:///./src/views/project/appConfig/pages/CodeEmailConfig.vue","webpack:///./src/views/project/appConfig/pages/UploadTranslationFile.vue?6117","webpack:///src/views/project/appConfig/pages/UploadTranslationFile.vue","webpack:///./src/views/project/appConfig/pages/UploadTranslationFile.vue?c8a7","webpack:///./src/views/project/appConfig/pages/UploadTranslationFile.vue","webpack:///./src/views/project/operation/DevicePublish.vue?f69b","webpack:///src/views/project/operation/DevicePublish.vue","webpack:///./src/views/project/operation/DevicePublish.vue?3927","webpack:///./src/views/project/operation/DevicePublish.vue","webpack:///./src/views/project/operation/AppPublish.vue?1b77","webpack:///./src/views/project/appConfig/pages/PushConfig.vue?1f51","webpack:///./src/views/project/operation/OperationFeedback.vue?fcfb","webpack:///./src/views/project/appConfig/pages/GetKey.vue?de23","webpack:///src/views/project/appConfig/pages/GetKey.vue","webpack:///./src/views/project/appConfig/pages/GetKey.vue?5e25","webpack:///./src/views/project/appConfig/pages/GetKey.vue","webpack:///./src/views/project/appConfig/pages/PageConfig.vue?9562","webpack:///./src/utils/ProblemTypes.js","webpack:///./src/views/project/appCreate/AppAutoConfig.vue?64b0","webpack:///./src/views/project/appCreate/form/IOSCertificateUpload.vue?a92f","webpack:///src/views/project/appCreate/form/IOSCertificateUpload.vue","webpack:///./src/views/project/appCreate/form/IOSCertificateUpload.vue?0013","webpack:///./src/views/project/appCreate/form/IOSCertificateUpload.vue","webpack:///./src/views/project/appCreate/form/FunctionSetting.vue?ddc2","webpack:///src/views/project/appCreate/form/FunctionSetting.vue","webpack:///./src/views/project/appCreate/form/FunctionSetting.vue?b5b1","webpack:///./src/views/project/appCreate/form/FunctionSetting.vue","webpack:///./src/views/project/appCreate/form/DeviceListSetting.vue?cdf8","webpack:///src/views/project/appCreate/form/DeviceListSetting.vue","webpack:///./src/views/project/appCreate/form/DeviceListSetting.vue?c9e7","webpack:///./src/views/project/appCreate/form/DeviceListSetting.vue","webpack:///./src/views/project/appCreate/form/EmailConfiguration.vue?123a","webpack:///src/views/project/appCreate/form/EmailConfiguration.vue","webpack:///./src/views/project/appCreate/form/EmailConfiguration.vue?75be","webpack:///./src/views/project/appCreate/form/EmailConfiguration.vue","webpack:///./src/views/project/appCreate/form/SMSConfiguration.vue?79a4","webpack:///src/views/project/appCreate/form/SMSConfiguration.vue","webpack:///./src/views/project/appCreate/form/SMSConfiguration.vue?ee16","webpack:///./src/views/project/appCreate/form/SMSConfiguration.vue","webpack:///./src/views/project/appCreate/form/PushConfiguration.vue?ab78","webpack:///src/views/project/appCreate/form/PushConfiguration.vue","webpack:///./src/views/project/appCreate/form/PushConfiguration.vue?b228","webpack:///./src/views/project/appCreate/form/PushConfiguration.vue","webpack:///./src/views/project/appCreate/form/Language.vue?05c6","webpack:///src/views/project/appCreate/form/Language.vue","webpack:///./src/views/project/appCreate/form/Language.vue?7920","webpack:///./src/views/project/appCreate/form/Language.vue","webpack:///./src/views/project/appCreate/form/AppCreate.vue?6aef","webpack:///src/views/project/appCreate/form/AppCreate.vue","webpack:///./src/views/project/appCreate/form/AppCreate.vue?54d6","webpack:///./src/views/project/appCreate/form/AppCreate.vue","webpack:///./src/views/project/appCreate/form/BrandSetting.vue?3c6e","webpack:///./src/views/project/appCreate/form/ColorPhone.vue?ad2b","webpack:///src/views/project/appCreate/form/ColorPhone.vue","webpack:///./src/views/project/appCreate/form/ColorPhone.vue?6267","webpack:///./src/views/project/appCreate/form/ColorPhone.vue","webpack:///./src/views/project/appCreate/form/Color.vue?4470","webpack:///src/views/project/appCreate/form/Color.vue","webpack:///./src/views/project/appCreate/form/Color.vue?8e3e","webpack:///./src/views/project/appCreate/form/Color.vue","webpack:///src/views/project/appCreate/form/BrandSetting.vue","webpack:///./src/views/project/appCreate/form/BrandSetting.vue?ee67","webpack:///./src/views/project/appCreate/form/BrandSetting.vue","webpack:///src/views/project/appCreate/AppAutoConfig.vue","webpack:///./src/views/project/appCreate/AppAutoConfig.vue?5f39","webpack:///./src/views/project/appCreate/AppAutoConfig.vue","webpack:///./src/views/project/product/Company.vue?484d","webpack:///./src/views/project/appConfig/pages/BuildConfig.vue?35e4","webpack:///src/views/project/appConfig/pages/BuildConfig.vue","webpack:///./src/views/project/appConfig/pages/BuildConfig.vue?472c","webpack:///./src/views/project/appConfig/pages/BuildConfig.vue","webpack:///./src/views/project/appConfig/pages/BuildConfig.vue?f50c","webpack:///./src/views/project/appConfig/pages/CodeSmsConfig.vue?9516","webpack:///./src/assets/img/app/splash-preview.png","webpack:///./src/views/project/appCreate/form/IOSCertificateUpload.vue?8d69","webpack:///./node_modules/_vue-json-editor@1.4.3@vue-json-editor/vue-json-editor.vue?2f96","webpack:///./src/views/project/appConfig/pages/FunctionConfig.vue?4f98","webpack:///./src/components/MImgUpload.vue?1b66","webpack:///./src/views/project/appConfig/AppConfig.vue?0efe","webpack:///./src/views/project/product/ProductCard.vue?7842","webpack:///./src/views/project/appConfig/pages/AppCloudConfig.vue?bc03","webpack:///./src/views/project/operation/UserList.vue?e0a8","webpack:///src/views/project/operation/UserList.vue","webpack:///./src/views/project/operation/UserList.vue?fabc","webpack:///./src/views/project/operation/UserList.vue"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","projectId","staticClass","directives","name","rawName","value","expression","staticStyle","_v","_s","$t","showType","on","emitValue","updateUserIncrease","pictureUserIncreaseMax","model","callback","$$v","year","_e","month","_l","item","key","label","staticRenderFns","component","root","factory","module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","Ajv","err","treemode","textmode","util","JSONEditor","container","options","json","Error","ieVersion","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","destroy","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","refresh","registerMode","i","prop","isArray","reserved","compileSchema","resolve","Cache","SchemaObject","stableStringify","formats","rules","v5","async","co","compileAsync","addKeyword","ValidationError","META_SCHEMA_ID","SCHEMA_URI_FORMAT","SCHEMA_URI_FORMAT_FUNC","str","test","META_IGNORE_OPTIONS","opts","self","schemaKeyRef","v","getSchema","schemaObj","_addSchema","_compile","valid","_opts","errors","addSchema","_skipValidation","_meta","Array","undefined","normalizeId","checkUnique","_schemas","meta","addMetaSchema","skipValidation","throwOrLogError","$schema","defaultMeta","currentUriFormat","_formats","uri","message","errorsText","keyRef","_getSchemaObj","_refs","removeSchema","_removeAllSchemas","_cache","del","jsonStr","RegExp","schemas","regex","shouldAddSchema","cached","addUsedSchema","localRefs","ids","put","compiling","callValidate","$async","currentOpts","_metaOpts","refs","refVal","_validate","result","apply","separator","dataVar","text","e","dataPath","slice","addFormat","format","addInitialSchemas","metaSchema","optsSchemas","addInitialFormats","getMetaSchemaOptions","metaOpts","copy","cache","_loadingSchemas","RULES","loopRequired","Infinity","transpile","setup","beautify","indent_size","errorDataPath","_errorDataPathProperty","enable","code","js_beautify","validateGenerator","baseId","patterns","patternsHash","defaults","defaultsHash","customRules","localCompile","_schema","_root","isRoot","sourceCode","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","vars","refValCode","patternCode","defaultCode","customRuleCode","validateCode","_transpileFunc","eval","ref","url","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","refId","inline","regexStr","index","toQuotedString","valueStr","rule","parentSchema","it","definition","macro","keyword","arr","statement","ucs2length","equal","res","_resolve","refPath","_getFullPath","getFullPath","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","fullPath","resolveIds","PREVENT_SCOPE_CHANGE","toHash","hash","parts","split","part","unescapeFragment","$ref","SIMPLE_INLINED","limit","checkNoRef","countKeys","count","normalize","protocol","host","path","TRAILING_SLASH_HASH","replace","_resolveIds","escapeFragment","punycode","Url","slashes","auth","port","hostname","search","query","pathname","href","urlParse","urlResolve","resolveObject","urlResolveObject","urlFormat","protocolPattern","portPattern","delims","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","isObject","u","obj","isString","source","relative","arg","isNull","isNullOrUndefined","TypeError","rest","trim","proto","exec","lowerProto","toLowerCase","substr","match","atSign","hostEnd","hec","lastIndexOf","decodeURIComponent","parseHost","ipv6Hostname","hostparts","l","newpart","j","k","charCodeAt","validParts","notHost","bit","push","unshift","join","domainArray","newOut","s","encode","h","ae","esc","encodeURIComponent","escape","qm","charAt","rel","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","splice","isAbsolute","__WEBPACK_AMD_DEFINE_RESULT__","global","nodeType","freeGlobal","window","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","baseMinusTMin","floor","Math","stringFromCharCode","String","fromCharCode","type","RangeError","map","array","fn","mapDomain","string","labels","encoded","ucs2decode","extra","output","counter","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","decode","input","out","basic","oldi","w","t","baseMinusT","inputLength","n","bias","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","toASCII","webpackPolyfill","deprecate","paths","children","hasOwnProperty","qs","sep","eq","regexp","maxKeys","len","kstr","vstr","x","idx","stringifyPrimitive","isFinite","ks","a","b","arrA","arrB","o","to","checkDataType","dataType","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","types","object","null","number","integer","coerceToTypes","getProperty","escapeQuotes","varOccurences","varReplace","cleanUpCode","cleanUpVarErrors","schemaHasRules","getPathExpr","getPath","getData","escapeJsonPointer","COERCE_TO_TYPES","IDENTIFIER","SINGLE_QUOTE","pos","matches","expr","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","ERRORS_REGEXP","REMOVE_ERRORS","REMOVE_ERRORS_ASYNC","RETURN_VALID","RETURN_TRUE","RETURN_ASYNC","RETURN_TRUE_ASYNC","currentPath","jsonPointers","isNumber","joinPaths","RELATIVE_JSON_POINTER","$data","lvl","jsonPointer","segments","segment","unescapeJsonPointer","cmp","space","cycles","replacer","f","node","aobj","bobj","seen","parent","level","indent","colonSeparator","toJSON","objectKeys","sort","keyValue","toString","has","at","ch","escapee","r","next","hex","uffff","parseInt","white","word","reviver","walk","holder","gap","rep","escapable","quote","lastIndex","partial","mind","setupAsync","ASYNC","checkGenerators","checkAsyncFunction","TRANSPILE","getNodent","getRegenerator","MODES","regenerator","nodent","required","check","runtime","regeneratorTranspile","log","dontInstallRequireHook","nodentTranspile","promises","sourcemap","setTimeout","loadSchema","_compileAsync","firstCall","missingSchema","loadMissingSchema","deferCallback","missingRef","_callbacks","schemaLoaded","sch","$keyword","$top","$lvl","$dataLvl","dataLevel","rootId","$es7","yieldAwait","dataPathArr","$errorKeyword","$valid","$breakOnError","$closingBraces1","$closingBraces2","$typeSchema","$typeIsArray","coerceTypes","$coerceToTypes","$schemaPath","$errSchemaPath","$method","$dataType","$coerced","$bracesCoercion","arr1","$type","$i","l1","$$outStack","createErrors","messages","__err","compositeRule","$parentData","$dataProperty","arr2","$rulesGroup","i2","l2","$shouldUseGroup","useDefaults","properties","$schemaKeys","arr3","$propertyKey","i3","l3","$sch","default","$passData","items","arr4","l4","arr5","$rule","i5","l5","$shouldUseRule","custom","$ruleValidate","$ruleErrs","$errs","$ruleErr","$rDef","$asyncKeyword","$inline","$macro","statements","$it","$wasComposite","$code","passContext","def_callRuleValidate","def_customError","$typeChecked","additionalProperties","patternProperties","patternGroups","gen","ctx","args","Promise","reject","onFulfilled","ret","onRejected","throw","done","toPromise","isPromise","then","isGeneratorFunction","isGenerator","thunkToPromise","arrayToPromise","objectToPromise","all","results","constructor","promise","defer","displayName","val","wrap","createPromise","__generatorFunction__","validation","DATE","DAYS","TIME","HOSTNAME","URI","UUID","JSON_POINTER","formatDefs","fName","compare","date","day","time","full","hour","minute","second","timeZone","fast","email","ipv4","ipv6","uuid","date_time","compareDate","compareTime","compareDateTime","DATE_TIME_SEPARATOR","dateTime","NOT_URI_FRAGMENT","d1","d2","t1","t2","dt1","dt2","ruleModules","keywords","group","allOf","anyOf","dependencies","enum","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","uniqueItems","$refCode","$refVal","$message","missingRefs","$error","__callValidate","$closingBraces","$noEmptySchema","every","$schemaDeps","$propertyDeps","$property","$deps","$currentErrorPath","_$property","$prop","$propertyPath","$missingProperty","$isData","$schemaValue","$format","$isObject","$formatRef","$dataNxt","$nextData","$additionalItems","additionalItems","$currErrSchemaPath","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$schemaValueExcl","$exclusive","$opExpr","$opStr","unicode","multipleOfPrecision","$allErrorsOption","$regexp","$pProperties","$pPropertyKeys","$aProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","$pgProperties","$pgPropertyKeys","i1","$pProperty","$pgProperty","$additionalProperty","$useDefaults","i4","$hasDefault","$useData","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess","$propertySch","$loopRequired","enableV5","inlineFunctions","_addKeyword","inlineFunc","containsMacro","_formatLimit","$shouldContinue","$ifPassed","$caseIndex","if","continue","$schemaFormat","$isDataFormat","$schemaValueFormat","$compare","$result","$key","$matched","$missingPattern","_addRule","ruleGroup","rg","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","multiselection","nodes","errorNodes","focusTarget","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","_debouncedValidate","searchBox","modeSwitcher","debounce","bind","Function","content","table","params","field","_setRoot","recurse","expand","appendChild","getNodeFromTarget","blur","getValue","updateField","querySelector","focus","menu","collapse","tbody","getDom","action","add","_onChange","setError","duplicateErrors","schemaErrors","improveSchemaError","findNode","filter","entry","reduce","findParents","child","updateDom","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","select","range","setSelectionOffset","getSelectionOffset","nodeName","editor","animateTimeout","animateCallback","finalScrollTop","min","max","animate","diff","abs","document","createElement","className","onEvent","event","_onEvent","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","expandAll","title","collapseAll","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","stopPropagation","col","contentOuter","colgroupContent","width","anchor","onClose","click","onDuplicate","onRemove","close","show","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","oldValue","newValue","updateValue","changeType","oldType","newType","insertBefore","beforeNode","afterNode","insertAfter","append","oldBeforeNode","moveBefore","newBeforeNode","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","Date","oldSelection","setSelection","newSelection","jsonlint","jsonString","sanitize","jsString","chars","curr","prev","lastNonWhitespace","pp","skipBlockComment","skipComment","parseString","parseKey","specialValues","escapeUnicodeChars","Number","Boolean","isUrlRegex","isUrl","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","removeClassName","stripFormatting","divElement","childNodes","iMax","style","removeAttribute","attributes","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","getSelection","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","createTextNode","setStart","setEnd","getInnerText","element","buffer","nodeValue","flush","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","detachEvent","parsePath","jsonPath","remainder","SyntaxError","substring","enums","more","additionalProperty","insideRect","_margin","right","func","wait","immediate","timeout","context","later","callNow","textDiff","oldText","newText","oldEnd","newEnd","parser","trace","yy","symbols_","terminals_","2","4","6","8","10","11","14","17","18","21","22","23","24","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","3","5","7","9","12","13","15","16","1","19","20","25","defaultActions","parseError","stack","vstack","lstack","recovering","TERROR","EOF","lexer","setInput","yylloc","yyloc","popStack","lex","token","symbol","preErrorSymbol","state","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","matched","conditionStack","lines","unput","less","pastInput","past","upcomingInput","pre","tempMatch","_currentRules","flex","begin","condition","popState","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","scrollTo","_clearDelay","forceSearch","resultCount","innerHTML","eventListeners","list","focusButton","li","createMenuItems","domItems","domItem","button","hide","submenu","buttonSubmenu","divIcon","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","naturalSort","appendNodeFactory","expanded","setField","fieldEditable","setValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","_updateEditability","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","fit","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","trTemp","AppendNode","moveTo","currentIndex","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","_onAction","domValue","classNames","isEmpty","checkbox","tdCheckbox","checked","getUTCMilliseconds","tdSelect","valueFieldHTML","visibility","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","isDraggedNode","some","startAutoScroll","_createDomField","isFirst","domTree","marginLeft","fieldText","contentEditable","spellcheck","_escapeHTML","_updateSchema","updateIndexes","_updateDomIndexes","_findSchema","_findEnum","composite","childSchema","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","open","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","titles","auto","lower","num","numFloat","isNaN","htmlEscaped","html","escapeUnicode","escapedText","_escapeJSON","escaped","oFxNcL","oFyNcL","sre","dre","hre","ore","insensitive","y","xN","yN","xD","yD","cLoc","numS","trAppend","tdAppend","domText","paddingLeft","current","onSwitch","availableModes","form","view","currentMode","currentTitle","box","position","ace","MAX_ERRORS","DEFAULT_THEME","indentation","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","buttonCompact","compact","editorDom","edit","$blockScrolling","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","resize","force","originalOnChange","validationErrors","marginBottom","paddingBottom","doValidate","hidden","ACE_NAMESPACE","acequirejs","define","deps","payload","payloads","original","_acequire","parentId","lookup","dep","acequire","packagedModule","normalizeModule","moduleName","chunks","mod","packaged","req","returnValue","exportAce","ns","real","compliantExecNpcg","compliantLastIndexIncrement","getNativeFlags","ignoreCase","multiline","extended","sticky","from","r2","_xregexp","captureNames","Empty","that","bound","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","deleteCount","removeCount","removed","insert","remove","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","createEmpty","boxedString","splitString","fun","toObject","thisp","reduceRight","sought","toInteger","getPrototypeOf","__proto__","getOwnPropertyDescriptor","ERR_NON_OBJECT","property","descriptor","enumerable","configurable","getter","setter","getOwnPropertyNames","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","Type","defineProperties","doesDefinePropertyWork","exception","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","ERR_NON_OBJECT_DESCRIPTOR","ERR_NON_OBJECT_TARGET","ERR_ACCESSORS_NOT_SUPPORTED","seal","freeze","freezeObject","preventExtensions","isSealed","isFrozen","isExtensible","hasDontEnumBug","dontEnums","dontEnumsLength","ii","dontEnum","now","getTime","ws","trimBeginRegexp","trimEndRegexp","XHTML_NS","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","el","addCssClass","removeCssClass","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssString","cssText","importCssStylsheet","link","getInnerWidth","computedStyle","getInnerHeight","scrollbarWidth","inner","minWidth","outer","noScrollbar","offsetWidth","withScrollbar","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","setInnerHtml","innerHtml","cloneNode","replaceChild","setInnerText","textContent","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","implement","oop","Keys","MODIFIER_KEYS","224","KEY_MODS","FUNCTION_KEYS","27","32","33","34","35","36","37","38","39","40","44","45","46","96","97","98","99","100","101","102","103","104","105","112","113","114","115","116","117","118","119","120","121","122","123","144","145","PRINTABLE_KEYS","48","49","50","51","52","53","54","55","56","57","59","61","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","107","109","110","186","187","188","189","190","191","192","219","220","221","222","111","106","enter","mods","pow","keyCodeToString","keyString","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","os","platform","isWin","isIE","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isTouchPad","isChromeOS","useragent","pressedKeys","ts","addListener","wrapper","_wrapper","removeListener","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","changedTouches","clientX","clientY","factor","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","elements","timeouts","callbackName","startX","startY","timer","clicks","eventNames","onMousedown","isNewClick","_clicks","onDblclick","getModifierHash","metaKey","normalizeCommandKeys","hashId","OSKey","altGr","location","keyLocation","timeStamp","dt","defaultPrevented","resetPressedKeys","lastT","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","stringReverse","reverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copyArray","deepCopy","cons","arrayToMap","createMap","props","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","offset","deferredCall","fcn","deferred","cancel","schedule","isPending","delayedCall","defaultTimeout","lang","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","setAttribute","opacity","PLACEHOLDER","copied","pasted","inComposition","tempStyle","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","resetSelection","syncSelection","syncValue","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","onCompositionUpdate","onCompositionStart","onSelect","selectAll","setInputHandler","cb","getInputHandler","afterContextMenu","onPaste","execCommand","onTextInput","onInput","handleClipboardData","clipboardData","mime","setData","doCopy","isCut","getCopyText","onCut","onCopy","onCommandKey","closeTimeout","$readOnly","session","markUndoGroup","clearSelection","lastValue","getRange","setRange","syncComposition","onContextMenuClose","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","getElement","setReadOnly","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","DRAG_OFFSET","DefaultHandlers","mouseHandler","$clickSelection","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcDistance","ax","ay","bx","by","calcRangeOrientation","row","column","ev","inSelection","getDocumentPosition","mousedownEvent","selectionRange","getSelectionRange","selectionEmpty","moveToPosition","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","distance","getBracketRange","getWordRange","isMultiLine","contains","getLineRange","getAccelKey","$lastScrollTime","isScrolable","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","getHeight","getWidth","GutterHandler","tooltipTimeout","mouseEvent","tooltipAnnotation","gutter","$gutterLayer","tooltip","GutterTooltip","showTooltip","annotation","$annotations","hideTooltip","maxRow","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","$tooltipFollowsMouse","moveTooltip","gutterElement","gutterRegion","getRegion","selectTo","isMousePressed","$gutter","windowWidth","innerWidth","windowHeight","innerHeight","MouseEvent","$inSelection","propagationStopped","AUTOSCROLL_DELAY","SCROLL_CURSOR_DELAY","SCROLL_CURSOR_HYSTERESIS","DragdropHandler","blankImage","src","dragSelectionMarker","timerId","dragCursor","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","mouseTarget","prevCursor","vMovement","hMovement","moveCursorToPosition","autoScroll","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","onDragInterval","addDragMarker","toOrientedRange","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","getReadOnly","cancelDrag","draggable","dataTransfer","effectAllowed","setDragImage","clearData","getTextRange","dropEffect","setCursorStyle","onDragEnter","canAccept","getDropEffect","onDragOver","onMouseMoveTimer","onDragLeave","onDrop","moveText","dropData","copyAllowed","moveAllowed","copyModifierState","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","clickCount","eventTarget","unselectable","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","send","loadScript","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","_signal","once","newCallback","handlers","_disabled_","old","removeDefaultHandler","capturing","off","removeAllListeners","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","forwardTo","handlesSet","reportError","msg","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","setDefaultValues","optionHash","net","workerPath","modePath","themePath","basePath","suffix","$moduleUrls","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attr","deHyphenate","m1","toUpperCase","moduleUrl","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","MouseHandler","focusEditor","windowBlurred","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","character","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","command","passEvent","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","isEqual","compareRange","containsRange","intersects","isEnd","isStart","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","tabSize","getTabSize","isTabStop","firstColumnPosition","screenToDocumentPosition","beforeCursor","getDisplayLine","leadingSpace","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","ranges","r1","fromJSON","rangeList","toSingleRange","MAX_TOKEN_COUNT","Tokenizer","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","splitterRurles","caseInsensitive","adjustedregex","matchcount","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","merge","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","$embeds","getEmbeds","normalizeRules","processState","processed","stateName","includeName","toInsert","noEscape","keywordMap","createKeywordMapper","splitChar","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","addUnicodePackage","pack","packages","L","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","S","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","Mode","$behaviour","getTokenizer","$tokenizer","$highlightRules","lineCommentStart","blockComment","toggleCommentLines","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","iter","minEmptyLength","toggleBlockComment","colDiff","iterator","initialRange","startRange","endRange","getNextLineIndent","tab","$getIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","param","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","$id","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$getTransformedPoint","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$clipPositionToDocument","$insertRight","noClip","Document","textOrLines","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","Fold","subFolds","consumePoint","consumeRange","restorePoint","restoreRange","subFold","collapseChildren","addSubFold","afterStart","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","docRow","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$useWrapMode","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","findMatchingBracket","getCommentFoldRange","dir","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$findOpeningBracket","$brackets","bracket","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","onChangeFold","bgTokenizer","resetCaches","$resetRowCache","$docRowCache","$screenRowCache","$getRowCacheIndex","cacheArray","low","hi","mid","$wrapData","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$undoManager","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","undoManager","$syncInformUndoManager","execute","mergeUndoDeltas","$defaultUndoManager","getTabString","$useSoftTabs","$mode","$indentWithTabs","$tabSize","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","markers","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","isUndo","fromRange","toPosition","toRange","rowDiff","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","size","$moveLines","$clipRowToDocument","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","CHAR","CHAR_EXT","PUNCTUATION","SPACE","TAB","TAB_SPACE","isFullWidth","splits","displayLength","lastSplit","lastDocSplit","isCode","$wrapAsCode","indentedSoftWrap","$indentedSoftWrap","maxIndent","getWrapIndent","addSplit","displayed","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","wrapIndent","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","matchIterator","backwards","lineIterator","$lineIterator","_callback","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","isDefault","other","otherPos","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","keyBinding","$mouseHandler","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","selections","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","cursorPos","onResize","getTheme","getFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getCursorPosition","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","transform","$mergeNextCommand","d","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setShowInvisibles","showInvisibles","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","getWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","nr","fp","decimals","nnr","toFixed","replaceRange","endPoint","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","alignCursor","getCursorPositionScreen","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","keybindingId","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","getBorderClass","tl","br","bl","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","fragment","$renderLinesFragment","createDocumentFragment","$textToken","$renderToken","replaceReg","replaceFunc","tabIdx","idx4","classToUse","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","renderTokens","addTokens","$measureNode","isIE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","cursorLeft","cursorTop","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","VScrollBar","$scrollbarWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","$measureCharWidth","GutterLayer","MarkerLayer","TextLayer","CursorLayer","editorCss","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","$timer","canvasPos","textToScreenCoordinates","keepTextAreaAtCursor","$themeId","cssClass","$theme","isDark","setMouseCursor","WorkerClient","topLevelNamespaces","classname","workerUrl","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","workerSrc","Blob","blob","blobUrl","URL","webkitURL","createObjectURL","Worker","DOMException","$workerBlob","blobURL","revokeObjectURL","callbackId","callbacks","onmessage","deltaQueue","cmd","emit","ex","attachToDocument","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","blobBuilder","getBlob","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","selectionBefore","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarkers","updateMarker","undosRequired","isSamePoint","alt","ctrl","accel","selectionMode","isMultiSelect","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","selectMore","multiSelect","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","getSelectionMarkers","$blockChangeEvents","$onAddRange","$onRemoveRange","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","MultiSelect","$multiselectOnSessionChange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","altDown","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","tmp","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","startW","textW","endW","isLeftAligned","isRightAligned","alignLeft","alignRight","unAlign","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","binarySearch","comparator","findAnnotations","oldWidget","gutterAnno","sc","arrow","Renderer","_id","getElementById","env","tagName","oldNode","createEditSession","version","get_blob","Builder","MSBlobBuilder","bag","builder","endings","JsonHighlightRules","MatchingBraceOutdent","openBracePos","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","CstyleBehaviour","isSaneInsertion","recordAutoInsert","recordMaybeInsert","rightChar","matching","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","next_indent","leftChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","$matchTokenType","iterator2","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","worker","searchboxCss","showReplaceForm","div","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","isReplace","findPrev","$syncOptions","noMatch","replaceAndFindNext","cloneValue","$set","submitFetchList","cleanSearch_fetchList","scopedSlots","_u","_f","createDates","editDialogVisible","$event","doUpload","beforeUpload","slot","onSubmit","resetForm","page","total","fetchList","isChange","showUpdate","changeEdit","sync","cancelUpdate","buttonLoading","handleChange","imageUrl","active","saveLoading","saveLogo","logo","file","uploadLoading","saveSplash","splashPreview","saveColor","themeColor","color","saveBtnIcons","homeBtnDefault","homeBtnActive","msgBtnDefault","msgBtnActive","mineBtnDefault","mineBtnActive","tabIndex","getHomeImg","getMsgImg","getMyImg","savePush","statusBarIcon","formatDate","savePkg","suitIndex","suit","getPreviewImages","this$1","activeProjectId","nativeOn","$store","getters","hasPower","canAddServerZones","getServerZone","localOrHZ","tp","icons","addDialogVisible","addIconFormShow","add_form","add_rules","autoGenerateTP","save_add","addIconForm","addIconFormRules","icon","iconGray","submitIcon","resetIconForm","activeItem","detailName","firm","aliPK","getUserNamePrefix","addAccount","remark","createAt","info","removeButtonShow","visible","moveToOther","infoDialogVisible","editIconFormShow","edit_form","edit_rules","editAliyunDisabled","save_edit","delDialogVisible","delForm","delFormRules","verifyBtn","sendVerifyCode","activeText","delProduct","components","MImgUpload","MImage","defaultItem","product_types","deviceType","deviceTypeName","deviceTypeNameDetail","deviceTypePower","deviceTypeParam","deviceP2P","capability","productKey","trigger","editIconForm","editIconFormRules","verify","defaultText","totalTime","updateLoading","deleteLoading","methods","post","filterKeys","resultCode","showClose","duration","catch","$refs","reload","verifyTimer","currentTime","validateField","errorMsg","$StringUtil","isBlank","showSendVerifyTextChange","getLocale","delete","resetDelForm","resetFields","$route","oemId","serverZone","computed","watch","newVal","oldVal","deep","NavTop","Breadcrumb","ProductCard","created","power_2100","getIconList","loading","types_in_list","icons_in_list","has_search","nameSelection","p2pType","dialogLoading","$notify","formData","FormData","raw","headers","$axios","getFileList","toTranslationFile","versions","getColor","historyRollback","power_2281","language","onJsonSave","saveDrawer","save","viewDialog","fileList","getLangLabel","phoneType","getValidUrl","fileUrl","uploadDate","showBtns","onSave","locale","expandedOnStart","internalChange","expandedModes","en","zh","$emit","$nextTick","$el","includes","realSrc","realAlt","handleImgLoadError","handleImgLoadSuccess","saveFunction","formatValue","hasAnyPowers","dele","editRow","edit_roleList","saveEdit","Aside","power_2520","fetchRoles","searchId","roles","addShow","sourceApp","createTime","toConfig","pageSizes","currentPage","pageSize","getList","submit","uploadFile","devTypeID","deviceVersionID","deviceName","doc_device_counts","user_token","project_stat_source_app","iframe_header","Authorization","tab_now","doc_device_active","selectOEMByTP","openAddCompanyDialogVisible","oemInfoHasOtherList","oemName","toPorduct","openotherProductDialogVisible","openUpdateCompanyDialogVisible","otherProductDialogVisible","company","addProduct","productInfoList","handleSelectionChange","addCompanyDialogVisible","companyMessage","_n","addCompany","updeteCompanyDialogVisible","updateOMEInfo","updateCompany","openDialog","uploadLang","iosForm","getUrl","adhoc","dis","p12","androidForm","googleService","hwAgconnect","getLoading","getJks","jks","downloadLoading","downloadZip","showSelectLang","isIndeterminate","handleCheckAllChange","checkAll","handleCheckedChange","checkedLangList","downloadLang","background","openContent","isDealed","getType","problemType","$formatterCellValue","$formatDate","updateTime","dealChange","totalNum","dealDrawer","dealForm","dealSubmit","contentDialogVisible","contentProps","navMargin","indexMargin","loginFlag","$router","ruleValidate","handleSubmit","handleCancel","componentName","justify","align","marginRight","class","$slots","createDate","partnerKey","getPassword","partnerSecret","changePasswordKey","iosPassword","problemTypes","getLabel","getAllLabel","list1","item1","Problem","editApp","editAppModal","showLoadingIcon","tabClick","brandSettingRawData","changeLogoPicture","brandSettingData","functionSettingRawData","functionSettingData","iosCertificateRawData","iosCertificateData","LanguageRawData","LanguageData","deviceListRawData","deviceListData","emailRawData","GetEmail","emailData","SMSRawData","GetSMS","SMSData","PushConfigRawData","PushConfigData","applicationId","compileStatus","emptyUrl","savedLogoUrl","web","supportemail","company_en","showEditAppModal","showDeleteAppModal","deleteAppModalShow","awaitDeleteAppModal","deleteApp","emailPushModalShow","emailAddress","sendTestEmail","smsPushModalShow","phoneNumber","sendTestMessage","handleUploadForPushFile","release","handleUploadForReleaseFile","handleUploadForReleaseMobileprovisionFile","mobileprovision","developer","handleUploadForDevFile","handleUploadForDevMobileprovisionFile","handleUploadForAdhocFile","Privacypolicy","helper","handleUploadForEmpty","handleUploadForAlarmempty","showLanguageModal","choosenLanguage","lastCreateDate","androidUrl","iosUrl","logoClass","changeCardClass","logoLoading","handleUploadForLogo","logoTipClass","splashClass","splashLoading","handleUploadForSplash","splashTipClass","colorClass","showColorModal","setColor","top_title_font_color","top_title_bg_color","prompt_font_color","prompt_bg_color","bottom_navigation_bg_color","bottom_navigation_font_color","classForTemplate","green","changeTemplate","deepblue","purple","navyblue","orange","lightgreen","red","domProps","composing","codeUrl"],"mappings":"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","file":"js/project.2bce0118.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-container',{attrs:{\"direction\":\"vertical\"}},[_c('NavTop',{attrs:{\"project-id\":_vm.projectId,\"active\":\"stat\"}}),_c('Breadcrumb',{attrs:{\"project-id\":_vm.projectId,\"list\":[ 'stat', 'stat_user' ]}}),_c('el-container',{staticClass:\"body-container\"},[_c('Aside',{attrs:{\"project-id\":_vm.projectId,\"page\":\"stat\",\"active\":\"stat_user\"}}),(_vm.power_2310)?_c('el-main',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}]},[_c('div',{staticClass:\"ivu-card-bordered ivu-card\",staticStyle:{\"width\":\"100%\",\"height\":\"98%\",\"border\":\"1px solid #DCDFE6\",\"background-color\":\"#fdfdfd\"}},[_c('div',{staticStyle:{\"overflow\":\"hidden\",\"font-size\":\"30px\",\"font-weight\":\"bold\",\"height\":\"8%\",\"padding\":\"20px 20px\"}},[_c('span',{staticStyle:{\"float\":\"left\"}},[_vm._v(_vm._s(_vm.$t('statUser.title')))])]),_c('div',{staticStyle:{\"overflow\":\"hidden\",\"height\":\"5%\"}},[(_vm.showType=='year')?_c('el-date-picker',{staticStyle:{\"width\":\"200px\",\"float\":\"right\",\"margin-right\":\"40px\"},attrs:{\"type\":\"year\",\"format\":\"yyyy\",\"placeholder\":this.$t('statUser.selectYear')},on:{\"change\":function (emitValue) { return _vm.updateUserIncrease(emitValue,_vm.pictureUserIncreaseMax); }},model:{value:(_vm.year),callback:function ($$v) {_vm.year=$$v},expression:\"year\"}}):_vm._e(),(_vm.showType=='month')?_c('el-date-picker',{staticStyle:{\"width\":\"200px\",\"float\":\"right\",\"margin-right\":\"40px\"},attrs:{\"type\":\"month\",\"format\":\"yyyyMM\",\"placeholder\":this.$t('statUser.selectMonth')},on:{\"change\":function (emitValue) { return _vm.updateUserIncrease(emitValue,_vm.pictureUserIncreaseMax); }},model:{value:(_vm.month),callback:function ($$v) {_vm.month=$$v},expression:\"month\"}}):_vm._e(),_c('el-select',{staticStyle:{\"width\":\"150px\",\"float\":\"right\",\"margin-right\":\"20px\"},model:{value:(_vm.showType),callback:function ($$v) {_vm.showType=$$v},expression:\"showType\"}},_vm._l((_vm.showTypeList),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1),_c('div',{staticClass:\"ivu-picture-max-picture\",attrs:{\"id\":\"overviewPictureUserIncreaseMax\"}})])]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/_cache-loader@2.0.1@cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/_vue-loader@15.9.6@vue-loader/lib/index.js??vue-loader-options!./ProjectStatUser.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/_cache-loader@2.0.1@cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/_vue-loader@15.9.6@vue-loader/lib/index.js??vue-loader-options!./ProjectStatUser.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProjectStatUser.vue?vue&type=template&id=71d7e497&scoped=true&\"\nimport script from \"./ProjectStatUser.vue?vue&type=script&lang=js&\"\nexport * from \"./ProjectStatUser.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/_vue-loader@15.9.6@vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"71d7e497\",\n null\n \n)\n\nexport default component.exports","/*!\r\n * jsoneditor.js\r\n *\r\n * @brief\r\n * JSONEditor is a web-based tool to view, edit, format, and validate JSON.\r\n * It has various modes such as a tree editor, a code editor, and a plain text\r\n * editor.\r\n *\r\n * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+\r\n *\r\n * @license\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\r\n * use this file except in compliance with the License. You may obtain a copy\r\n * of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\r\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r\n * License for the specific language governing permissions and limitations under\r\n * the License.\r\n *\r\n * Copyright (c) 2011-2017 Jos de Jong, http://jsoneditoronline.org\r\n *\r\n * @author Jos de Jong, \r\n * @version 5.5.11\r\n * @date 2017-01-06\r\n */\r\n(function webpackUniversalModuleDefinition(root, factory) {\r\n\tif(typeof exports === 'object' && typeof module === 'object')\r\n\t\tmodule.exports = factory();\r\n\telse if(typeof define === 'function' && define.amd)\r\n\t\tdefine([], factory);\r\n\telse if(typeof exports === 'object')\r\n\t\texports[\"JSONEditor\"] = factory();\r\n\telse\r\n\t\troot[\"JSONEditor\"] = factory();\r\n})(this, function() {\r\nreturn /******/ (function(modules) { // webpackBootstrap\r\n/******/ \t// The module cache\r\n/******/ \tvar installedModules = {};\r\n\r\n/******/ \t// The require function\r\n/******/ \tfunction __webpack_require__(moduleId) {\r\n\r\n/******/ \t\t// Check if module is in cache\r\n/******/ \t\tif(installedModules[moduleId])\r\n/******/ \t\t\treturn installedModules[moduleId].exports;\r\n\r\n/******/ \t\t// Create a new module (and put it into the cache)\r\n/******/ \t\tvar module = installedModules[moduleId] = {\r\n/******/ \t\t\texports: {},\r\n/******/ \t\t\tid: moduleId,\r\n/******/ \t\t\tloaded: false\r\n/******/ \t\t};\r\n\r\n/******/ \t\t// Execute the module function\r\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n\r\n/******/ \t\t// Flag the module as loaded\r\n/******/ \t\tmodule.loaded = true;\r\n\r\n/******/ \t\t// Return the exports of the module\r\n/******/ \t\treturn module.exports;\r\n/******/ \t}\r\n\r\n\r\n/******/ \t// expose the modules object (__webpack_modules__)\r\n/******/ \t__webpack_require__.m = modules;\r\n\r\n/******/ \t// expose the module cache\r\n/******/ \t__webpack_require__.c = installedModules;\r\n\r\n/******/ \t// __webpack_public_path__\r\n/******/ \t__webpack_require__.p = \"\";\r\n\r\n/******/ \t// Load entry module and return exports\r\n/******/ \treturn __webpack_require__(0);\r\n/******/ })\r\n/************************************************************************/\r\n/******/ ([\r\n/* 0 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar Ajv;\r\n\ttry {\r\n\t Ajv = __webpack_require__(1);\r\n\t}\r\n\tcatch (err) {\r\n\t // no problem... when we need Ajv we will throw a neat exception\r\n\t}\r\n\r\n\tvar treemode = __webpack_require__(51);\r\n\tvar textmode = __webpack_require__(62);\r\n\tvar util = __webpack_require__(54);\r\n\r\n\t/**\r\n\t * @constructor JSONEditor\r\n\t * @param {Element} container Container element\r\n\t * @param {Object} [options] Object with options. available options:\r\n\t * {String} mode Editor mode. Available values:\r\n\t * 'tree' (default), 'view',\r\n\t * 'form', 'text', and 'code'.\r\n\t * {function} onChange Callback method, triggered\r\n\t * on change of contents\r\n\t * {function} onError Callback method, triggered\r\n\t * when an error occurs\r\n\t * {Boolean} search Enable search box.\r\n\t * True by default\r\n\t * Only applicable for modes\r\n\t * 'tree', 'view', and 'form'\r\n\t * {Boolean} history Enable history (undo/redo).\r\n\t * True by default\r\n\t * Only applicable for modes\r\n\t * 'tree', 'view', and 'form'\r\n\t * {String} name Field name for the root node.\r\n\t * Only applicable for modes\r\n\t * 'tree', 'view', and 'form'\r\n\t * {Number} indentation Number of indentation\r\n\t * spaces. 4 by default.\r\n\t * Only applicable for\r\n\t * modes 'text' and 'code'\r\n\t * {boolean} escapeUnicode If true, unicode\r\n\t * characters are escaped.\r\n\t * false by default.\r\n\t * {boolean} sortObjectKeys If true, object keys are\r\n\t * sorted before display.\r\n\t * false by default.\r\n\t * @param {Object | undefined} json JSON object\r\n\t */\r\n\tfunction JSONEditor (container, options, json) {\r\n\t if (!(this instanceof JSONEditor)) {\r\n\t throw new Error('JSONEditor constructor called without \"new\".');\r\n\t }\r\n\r\n\t // check for unsupported browser (IE8 and older)\r\n\t var ieVersion = util.getInternetExplorerVersion();\r\n\t if (ieVersion != -1 && ieVersion < 9) {\r\n\t throw new Error('Unsupported browser, IE9 or newer required. ' +\r\n\t 'Please install the newest version of your browser.');\r\n\t }\r\n\r\n\t if (options) {\r\n\t // check for deprecated options\r\n\t if (options.error) {\r\n\t console.warn('Option \"error\" has been renamed to \"onError\"');\r\n\t options.onError = options.error;\r\n\t delete options.error;\r\n\t }\r\n\t if (options.change) {\r\n\t console.warn('Option \"change\" has been renamed to \"onChange\"');\r\n\t options.onChange = options.change;\r\n\t delete options.change;\r\n\t }\r\n\t if (options.editable) {\r\n\t console.warn('Option \"editable\" has been renamed to \"onEditable\"');\r\n\t options.onEditable = options.editable;\r\n\t delete options.editable;\r\n\t }\r\n\r\n\t // validate options\r\n\t if (options) {\r\n\t var VALID_OPTIONS = [\r\n\t 'ace', 'theme',\r\n\t 'ajv', 'schema',\r\n\t 'onChange', 'onEditable', 'onError', 'onModeChange',\r\n\t 'escapeUnicode', 'history', 'search', 'mode', 'modes', 'name', 'indentation', 'sortObjectKeys'\r\n\t ];\r\n\r\n\t Object.keys(options).forEach(function (option) {\r\n\t if (VALID_OPTIONS.indexOf(option) === -1) {\r\n\t console.warn('Unknown option \"' + option + '\". This option will be ignored');\r\n\t }\r\n\t });\r\n\t }\r\n\t }\r\n\r\n\t if (arguments.length) {\r\n\t this._create(container, options, json);\r\n\t }\r\n\t}\r\n\r\n\t/**\r\n\t * Configuration for all registered modes. Example:\r\n\t * {\r\n\t * tree: {\r\n\t * mixin: TreeEditor,\r\n\t * data: 'json'\r\n\t * },\r\n\t * text: {\r\n\t * mixin: TextEditor,\r\n\t * data: 'text'\r\n\t * }\r\n\t * }\r\n\t *\r\n\t * @type { Object. }\r\n\t */\r\n\tJSONEditor.modes = {};\r\n\r\n\t// debounce interval for JSON schema vaidation in milliseconds\r\n\tJSONEditor.prototype.DEBOUNCE_INTERVAL = 150;\r\n\r\n\t/**\r\n\t * Create the JSONEditor\r\n\t * @param {Element} container Container element\r\n\t * @param {Object} [options] See description in constructor\r\n\t * @param {Object | undefined} json JSON object\r\n\t * @private\r\n\t */\r\n\tJSONEditor.prototype._create = function (container, options, json) {\r\n\t this.container = container;\r\n\t this.options = options || {};\r\n\t this.json = json || {};\r\n\r\n\t var mode = this.options.mode || 'tree';\r\n\t this.setMode(mode);\r\n\t};\r\n\r\n\t/**\r\n\t * Destroy the editor. Clean up DOM, event listeners, and web workers.\r\n\t */\r\n\tJSONEditor.prototype.destroy = function () {};\r\n\r\n\t/**\r\n\t * Set JSON object in editor\r\n\t * @param {Object | undefined} json JSON data\r\n\t */\r\n\tJSONEditor.prototype.set = function (json) {\r\n\t this.json = json;\r\n\t};\r\n\r\n\t/**\r\n\t * Get JSON from the editor\r\n\t * @returns {Object} json\r\n\t */\r\n\tJSONEditor.prototype.get = function () {\r\n\t return this.json;\r\n\t};\r\n\r\n\t/**\r\n\t * Set string containing JSON for the editor\r\n\t * @param {String | undefined} jsonText\r\n\t */\r\n\tJSONEditor.prototype.setText = function (jsonText) {\r\n\t this.json = util.parse(jsonText);\r\n\t};\r\n\r\n\t/**\r\n\t * Get stringified JSON contents from the editor\r\n\t * @returns {String} jsonText\r\n\t */\r\n\tJSONEditor.prototype.getText = function () {\r\n\t return JSON.stringify(this.json);\r\n\t};\r\n\r\n\t/**\r\n\t * Set a field name for the root node.\r\n\t * @param {String | undefined} name\r\n\t */\r\n\tJSONEditor.prototype.setName = function (name) {\r\n\t if (!this.options) {\r\n\t this.options = {};\r\n\t }\r\n\t this.options.name = name;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the field name for the root node.\r\n\t * @return {String | undefined} name\r\n\t */\r\n\tJSONEditor.prototype.getName = function () {\r\n\t return this.options && this.options.name;\r\n\t};\r\n\r\n\t/**\r\n\t * Change the mode of the editor.\r\n\t * JSONEditor will be extended with all methods needed for the chosen mode.\r\n\t * @param {String} mode Available modes: 'tree' (default), 'view', 'form',\r\n\t * 'text', and 'code'.\r\n\t */\r\n\tJSONEditor.prototype.setMode = function (mode) {\r\n\t var container = this.container;\r\n\t var options = util.extend({}, this.options);\r\n\t var oldMode = options.mode;\r\n\t var data;\r\n\t var name;\r\n\r\n\t options.mode = mode;\r\n\t var config = JSONEditor.modes[mode];\r\n\t if (config) {\r\n\t try {\r\n\t var asText = (config.data == 'text');\r\n\t name = this.getName();\r\n\t data = this[asText ? 'getText' : 'get'](); // get text or json\r\n\r\n\t this.destroy();\r\n\t util.clear(this);\r\n\t util.extend(this, config.mixin);\r\n\t this.create(container, options);\r\n\r\n\t this.setName(name);\r\n\t this[asText ? 'setText' : 'set'](data); // set text or json\r\n\r\n\t if (typeof config.load === 'function') {\r\n\t try {\r\n\t config.load.call(this);\r\n\t }\r\n\t catch (err) {\r\n\t console.error(err);\r\n\t }\r\n\t }\r\n\r\n\t if (typeof options.onModeChange === 'function' && mode !== oldMode) {\r\n\t try {\r\n\t options.onModeChange(mode, oldMode);\r\n\t }\r\n\t catch (err) {\r\n\t console.error(err);\r\n\t }\r\n\t }\r\n\t }\r\n\t catch (err) {\r\n\t this._onError(err);\r\n\t }\r\n\t }\r\n\t else {\r\n\t throw new Error('Unknown mode \"' + options.mode + '\"');\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the current mode\r\n\t * @return {string}\r\n\t */\r\n\tJSONEditor.prototype.getMode = function () {\r\n\t return this.options.mode;\r\n\t};\r\n\r\n\t/**\r\n\t * Throw an error. If an error callback is configured in options.error, this\r\n\t * callback will be invoked. Else, a regular error is thrown.\r\n\t * @param {Error} err\r\n\t * @private\r\n\t */\r\n\tJSONEditor.prototype._onError = function(err) {\r\n\t if (this.options && typeof this.options.onError === 'function') {\r\n\t this.options.onError(err);\r\n\t }\r\n\t else {\r\n\t throw err;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Set a JSON schema for validation of the JSON object.\r\n\t * To remove the schema, call JSONEditor.setSchema(null)\r\n\t * @param {Object | null} schema\r\n\t */\r\n\tJSONEditor.prototype.setSchema = function (schema) {\r\n\t // compile a JSON schema validator if a JSON schema is provided\r\n\t if (schema) {\r\n\t var ajv;\r\n\t try {\r\n\t // grab ajv from options if provided, else create a new instance\r\n\t ajv = this.options.ajv || Ajv({ allErrors: true, verbose: true });\r\n\r\n\t }\r\n\t catch (err) {\r\n\t console.warn('Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.');\r\n\t }\r\n\r\n\t if (ajv) {\r\n\t this.validateSchema = ajv.compile(schema);\r\n\r\n\t // add schema to the options, so that when switching to an other mode,\r\n\t // the set schema is not lost\r\n\t this.options.schema = schema;\r\n\r\n\t // validate now\r\n\t this.validate();\r\n\t }\r\n\r\n\t this.refresh(); // update DOM\r\n\t }\r\n\t else {\r\n\t // remove current schema\r\n\t this.validateSchema = null;\r\n\t this.options.schema = null;\r\n\t this.validate(); // to clear current error messages\r\n\t this.refresh(); // update DOM\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Validate current JSON object against the configured JSON schema\r\n\t * Throws an exception when no JSON schema is configured\r\n\t */\r\n\tJSONEditor.prototype.validate = function () {\r\n\t // must be implemented by treemode and textmode\r\n\t};\r\n\r\n\t/**\r\n\t * Refresh the rendered contents\r\n\t */\r\n\tJSONEditor.prototype.refresh = function () {\r\n\t // can be implemented by treemode and textmode\r\n\t};\r\n\r\n\t/**\r\n\t * Register a plugin with one ore multiple modes for the JSON Editor.\r\n\t *\r\n\t * A mode is described as an object with properties:\r\n\t *\r\n\t * - `mode: String` The name of the mode.\r\n\t * - `mixin: Object` An object containing the mixin functions which\r\n\t * will be added to the JSONEditor. Must contain functions\r\n\t * create, get, getText, set, and setText. May have\r\n\t * additional functions.\r\n\t * When the JSONEditor switches to a mixin, all mixin\r\n\t * functions are added to the JSONEditor, and then\r\n\t * the function `create(container, options)` is executed.\r\n\t * - `data: 'text' | 'json'` The type of data that will be used to load the mixin.\r\n\t * - `[load: function]` An optional function called after the mixin\r\n\t * has been loaded.\r\n\t *\r\n\t * @param {Object | Array} mode A mode object or an array with multiple mode objects.\r\n\t */\r\n\tJSONEditor.registerMode = function (mode) {\r\n\t var i, prop;\r\n\r\n\t if (util.isArray(mode)) {\r\n\t // multiple modes\r\n\t for (i = 0; i < mode.length; i++) {\r\n\t JSONEditor.registerMode(mode[i]);\r\n\t }\r\n\t }\r\n\t else {\r\n\t // validate the new mode\r\n\t if (!('mode' in mode)) throw new Error('Property \"mode\" missing');\r\n\t if (!('mixin' in mode)) throw new Error('Property \"mixin\" missing');\r\n\t if (!('data' in mode)) throw new Error('Property \"data\" missing');\r\n\t var name = mode.mode;\r\n\t if (name in JSONEditor.modes) {\r\n\t throw new Error('Mode \"' + name + '\" already registered');\r\n\t }\r\n\r\n\t // validate the mixin\r\n\t if (typeof mode.mixin.create !== 'function') {\r\n\t throw new Error('Required function \"create\" missing on mixin');\r\n\t }\r\n\t var reserved = ['setMode', 'registerMode', 'modes'];\r\n\t for (i = 0; i < reserved.length; i++) {\r\n\t prop = reserved[i];\r\n\t if (prop in mode.mixin) {\r\n\t throw new Error('Reserved property \"' + prop + '\" not allowed in mixin');\r\n\t }\r\n\t }\r\n\r\n\t JSONEditor.modes[name] = mode;\r\n\t }\r\n\t};\r\n\r\n\t// register tree and text modes\r\n\tJSONEditor.registerMode(treemode);\r\n\tJSONEditor.registerMode(textmode);\r\n\r\n\tmodule.exports = JSONEditor;\r\n\r\n\r\n/***/ },\r\n/* 1 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar compileSchema = __webpack_require__(2)\r\n\t , resolve = __webpack_require__(3)\r\n\t , Cache = __webpack_require__(21)\r\n\t , SchemaObject = __webpack_require__(16)\r\n\t , stableStringify = __webpack_require__(12)\r\n\t , formats = __webpack_require__(22)\r\n\t , rules = __webpack_require__(23)\r\n\t , v5 = __webpack_require__(43)\r\n\t , util = __webpack_require__(11)\r\n\t , async = __webpack_require__(17)\r\n\t , co = __webpack_require__(19);\r\n\r\n\tmodule.exports = Ajv;\r\n\r\n\tAjv.prototype.compileAsync = async.compile;\r\n\tAjv.prototype.addKeyword = __webpack_require__(49);\r\n\tAjv.ValidationError = __webpack_require__(20);\r\n\r\n\tvar META_SCHEMA_ID = 'http://json-schema.org/draft-04/schema';\r\n\tvar SCHEMA_URI_FORMAT = /^(?:(?:[a-z][a-z0-9+-.]*:)?\\/\\/)?[^\\s]*$/i;\r\n\tfunction SCHEMA_URI_FORMAT_FUNC(str) {\r\n\t return SCHEMA_URI_FORMAT.test(str);\r\n\t}\r\n\r\n\tvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes' ];\r\n\r\n\t/**\r\n\t * Creates validator instance.\r\n\t * Usage: `Ajv(opts)`\r\n\t * @param {Object} opts optional options\r\n\t * @return {Object} ajv instance\r\n\t */\r\n\tfunction Ajv(opts) {\r\n\t if (!(this instanceof Ajv)) return new Ajv(opts);\r\n\t var self = this;\r\n\r\n\t opts = this._opts = util.copy(opts) || {};\r\n\t this._schemas = {};\r\n\t this._refs = {};\r\n\t this._formats = formats(opts.format);\r\n\t this._cache = opts.cache || new Cache;\r\n\t this._loadingSchemas = {};\r\n\t this.RULES = rules();\r\n\r\n\t // this is done on purpose, so that methods are bound to the instance\r\n\t // (without using bind) so that they can be used without the instance\r\n\t this.validate = validate;\r\n\t this.compile = compile;\r\n\t this.addSchema = addSchema;\r\n\t this.addMetaSchema = addMetaSchema;\r\n\t this.validateSchema = validateSchema;\r\n\t this.getSchema = getSchema;\r\n\t this.removeSchema = removeSchema;\r\n\t this.addFormat = addFormat;\r\n\t this.errorsText = errorsText;\r\n\r\n\t this._addSchema = _addSchema;\r\n\t this._compile = _compile;\r\n\r\n\t opts.loopRequired = opts.loopRequired || Infinity;\r\n\t if (opts.async || opts.transpile) async.setup(opts);\r\n\t if (opts.beautify === true) opts.beautify = { indent_size: 2 };\r\n\t if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\r\n\t this._metaOpts = getMetaSchemaOptions();\r\n\r\n\t addInitialSchemas();\r\n\t if (opts.formats) addInitialFormats();\r\n\t if (opts.v5) v5.enable(this);\r\n\t if (typeof opts.meta == 'object') addMetaSchema(opts.meta);\r\n\r\n\r\n\t /**\r\n\t * Validate data using schema\r\n\t * Schema will be compiled and cached (using serialized JSON as key. [json-stable-stringify](https://github.com/substack/json-stable-stringify) is used to serialize.\r\n\t * @param {String|Object} schemaKeyRef key, ref or schema object\r\n\t * @param {Any} data to be validated\r\n\t * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\r\n\t */\r\n\t function validate(schemaKeyRef, data) {\r\n\t var v;\r\n\t if (typeof schemaKeyRef == 'string') {\r\n\t v = getSchema(schemaKeyRef);\r\n\t if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\r\n\t } else {\r\n\t var schemaObj = _addSchema(schemaKeyRef);\r\n\t v = schemaObj.validate || _compile(schemaObj);\r\n\t }\r\n\r\n\t var valid = v(data);\r\n\t if (v.async) return self._opts.async == '*' ? co(valid) : valid;\r\n\t self.errors = v.errors;\r\n\t return valid;\r\n\t }\r\n\r\n\r\n\t /**\r\n\t * Create validating function for passed schema.\r\n\t * @param {Object} schema schema object\r\n\t * @return {Function} validating function\r\n\t */\r\n\t function compile(schema) {\r\n\t var schemaObj = _addSchema(schema);\r\n\t return schemaObj.validate || _compile(schemaObj);\r\n\t }\r\n\r\n\r\n\t /**\r\n\t * Adds schema to the instance.\r\n\t * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\r\n\t * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\r\n\t * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\r\n\t * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\r\n\t */\r\n\t function addSchema(schema, key, _skipValidation, _meta) {\r\n\t if (Array.isArray(schema)){\r\n\t for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used.\r\n\t * @param {Object} options optional options with properties `separator` and `dataVar`.\r\n\t * @return {String} human readable string with all errors descriptions\r\n\t */\r\n\t function errorsText(errors, options) {\r\n\t errors = errors || self.errors;\r\n\t if (!errors) return 'No errors';\r\n\t options = options || {};\r\n\t var separator = options.separator === undefined ? ', ' : options.separator;\r\n\t var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\r\n\r\n\t var text = '';\r\n\t for (var i=0; i', '\"', '`', ' ', '\\r', '\\n', '\\t'],\r\n\r\n\t // RFC 2396: characters not allowed for various reasons.\r\n\t unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\r\n\r\n\t // Allowed by RFCs, but cause of XSS attacks. Always escape these.\r\n\t autoEscape = ['\\''].concat(unwise),\r\n\t // Characters that are never ever allowed in a hostname.\r\n\t // Note that any invalid chars are also handled, but these\r\n\t // are the ones that are *expected* to be seen, so we fast-path\r\n\t // them.\r\n\t nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\r\n\t hostEndingChars = ['/', '?', '#'],\r\n\t hostnameMaxLen = 255,\r\n\t hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\r\n\t hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\r\n\t // protocols that can allow \"unsafe\" and \"unwise\" chars.\r\n\t unsafeProtocol = {\r\n\t 'javascript': true,\r\n\t 'javascript:': true\r\n\t },\r\n\t // protocols that never have a hostname.\r\n\t hostlessProtocol = {\r\n\t 'javascript': true,\r\n\t 'javascript:': true\r\n\t },\r\n\t // protocols that always contain a // bit.\r\n\t slashedProtocol = {\r\n\t 'http': true,\r\n\t 'https': true,\r\n\t 'ftp': true,\r\n\t 'gopher': true,\r\n\t 'file': true,\r\n\t 'http:': true,\r\n\t 'https:': true,\r\n\t 'ftp:': true,\r\n\t 'gopher:': true,\r\n\t 'file:': true\r\n\t },\r\n\t querystring = __webpack_require__(7);\r\n\r\n\tfunction urlParse(url, parseQueryString, slashesDenoteHost) {\r\n\t if (url && isObject(url) && url instanceof Url) return url;\r\n\r\n\t var u = new Url;\r\n\t u.parse(url, parseQueryString, slashesDenoteHost);\r\n\t return u;\r\n\t}\r\n\r\n\tUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\r\n\t if (!isString(url)) {\r\n\t throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\r\n\t }\r\n\r\n\t var rest = url;\r\n\r\n\t // trim before proceeding.\r\n\t // This is to support parse stuff like \" http://foo.com \\n\"\r\n\t rest = rest.trim();\r\n\r\n\t var proto = protocolPattern.exec(rest);\r\n\t if (proto) {\r\n\t proto = proto[0];\r\n\t var lowerProto = proto.toLowerCase();\r\n\t this.protocol = lowerProto;\r\n\t rest = rest.substr(proto.length);\r\n\t }\r\n\r\n\t // figure out if it's got a host\r\n\t // user@server is *always* interpreted as a hostname, and url\r\n\t // resolution will treat //foo/bar as host=foo,path=bar because that's\r\n\t // how the browser resolves relative URLs.\r\n\t if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\r\n\t var slashes = rest.substr(0, 2) === '//';\r\n\t if (slashes && !(proto && hostlessProtocol[proto])) {\r\n\t rest = rest.substr(2);\r\n\t this.slashes = true;\r\n\t }\r\n\t }\r\n\r\n\t if (!hostlessProtocol[proto] &&\r\n\t (slashes || (proto && !slashedProtocol[proto]))) {\r\n\r\n\t // there's a hostname.\r\n\t // the first instance of /, ?, ;, or # ends the host.\r\n\t //\r\n\t // If there is an @ in the hostname, then non-host chars *are* allowed\r\n\t // to the left of the last @ sign, unless some host-ending character\r\n\t // comes *before* the @-sign.\r\n\t // URLs are obnoxious.\r\n\t //\r\n\t // ex:\r\n\t // http://a@b@c/ => user:a@b host:c\r\n\t // http://a@b?@c => user:a host:c path:/?@c\r\n\r\n\t // v0.12 TODO(isaacs): This is not quite how Chrome does things.\r\n\t // Review our test case against browsers more comprehensively.\r\n\r\n\t // find the first instance of any hostEndingChars\r\n\t var hostEnd = -1;\r\n\t for (var i = 0; i < hostEndingChars.length; i++) {\r\n\t var hec = rest.indexOf(hostEndingChars[i]);\r\n\t if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\r\n\t hostEnd = hec;\r\n\t }\r\n\r\n\t // at this point, either we have an explicit point where the\r\n\t // auth portion cannot go past, or the last @ char is the decider.\r\n\t var auth, atSign;\r\n\t if (hostEnd === -1) {\r\n\t // atSign can be anywhere.\r\n\t atSign = rest.lastIndexOf('@');\r\n\t } else {\r\n\t // atSign must be in auth portion.\r\n\t // http://a@b/c@d => host:b auth:a path:/c@d\r\n\t atSign = rest.lastIndexOf('@', hostEnd);\r\n\t }\r\n\r\n\t // Now we have a portion which is definitely the auth.\r\n\t // Pull that off.\r\n\t if (atSign !== -1) {\r\n\t auth = rest.slice(0, atSign);\r\n\t rest = rest.slice(atSign + 1);\r\n\t this.auth = decodeURIComponent(auth);\r\n\t }\r\n\r\n\t // the host is the remaining to the left of the first non-host char\r\n\t hostEnd = -1;\r\n\t for (var i = 0; i < nonHostChars.length; i++) {\r\n\t var hec = rest.indexOf(nonHostChars[i]);\r\n\t if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\r\n\t hostEnd = hec;\r\n\t }\r\n\t // if we still have not hit it, then the entire thing is a host.\r\n\t if (hostEnd === -1)\r\n\t hostEnd = rest.length;\r\n\r\n\t this.host = rest.slice(0, hostEnd);\r\n\t rest = rest.slice(hostEnd);\r\n\r\n\t // pull out port.\r\n\t this.parseHost();\r\n\r\n\t // we've indicated that there is a hostname,\r\n\t // so even if it's empty, it has to be present.\r\n\t this.hostname = this.hostname || '';\r\n\r\n\t // if hostname begins with [ and ends with ]\r\n\t // assume that it's an IPv6 address.\r\n\t var ipv6Hostname = this.hostname[0] === '[' &&\r\n\t this.hostname[this.hostname.length - 1] === ']';\r\n\r\n\t // validate a little.\r\n\t if (!ipv6Hostname) {\r\n\t var hostparts = this.hostname.split(/\\./);\r\n\t for (var i = 0, l = hostparts.length; i < l; i++) {\r\n\t var part = hostparts[i];\r\n\t if (!part) continue;\r\n\t if (!part.match(hostnamePartPattern)) {\r\n\t var newpart = '';\r\n\t for (var j = 0, k = part.length; j < k; j++) {\r\n\t if (part.charCodeAt(j) > 127) {\r\n\t // we replace non-ASCII char with a temporary placeholder\r\n\t // we need this to make sure size of hostname is not\r\n\t // broken by replacing non-ASCII by nothing\r\n\t newpart += 'x';\r\n\t } else {\r\n\t newpart += part[j];\r\n\t }\r\n\t }\r\n\t // we test again with ASCII char only\r\n\t if (!newpart.match(hostnamePartPattern)) {\r\n\t var validParts = hostparts.slice(0, i);\r\n\t var notHost = hostparts.slice(i + 1);\r\n\t var bit = part.match(hostnamePartStart);\r\n\t if (bit) {\r\n\t validParts.push(bit[1]);\r\n\t notHost.unshift(bit[2]);\r\n\t }\r\n\t if (notHost.length) {\r\n\t rest = '/' + notHost.join('.') + rest;\r\n\t }\r\n\t this.hostname = validParts.join('.');\r\n\t break;\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t if (this.hostname.length > hostnameMaxLen) {\r\n\t this.hostname = '';\r\n\t } else {\r\n\t // hostnames are always lower case.\r\n\t this.hostname = this.hostname.toLowerCase();\r\n\t }\r\n\r\n\t if (!ipv6Hostname) {\r\n\t // IDNA Support: Returns a puny coded representation of \"domain\".\r\n\t // It only converts the part of the domain name that\r\n\t // has non ASCII characters. I.e. it dosent matter if\r\n\t // you call it with a domain that already is in ASCII.\r\n\t var domainArray = this.hostname.split('.');\r\n\t var newOut = [];\r\n\t for (var i = 0; i < domainArray.length; ++i) {\r\n\t var s = domainArray[i];\r\n\t newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\r\n\t 'xn--' + punycode.encode(s) : s);\r\n\t }\r\n\t this.hostname = newOut.join('.');\r\n\t }\r\n\r\n\t var p = this.port ? ':' + this.port : '';\r\n\t var h = this.hostname || '';\r\n\t this.host = h + p;\r\n\t this.href += this.host;\r\n\r\n\t // strip [ and ] from the hostname\r\n\t // the host field still retains them, though\r\n\t if (ipv6Hostname) {\r\n\t this.hostname = this.hostname.substr(1, this.hostname.length - 2);\r\n\t if (rest[0] !== '/') {\r\n\t rest = '/' + rest;\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t // now rest is set to the post-host stuff.\r\n\t // chop off any delim chars.\r\n\t if (!unsafeProtocol[lowerProto]) {\r\n\r\n\t // First, make 100% sure that any \"autoEscape\" chars get\r\n\t // escaped, even if encodeURIComponent doesn't think they\r\n\t // need to be.\r\n\t for (var i = 0, l = autoEscape.length; i < l; i++) {\r\n\t var ae = autoEscape[i];\r\n\t var esc = encodeURIComponent(ae);\r\n\t if (esc === ae) {\r\n\t esc = escape(ae);\r\n\t }\r\n\t rest = rest.split(ae).join(esc);\r\n\t }\r\n\t }\r\n\r\n\r\n\t // chop off from the tail first.\r\n\t var hash = rest.indexOf('#');\r\n\t if (hash !== -1) {\r\n\t // got a fragment string.\r\n\t this.hash = rest.substr(hash);\r\n\t rest = rest.slice(0, hash);\r\n\t }\r\n\t var qm = rest.indexOf('?');\r\n\t if (qm !== -1) {\r\n\t this.search = rest.substr(qm);\r\n\t this.query = rest.substr(qm + 1);\r\n\t if (parseQueryString) {\r\n\t this.query = querystring.parse(this.query);\r\n\t }\r\n\t rest = rest.slice(0, qm);\r\n\t } else if (parseQueryString) {\r\n\t // no query string, but parseQueryString still requested\r\n\t this.search = '';\r\n\t this.query = {};\r\n\t }\r\n\t if (rest) this.pathname = rest;\r\n\t if (slashedProtocol[lowerProto] &&\r\n\t this.hostname && !this.pathname) {\r\n\t this.pathname = '/';\r\n\t }\r\n\r\n\t //to support http.request\r\n\t if (this.pathname || this.search) {\r\n\t var p = this.pathname || '';\r\n\t var s = this.search || '';\r\n\t this.path = p + s;\r\n\t }\r\n\r\n\t // finally, reconstruct the href based on what has been validated.\r\n\t this.href = this.format();\r\n\t return this;\r\n\t};\r\n\r\n\t// format a parsed object into a url string\r\n\tfunction urlFormat(obj) {\r\n\t // ensure it's an object, and not a string url.\r\n\t // If it's an obj, this is a no-op.\r\n\t // this way, you can call url_format() on strings\r\n\t // to clean up potentially wonky urls.\r\n\t if (isString(obj)) obj = urlParse(obj);\r\n\t if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\r\n\t return obj.format();\r\n\t}\r\n\r\n\tUrl.prototype.format = function() {\r\n\t var auth = this.auth || '';\r\n\t if (auth) {\r\n\t auth = encodeURIComponent(auth);\r\n\t auth = auth.replace(/%3A/i, ':');\r\n\t auth += '@';\r\n\t }\r\n\r\n\t var protocol = this.protocol || '',\r\n\t pathname = this.pathname || '',\r\n\t hash = this.hash || '',\r\n\t host = false,\r\n\t query = '';\r\n\r\n\t if (this.host) {\r\n\t host = auth + this.host;\r\n\t } else if (this.hostname) {\r\n\t host = auth + (this.hostname.indexOf(':') === -1 ?\r\n\t this.hostname :\r\n\t '[' + this.hostname + ']');\r\n\t if (this.port) {\r\n\t host += ':' + this.port;\r\n\t }\r\n\t }\r\n\r\n\t if (this.query &&\r\n\t isObject(this.query) &&\r\n\t Object.keys(this.query).length) {\r\n\t query = querystring.stringify(this.query);\r\n\t }\r\n\r\n\t var search = this.search || (query && ('?' + query)) || '';\r\n\r\n\t if (protocol && protocol.substr(-1) !== ':') protocol += ':';\r\n\r\n\t // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\r\n\t // unless they had them to begin with.\r\n\t if (this.slashes ||\r\n\t (!protocol || slashedProtocol[protocol]) && host !== false) {\r\n\t host = '//' + (host || '');\r\n\t if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\r\n\t } else if (!host) {\r\n\t host = '';\r\n\t }\r\n\r\n\t if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\r\n\t if (search && search.charAt(0) !== '?') search = '?' + search;\r\n\r\n\t pathname = pathname.replace(/[?#]/g, function(match) {\r\n\t return encodeURIComponent(match);\r\n\t });\r\n\t search = search.replace('#', '%23');\r\n\r\n\t return protocol + host + pathname + search + hash;\r\n\t};\r\n\r\n\tfunction urlResolve(source, relative) {\r\n\t return urlParse(source, false, true).resolve(relative);\r\n\t}\r\n\r\n\tUrl.prototype.resolve = function(relative) {\r\n\t return this.resolveObject(urlParse(relative, false, true)).format();\r\n\t};\r\n\r\n\tfunction urlResolveObject(source, relative) {\r\n\t if (!source) return relative;\r\n\t return urlParse(source, false, true).resolveObject(relative);\r\n\t}\r\n\r\n\tUrl.prototype.resolveObject = function(relative) {\r\n\t if (isString(relative)) {\r\n\t var rel = new Url();\r\n\t rel.parse(relative, false, true);\r\n\t relative = rel;\r\n\t }\r\n\r\n\t var result = new Url();\r\n\t Object.keys(this).forEach(function(k) {\r\n\t result[k] = this[k];\r\n\t }, this);\r\n\r\n\t // hash is always overridden, no matter what.\r\n\t // even href=\"\" will remove it.\r\n\t result.hash = relative.hash;\r\n\r\n\t // if the relative url is empty, then there's nothing left to do here.\r\n\t if (relative.href === '') {\r\n\t result.href = result.format();\r\n\t return result;\r\n\t }\r\n\r\n\t // hrefs like //foo/bar always cut to the protocol.\r\n\t if (relative.slashes && !relative.protocol) {\r\n\t // take everything except the protocol from relative\r\n\t Object.keys(relative).forEach(function(k) {\r\n\t if (k !== 'protocol')\r\n\t result[k] = relative[k];\r\n\t });\r\n\r\n\t //urlParse appends trailing / to urls like http://www.example.com\r\n\t if (slashedProtocol[result.protocol] &&\r\n\t result.hostname && !result.pathname) {\r\n\t result.path = result.pathname = '/';\r\n\t }\r\n\r\n\t result.href = result.format();\r\n\t return result;\r\n\t }\r\n\r\n\t if (relative.protocol && relative.protocol !== result.protocol) {\r\n\t // if it's a known url protocol, then changing\r\n\t // the protocol does weird things\r\n\t // first, if it's not file:, then we MUST have a host,\r\n\t // and if there was a path\r\n\t // to begin with, then we MUST have a path.\r\n\t // if it is file:, then the host is dropped,\r\n\t // because that's known to be hostless.\r\n\t // anything else is assumed to be absolute.\r\n\t if (!slashedProtocol[relative.protocol]) {\r\n\t Object.keys(relative).forEach(function(k) {\r\n\t result[k] = relative[k];\r\n\t });\r\n\t result.href = result.format();\r\n\t return result;\r\n\t }\r\n\r\n\t result.protocol = relative.protocol;\r\n\t if (!relative.host && !hostlessProtocol[relative.protocol]) {\r\n\t var relPath = (relative.pathname || '').split('/');\r\n\t while (relPath.length && !(relative.host = relPath.shift()));\r\n\t if (!relative.host) relative.host = '';\r\n\t if (!relative.hostname) relative.hostname = '';\r\n\t if (relPath[0] !== '') relPath.unshift('');\r\n\t if (relPath.length < 2) relPath.unshift('');\r\n\t result.pathname = relPath.join('/');\r\n\t } else {\r\n\t result.pathname = relative.pathname;\r\n\t }\r\n\t result.search = relative.search;\r\n\t result.query = relative.query;\r\n\t result.host = relative.host || '';\r\n\t result.auth = relative.auth;\r\n\t result.hostname = relative.hostname || relative.host;\r\n\t result.port = relative.port;\r\n\t // to support http.request\r\n\t if (result.pathname || result.search) {\r\n\t var p = result.pathname || '';\r\n\t var s = result.search || '';\r\n\t result.path = p + s;\r\n\t }\r\n\t result.slashes = result.slashes || relative.slashes;\r\n\t result.href = result.format();\r\n\t return result;\r\n\t }\r\n\r\n\t var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\r\n\t isRelAbs = (\r\n\t relative.host ||\r\n\t relative.pathname && relative.pathname.charAt(0) === '/'\r\n\t ),\r\n\t mustEndAbs = (isRelAbs || isSourceAbs ||\r\n\t (result.host && relative.pathname)),\r\n\t removeAllDots = mustEndAbs,\r\n\t srcPath = result.pathname && result.pathname.split('/') || [],\r\n\t relPath = relative.pathname && relative.pathname.split('/') || [],\r\n\t psychotic = result.protocol && !slashedProtocol[result.protocol];\r\n\r\n\t // if the url is a non-slashed url, then relative\r\n\t // links like ../.. should be able\r\n\t // to crawl up to the hostname, as well. This is strange.\r\n\t // result.protocol has already been set by now.\r\n\t // Later on, put the first path part into the host field.\r\n\t if (psychotic) {\r\n\t result.hostname = '';\r\n\t result.port = null;\r\n\t if (result.host) {\r\n\t if (srcPath[0] === '') srcPath[0] = result.host;\r\n\t else srcPath.unshift(result.host);\r\n\t }\r\n\t result.host = '';\r\n\t if (relative.protocol) {\r\n\t relative.hostname = null;\r\n\t relative.port = null;\r\n\t if (relative.host) {\r\n\t if (relPath[0] === '') relPath[0] = relative.host;\r\n\t else relPath.unshift(relative.host);\r\n\t }\r\n\t relative.host = null;\r\n\t }\r\n\t mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\r\n\t }\r\n\r\n\t if (isRelAbs) {\r\n\t // it's absolute.\r\n\t result.host = (relative.host || relative.host === '') ?\r\n\t relative.host : result.host;\r\n\t result.hostname = (relative.hostname || relative.hostname === '') ?\r\n\t relative.hostname : result.hostname;\r\n\t result.search = relative.search;\r\n\t result.query = relative.query;\r\n\t srcPath = relPath;\r\n\t // fall through to the dot-handling below.\r\n\t } else if (relPath.length) {\r\n\t // it's relative\r\n\t // throw away the existing file, and take the new path instead.\r\n\t if (!srcPath) srcPath = [];\r\n\t srcPath.pop();\r\n\t srcPath = srcPath.concat(relPath);\r\n\t result.search = relative.search;\r\n\t result.query = relative.query;\r\n\t } else if (!isNullOrUndefined(relative.search)) {\r\n\t // just pull out the search.\r\n\t // like href='?foo'.\r\n\t // Put this after the other two cases because it simplifies the booleans\r\n\t if (psychotic) {\r\n\t result.hostname = result.host = srcPath.shift();\r\n\t //occationaly the auth can get stuck only in host\r\n\t //this especialy happens in cases like\r\n\t //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\r\n\t var authInHost = result.host && result.host.indexOf('@') > 0 ?\r\n\t result.host.split('@') : false;\r\n\t if (authInHost) {\r\n\t result.auth = authInHost.shift();\r\n\t result.host = result.hostname = authInHost.shift();\r\n\t }\r\n\t }\r\n\t result.search = relative.search;\r\n\t result.query = relative.query;\r\n\t //to support http.request\r\n\t if (!isNull(result.pathname) || !isNull(result.search)) {\r\n\t result.path = (result.pathname ? result.pathname : '') +\r\n\t (result.search ? result.search : '');\r\n\t }\r\n\t result.href = result.format();\r\n\t return result;\r\n\t }\r\n\r\n\t if (!srcPath.length) {\r\n\t // no path at all. easy.\r\n\t // we've already handled the other stuff above.\r\n\t result.pathname = null;\r\n\t //to support http.request\r\n\t if (result.search) {\r\n\t result.path = '/' + result.search;\r\n\t } else {\r\n\t result.path = null;\r\n\t }\r\n\t result.href = result.format();\r\n\t return result;\r\n\t }\r\n\r\n\t // if a url ENDs in . or .., then it must get a trailing slash.\r\n\t // however, if it ends in anything else non-slashy,\r\n\t // then it must NOT get a trailing slash.\r\n\t var last = srcPath.slice(-1)[0];\r\n\t var hasTrailingSlash = (\r\n\t (result.host || relative.host) && (last === '.' || last === '..') ||\r\n\t last === '');\r\n\r\n\t // strip single dots, resolve double dots to parent dir\r\n\t // if the path tries to go above the root, `up` ends up > 0\r\n\t var up = 0;\r\n\t for (var i = srcPath.length; i >= 0; i--) {\r\n\t last = srcPath[i];\r\n\t if (last == '.') {\r\n\t srcPath.splice(i, 1);\r\n\t } else if (last === '..') {\r\n\t srcPath.splice(i, 1);\r\n\t up++;\r\n\t } else if (up) {\r\n\t srcPath.splice(i, 1);\r\n\t up--;\r\n\t }\r\n\t }\r\n\r\n\t // if the path is allowed to go above the root, restore leading ..s\r\n\t if (!mustEndAbs && !removeAllDots) {\r\n\t for (; up--; up) {\r\n\t srcPath.unshift('..');\r\n\t }\r\n\t }\r\n\r\n\t if (mustEndAbs && srcPath[0] !== '' &&\r\n\t (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\r\n\t srcPath.unshift('');\r\n\t }\r\n\r\n\t if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\r\n\t srcPath.push('');\r\n\t }\r\n\r\n\t var isAbsolute = srcPath[0] === '' ||\r\n\t (srcPath[0] && srcPath[0].charAt(0) === '/');\r\n\r\n\t // put the host back\r\n\t if (psychotic) {\r\n\t result.hostname = result.host = isAbsolute ? '' :\r\n\t srcPath.length ? srcPath.shift() : '';\r\n\t //occationaly the auth can get stuck only in host\r\n\t //this especialy happens in cases like\r\n\t //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\r\n\t var authInHost = result.host && result.host.indexOf('@') > 0 ?\r\n\t result.host.split('@') : false;\r\n\t if (authInHost) {\r\n\t result.auth = authInHost.shift();\r\n\t result.host = result.hostname = authInHost.shift();\r\n\t }\r\n\t }\r\n\r\n\t mustEndAbs = mustEndAbs || (result.host && srcPath.length);\r\n\r\n\t if (mustEndAbs && !isAbsolute) {\r\n\t srcPath.unshift('');\r\n\t }\r\n\r\n\t if (!srcPath.length) {\r\n\t result.pathname = null;\r\n\t result.path = null;\r\n\t } else {\r\n\t result.pathname = srcPath.join('/');\r\n\t }\r\n\r\n\t //to support request.http\r\n\t if (!isNull(result.pathname) || !isNull(result.search)) {\r\n\t result.path = (result.pathname ? result.pathname : '') +\r\n\t (result.search ? result.search : '');\r\n\t }\r\n\t result.auth = relative.auth || result.auth;\r\n\t result.slashes = result.slashes || relative.slashes;\r\n\t result.href = result.format();\r\n\t return result;\r\n\t};\r\n\r\n\tUrl.prototype.parseHost = function() {\r\n\t var host = this.host;\r\n\t var port = portPattern.exec(host);\r\n\t if (port) {\r\n\t port = port[0];\r\n\t if (port !== ':') {\r\n\t this.port = port.substr(1);\r\n\t }\r\n\t host = host.substr(0, host.length - port.length);\r\n\t }\r\n\t if (host) this.hostname = host;\r\n\t};\r\n\r\n\tfunction isString(arg) {\r\n\t return typeof arg === \"string\";\r\n\t}\r\n\r\n\tfunction isObject(arg) {\r\n\t return typeof arg === 'object' && arg !== null;\r\n\t}\r\n\r\n\tfunction isNull(arg) {\r\n\t return arg === null;\r\n\t}\r\n\tfunction isNullOrUndefined(arg) {\r\n\t return arg == null;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 5 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */\r\n\t;(function(root) {\r\n\r\n\t\t/** Detect free variables */\r\n\t\tvar freeExports = typeof exports == 'object' && exports &&\r\n\t\t\t!exports.nodeType && exports;\r\n\t\tvar freeModule = typeof module == 'object' && module &&\r\n\t\t\t!module.nodeType && module;\r\n\t\tvar freeGlobal = typeof global == 'object' && global;\r\n\t\tif (\r\n\t\t\tfreeGlobal.global === freeGlobal ||\r\n\t\t\tfreeGlobal.window === freeGlobal ||\r\n\t\t\tfreeGlobal.self === freeGlobal\r\n\t\t) {\r\n\t\t\troot = freeGlobal;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * The `punycode` object.\r\n\t\t * @name punycode\r\n\t\t * @type Object\r\n\t\t */\r\n\t\tvar punycode,\r\n\r\n\t\t/** Highest positive signed 32-bit float value */\r\n\t\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\r\n\r\n\t\t/** Bootstring parameters */\r\n\t\tbase = 36,\r\n\t\ttMin = 1,\r\n\t\ttMax = 26,\r\n\t\tskew = 38,\r\n\t\tdamp = 700,\r\n\t\tinitialBias = 72,\r\n\t\tinitialN = 128, // 0x80\r\n\t\tdelimiter = '-', // '\\x2D'\r\n\r\n\t\t/** Regular expressions */\r\n\t\tregexPunycode = /^xn--/,\r\n\t\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\r\n\t\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\r\n\r\n\t\t/** Error messages */\r\n\t\terrors = {\r\n\t\t\t'overflow': 'Overflow: input needs wider integers to process',\r\n\t\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\r\n\t\t\t'invalid-input': 'Invalid input'\r\n\t\t},\r\n\r\n\t\t/** Convenience shortcuts */\r\n\t\tbaseMinusTMin = base - tMin,\r\n\t\tfloor = Math.floor,\r\n\t\tstringFromCharCode = String.fromCharCode,\r\n\r\n\t\t/** Temporary variable */\r\n\t\tkey;\r\n\r\n\t\t/*--------------------------------------------------------------------------*/\r\n\r\n\t\t/**\r\n\t\t * A generic error utility function.\r\n\t\t * @private\r\n\t\t * @param {String} type The error type.\r\n\t\t * @returns {Error} Throws a `RangeError` with the applicable error message.\r\n\t\t */\r\n\t\tfunction error(type) {\r\n\t\t\tthrow RangeError(errors[type]);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * A generic `Array#map` utility function.\r\n\t\t * @private\r\n\t\t * @param {Array} array The array to iterate over.\r\n\t\t * @param {Function} callback The function that gets called for every array\r\n\t\t * item.\r\n\t\t * @returns {Array} A new array of values returned by the callback function.\r\n\t\t */\r\n\t\tfunction map(array, fn) {\r\n\t\t\tvar length = array.length;\r\n\t\t\tvar result = [];\r\n\t\t\twhile (length--) {\r\n\t\t\t\tresult[length] = fn(array[length]);\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * A simple `Array#map`-like wrapper to work with domain name strings or email\r\n\t\t * addresses.\r\n\t\t * @private\r\n\t\t * @param {String} domain The domain name or email address.\r\n\t\t * @param {Function} callback The function that gets called for every\r\n\t\t * character.\r\n\t\t * @returns {Array} A new string of characters returned by the callback\r\n\t\t * function.\r\n\t\t */\r\n\t\tfunction mapDomain(string, fn) {\r\n\t\t\tvar parts = string.split('@');\r\n\t\t\tvar result = '';\r\n\t\t\tif (parts.length > 1) {\r\n\t\t\t\t// In email addresses, only the domain name should be punycoded. Leave\r\n\t\t\t\t// the local part (i.e. everything up to `@`) intact.\r\n\t\t\t\tresult = parts[0] + '@';\r\n\t\t\t\tstring = parts[1];\r\n\t\t\t}\r\n\t\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\r\n\t\t\tstring = string.replace(regexSeparators, '\\x2E');\r\n\t\t\tvar labels = string.split('.');\r\n\t\t\tvar encoded = map(labels, fn).join('.');\r\n\t\t\treturn result + encoded;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Creates an array containing the numeric code points of each Unicode\r\n\t\t * character in the string. While JavaScript uses UCS-2 internally,\r\n\t\t * this function will convert a pair of surrogate halves (each of which\r\n\t\t * UCS-2 exposes as separate characters) into a single code point,\r\n\t\t * matching UTF-16.\r\n\t\t * @see `punycode.ucs2.encode`\r\n\t\t * @see \r\n\t\t * @memberOf punycode.ucs2\r\n\t\t * @name decode\r\n\t\t * @param {String} string The Unicode input string (UCS-2).\r\n\t\t * @returns {Array} The new array of code points.\r\n\t\t */\r\n\t\tfunction ucs2decode(string) {\r\n\t\t\tvar output = [],\r\n\t\t\t counter = 0,\r\n\t\t\t length = string.length,\r\n\t\t\t value,\r\n\t\t\t extra;\r\n\t\t\twhile (counter < length) {\r\n\t\t\t\tvalue = string.charCodeAt(counter++);\r\n\t\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\r\n\t\t\t\t\t// high surrogate, and there is a next character\r\n\t\t\t\t\textra = string.charCodeAt(counter++);\r\n\t\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\r\n\t\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\r\n\t\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\r\n\t\t\t\t\t\toutput.push(value);\r\n\t\t\t\t\t\tcounter--;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\toutput.push(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn output;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Creates a string based on an array of numeric code points.\r\n\t\t * @see `punycode.ucs2.decode`\r\n\t\t * @memberOf punycode.ucs2\r\n\t\t * @name encode\r\n\t\t * @param {Array} codePoints The array of numeric code points.\r\n\t\t * @returns {String} The new Unicode string (UCS-2).\r\n\t\t */\r\n\t\tfunction ucs2encode(array) {\r\n\t\t\treturn map(array, function(value) {\r\n\t\t\t\tvar output = '';\r\n\t\t\t\tif (value > 0xFFFF) {\r\n\t\t\t\t\tvalue -= 0x10000;\r\n\t\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\r\n\t\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\r\n\t\t\t\t}\r\n\t\t\t\toutput += stringFromCharCode(value);\r\n\t\t\t\treturn output;\r\n\t\t\t}).join('');\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Converts a basic code point into a digit/integer.\r\n\t\t * @see `digitToBasic()`\r\n\t\t * @private\r\n\t\t * @param {Number} codePoint The basic numeric code point value.\r\n\t\t * @returns {Number} The numeric value of a basic code point (for use in\r\n\t\t * representing integers) in the range `0` to `base - 1`, or `base` if\r\n\t\t * the code point does not represent a value.\r\n\t\t */\r\n\t\tfunction basicToDigit(codePoint) {\r\n\t\t\tif (codePoint - 48 < 10) {\r\n\t\t\t\treturn codePoint - 22;\r\n\t\t\t}\r\n\t\t\tif (codePoint - 65 < 26) {\r\n\t\t\t\treturn codePoint - 65;\r\n\t\t\t}\r\n\t\t\tif (codePoint - 97 < 26) {\r\n\t\t\t\treturn codePoint - 97;\r\n\t\t\t}\r\n\t\t\treturn base;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Converts a digit/integer into a basic code point.\r\n\t\t * @see `basicToDigit()`\r\n\t\t * @private\r\n\t\t * @param {Number} digit The numeric value of a basic code point.\r\n\t\t * @returns {Number} The basic code point whose value (when used for\r\n\t\t * representing integers) is `digit`, which needs to be in the range\r\n\t\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\r\n\t\t * used; else, the lowercase form is used. The behavior is undefined\r\n\t\t * if `flag` is non-zero and `digit` has no uppercase form.\r\n\t\t */\r\n\t\tfunction digitToBasic(digit, flag) {\r\n\t\t\t// 0..25 map to ASCII a..z or A..Z\r\n\t\t\t// 26..35 map to ASCII 0..9\r\n\t\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Bias adaptation function as per section 3.4 of RFC 3492.\r\n\t\t * http://tools.ietf.org/html/rfc3492#section-3.4\r\n\t\t * @private\r\n\t\t */\r\n\t\tfunction adapt(delta, numPoints, firstTime) {\r\n\t\t\tvar k = 0;\r\n\t\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\r\n\t\t\tdelta += floor(delta / numPoints);\r\n\t\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\r\n\t\t\t\tdelta = floor(delta / baseMinusTMin);\r\n\t\t\t}\r\n\t\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\r\n\t\t * symbols.\r\n\t\t * @memberOf punycode\r\n\t\t * @param {String} input The Punycode string of ASCII-only symbols.\r\n\t\t * @returns {String} The resulting string of Unicode symbols.\r\n\t\t */\r\n\t\tfunction decode(input) {\r\n\t\t\t// Don't use UCS-2\r\n\t\t\tvar output = [],\r\n\t\t\t inputLength = input.length,\r\n\t\t\t out,\r\n\t\t\t i = 0,\r\n\t\t\t n = initialN,\r\n\t\t\t bias = initialBias,\r\n\t\t\t basic,\r\n\t\t\t j,\r\n\t\t\t index,\r\n\t\t\t oldi,\r\n\t\t\t w,\r\n\t\t\t k,\r\n\t\t\t digit,\r\n\t\t\t t,\r\n\t\t\t /** Cached calculation results */\r\n\t\t\t baseMinusT;\r\n\r\n\t\t\t// Handle the basic code points: let `basic` be the number of input code\r\n\t\t\t// points before the last delimiter, or `0` if there is none, then copy\r\n\t\t\t// the first basic code points to the output.\r\n\r\n\t\t\tbasic = input.lastIndexOf(delimiter);\r\n\t\t\tif (basic < 0) {\r\n\t\t\t\tbasic = 0;\r\n\t\t\t}\r\n\r\n\t\t\tfor (j = 0; j < basic; ++j) {\r\n\t\t\t\t// if it's not a basic code point\r\n\t\t\t\tif (input.charCodeAt(j) >= 0x80) {\r\n\t\t\t\t\terror('not-basic');\r\n\t\t\t\t}\r\n\t\t\t\toutput.push(input.charCodeAt(j));\r\n\t\t\t}\r\n\r\n\t\t\t// Main decoding loop: start just after the last delimiter if any basic code\r\n\t\t\t// points were copied; start at the beginning otherwise.\r\n\r\n\t\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\r\n\r\n\t\t\t\t// `index` is the index of the next character to be consumed.\r\n\t\t\t\t// Decode a generalized variable-length integer into `delta`,\r\n\t\t\t\t// which gets added to `i`. The overflow checking is easier\r\n\t\t\t\t// if we increase `i` as we go, then subtract off its starting\r\n\t\t\t\t// value at the end to obtain `delta`.\r\n\t\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\r\n\r\n\t\t\t\t\tif (index >= inputLength) {\r\n\t\t\t\t\t\terror('invalid-input');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\r\n\r\n\t\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\r\n\t\t\t\t\t\terror('overflow');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ti += digit * w;\r\n\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\r\n\r\n\t\t\t\t\tif (digit < t) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbaseMinusT = base - t;\r\n\t\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\r\n\t\t\t\t\t\terror('overflow');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tw *= baseMinusT;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tout = output.length + 1;\r\n\t\t\t\tbias = adapt(i - oldi, out, oldi == 0);\r\n\r\n\t\t\t\t// `i` was supposed to wrap around from `out` to `0`,\r\n\t\t\t\t// incrementing `n` each time, so we'll fix that now:\r\n\t\t\t\tif (floor(i / out) > maxInt - n) {\r\n\t\t\t\t\terror('overflow');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tn += floor(i / out);\r\n\t\t\t\ti %= out;\r\n\r\n\t\t\t\t// Insert `n` at position `i` of the output\r\n\t\t\t\toutput.splice(i++, 0, n);\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn ucs2encode(output);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\r\n\t\t * Punycode string of ASCII-only symbols.\r\n\t\t * @memberOf punycode\r\n\t\t * @param {String} input The string of Unicode symbols.\r\n\t\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\r\n\t\t */\r\n\t\tfunction encode(input) {\r\n\t\t\tvar n,\r\n\t\t\t delta,\r\n\t\t\t handledCPCount,\r\n\t\t\t basicLength,\r\n\t\t\t bias,\r\n\t\t\t j,\r\n\t\t\t m,\r\n\t\t\t q,\r\n\t\t\t k,\r\n\t\t\t t,\r\n\t\t\t currentValue,\r\n\t\t\t output = [],\r\n\t\t\t /** `inputLength` will hold the number of code points in `input`. */\r\n\t\t\t inputLength,\r\n\t\t\t /** Cached calculation results */\r\n\t\t\t handledCPCountPlusOne,\r\n\t\t\t baseMinusT,\r\n\t\t\t qMinusT;\r\n\r\n\t\t\t// Convert the input in UCS-2 to Unicode\r\n\t\t\tinput = ucs2decode(input);\r\n\r\n\t\t\t// Cache the length\r\n\t\t\tinputLength = input.length;\r\n\r\n\t\t\t// Initialize the state\r\n\t\t\tn = initialN;\r\n\t\t\tdelta = 0;\r\n\t\t\tbias = initialBias;\r\n\r\n\t\t\t// Handle the basic code points\r\n\t\t\tfor (j = 0; j < inputLength; ++j) {\r\n\t\t\t\tcurrentValue = input[j];\r\n\t\t\t\tif (currentValue < 0x80) {\r\n\t\t\t\t\toutput.push(stringFromCharCode(currentValue));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\thandledCPCount = basicLength = output.length;\r\n\r\n\t\t\t// `handledCPCount` is the number of code points that have been handled;\r\n\t\t\t// `basicLength` is the number of basic code points.\r\n\r\n\t\t\t// Finish the basic string - if it is not empty - with a delimiter\r\n\t\t\tif (basicLength) {\r\n\t\t\t\toutput.push(delimiter);\r\n\t\t\t}\r\n\r\n\t\t\t// Main encoding loop:\r\n\t\t\twhile (handledCPCount < inputLength) {\r\n\r\n\t\t\t\t// All non-basic code points < n have been handled already. Find the next\r\n\t\t\t\t// larger one:\r\n\t\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\r\n\t\t\t\t\tcurrentValue = input[j];\r\n\t\t\t\t\tif (currentValue >= n && currentValue < m) {\r\n\t\t\t\t\t\tm = currentValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Increase `delta` enough to advance the decoder's state to ,\r\n\t\t\t\t// but guard against overflow\r\n\t\t\t\thandledCPCountPlusOne = handledCPCount + 1;\r\n\t\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\r\n\t\t\t\t\terror('overflow');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelta += (m - n) * handledCPCountPlusOne;\r\n\t\t\t\tn = m;\r\n\r\n\t\t\t\tfor (j = 0; j < inputLength; ++j) {\r\n\t\t\t\t\tcurrentValue = input[j];\r\n\r\n\t\t\t\t\tif (currentValue < n && ++delta > maxInt) {\r\n\t\t\t\t\t\terror('overflow');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (currentValue == n) {\r\n\t\t\t\t\t\t// Represent delta as a generalized variable-length integer\r\n\t\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\r\n\t\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\r\n\t\t\t\t\t\t\tif (q < t) {\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tqMinusT = q - t;\r\n\t\t\t\t\t\t\tbaseMinusT = base - t;\r\n\t\t\t\t\t\t\toutput.push(\r\n\t\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\r\n\t\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\r\n\t\t\t\t\t\tdelta = 0;\r\n\t\t\t\t\t\t++handledCPCount;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t++delta;\r\n\t\t\t\t++n;\r\n\r\n\t\t\t}\r\n\t\t\treturn output.join('');\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Converts a Punycode string representing a domain name or an email address\r\n\t\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\r\n\t\t * it doesn't matter if you call it on a string that has already been\r\n\t\t * converted to Unicode.\r\n\t\t * @memberOf punycode\r\n\t\t * @param {String} input The Punycoded domain name or email address to\r\n\t\t * convert to Unicode.\r\n\t\t * @returns {String} The Unicode representation of the given Punycode\r\n\t\t * string.\r\n\t\t */\r\n\t\tfunction toUnicode(input) {\r\n\t\t\treturn mapDomain(input, function(string) {\r\n\t\t\t\treturn regexPunycode.test(string)\r\n\t\t\t\t\t? decode(string.slice(4).toLowerCase())\r\n\t\t\t\t\t: string;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Converts a Unicode string representing a domain name or an email address to\r\n\t\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\r\n\t\t * i.e. it doesn't matter if you call it with a domain that's already in\r\n\t\t * ASCII.\r\n\t\t * @memberOf punycode\r\n\t\t * @param {String} input The domain name or email address to convert, as a\r\n\t\t * Unicode string.\r\n\t\t * @returns {String} The Punycode representation of the given domain name or\r\n\t\t * email address.\r\n\t\t */\r\n\t\tfunction toASCII(input) {\r\n\t\t\treturn mapDomain(input, function(string) {\r\n\t\t\t\treturn regexNonASCII.test(string)\r\n\t\t\t\t\t? 'xn--' + encode(string)\r\n\t\t\t\t\t: string;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/*--------------------------------------------------------------------------*/\r\n\r\n\t\t/** Define the public API */\r\n\t\tpunycode = {\r\n\t\t\t/**\r\n\t\t\t * A string representing the current Punycode.js version number.\r\n\t\t\t * @memberOf punycode\r\n\t\t\t * @type String\r\n\t\t\t */\r\n\t\t\t'version': '1.3.2',\r\n\t\t\t/**\r\n\t\t\t * An object of methods to convert from JavaScript's internal character\r\n\t\t\t * representation (UCS-2) to Unicode code points, and back.\r\n\t\t\t * @see \r\n\t\t\t * @memberOf punycode\r\n\t\t\t * @type Object\r\n\t\t\t */\r\n\t\t\t'ucs2': {\r\n\t\t\t\t'decode': ucs2decode,\r\n\t\t\t\t'encode': ucs2encode\r\n\t\t\t},\r\n\t\t\t'decode': decode,\r\n\t\t\t'encode': encode,\r\n\t\t\t'toASCII': toASCII,\r\n\t\t\t'toUnicode': toUnicode\r\n\t\t};\r\n\r\n\t\t/** Expose `punycode` */\r\n\t\t// Some AMD build optimizers, like r.js, check for specific condition patterns\r\n\t\t// like the following:\r\n\t\tif (\r\n\t\t\ttrue\r\n\t\t) {\r\n\t\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\r\n\t\t\t\treturn punycode;\r\n\t\t\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t\t} else if (freeExports && freeModule) {\r\n\t\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\r\n\t\t\t\tfreeModule.exports = punycode;\r\n\t\t\t} else { // in Narwhal or RingoJS v0.7.0-\r\n\t\t\t\tfor (key in punycode) {\r\n\t\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else { // in Rhino or a web browser\r\n\t\t\troot.punycode = punycode;\r\n\t\t}\r\n\r\n\t}(this));\r\n\r\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6)(module), (function() { return this; }())))\r\n\r\n/***/ },\r\n/* 6 */\r\n/***/ function(module, exports) {\r\n\r\n\tmodule.exports = function(module) {\r\n\t\tif(!module.webpackPolyfill) {\r\n\t\t\tmodule.deprecate = function() {};\r\n\t\t\tmodule.paths = [];\r\n\t\t\t// module.parent = undefined by default\r\n\t\t\tmodule.children = [];\r\n\t\t\tmodule.webpackPolyfill = 1;\r\n\t\t}\r\n\t\treturn module;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 7 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\texports.decode = exports.parse = __webpack_require__(8);\r\n\texports.encode = exports.stringify = __webpack_require__(9);\r\n\r\n\r\n/***/ },\r\n/* 8 */\r\n/***/ function(module, exports) {\r\n\r\n\t// Copyright Joyent, Inc. and other Node contributors.\r\n\t//\r\n\t// Permission is hereby granted, free of charge, to any person obtaining a\r\n\t// copy of this software and associated documentation files (the\r\n\t// \"Software\"), to deal in the Software without restriction, including\r\n\t// without limitation the rights to use, copy, modify, merge, publish,\r\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\r\n\t// persons to whom the Software is furnished to do so, subject to the\r\n\t// following conditions:\r\n\t//\r\n\t// The above copyright notice and this permission notice shall be included\r\n\t// in all copies or substantial portions of the Software.\r\n\t//\r\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\r\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\r\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\r\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\r\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n\t'use strict';\r\n\r\n\t// If obj.hasOwnProperty has been overridden, then calling\r\n\t// obj.hasOwnProperty(prop) will break.\r\n\t// See: https://github.com/joyent/node/issues/1707\r\n\tfunction hasOwnProperty(obj, prop) {\r\n\t return Object.prototype.hasOwnProperty.call(obj, prop);\r\n\t}\r\n\r\n\tmodule.exports = function(qs, sep, eq, options) {\r\n\t sep = sep || '&';\r\n\t eq = eq || '=';\r\n\t var obj = {};\r\n\r\n\t if (typeof qs !== 'string' || qs.length === 0) {\r\n\t return obj;\r\n\t }\r\n\r\n\t var regexp = /\\+/g;\r\n\t qs = qs.split(sep);\r\n\r\n\t var maxKeys = 1000;\r\n\t if (options && typeof options.maxKeys === 'number') {\r\n\t maxKeys = options.maxKeys;\r\n\t }\r\n\r\n\t var len = qs.length;\r\n\t // maxKeys <= 0 means that we should not limit keys count\r\n\t if (maxKeys > 0 && len > maxKeys) {\r\n\t len = maxKeys;\r\n\t }\r\n\r\n\t for (var i = 0; i < len; ++i) {\r\n\t var x = qs[i].replace(regexp, '%20'),\r\n\t idx = x.indexOf(eq),\r\n\t kstr, vstr, k, v;\r\n\r\n\t if (idx >= 0) {\r\n\t kstr = x.substr(0, idx);\r\n\t vstr = x.substr(idx + 1);\r\n\t } else {\r\n\t kstr = x;\r\n\t vstr = '';\r\n\t }\r\n\r\n\t k = decodeURIComponent(kstr);\r\n\t v = decodeURIComponent(vstr);\r\n\r\n\t if (!hasOwnProperty(obj, k)) {\r\n\t obj[k] = v;\r\n\t } else if (Array.isArray(obj[k])) {\r\n\t obj[k].push(v);\r\n\t } else {\r\n\t obj[k] = [obj[k], v];\r\n\t }\r\n\t }\r\n\r\n\t return obj;\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 9 */\r\n/***/ function(module, exports) {\r\n\r\n\t// Copyright Joyent, Inc. and other Node contributors.\r\n\t//\r\n\t// Permission is hereby granted, free of charge, to any person obtaining a\r\n\t// copy of this software and associated documentation files (the\r\n\t// \"Software\"), to deal in the Software without restriction, including\r\n\t// without limitation the rights to use, copy, modify, merge, publish,\r\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\r\n\t// persons to whom the Software is furnished to do so, subject to the\r\n\t// following conditions:\r\n\t//\r\n\t// The above copyright notice and this permission notice shall be included\r\n\t// in all copies or substantial portions of the Software.\r\n\t//\r\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\r\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\r\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\r\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\r\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n\t'use strict';\r\n\r\n\tvar stringifyPrimitive = function(v) {\r\n\t switch (typeof v) {\r\n\t case 'string':\r\n\t return v;\r\n\r\n\t case 'boolean':\r\n\t return v ? 'true' : 'false';\r\n\r\n\t case 'number':\r\n\t return isFinite(v) ? v : '';\r\n\r\n\t default:\r\n\t return '';\r\n\t }\r\n\t};\r\n\r\n\tmodule.exports = function(obj, sep, eq, name) {\r\n\t sep = sep || '&';\r\n\t eq = eq || '=';\r\n\t if (obj === null) {\r\n\t obj = undefined;\r\n\t }\r\n\r\n\t if (typeof obj === 'object') {\r\n\t return Object.keys(obj).map(function(k) {\r\n\t var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\r\n\t if (Array.isArray(obj[k])) {\r\n\t return obj[k].map(function(v) {\r\n\t return ks + encodeURIComponent(stringifyPrimitive(v));\r\n\t }).join(sep);\r\n\t } else {\r\n\t return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\r\n\t }\r\n\t }).join(sep);\r\n\r\n\t }\r\n\r\n\t if (!name) return '';\r\n\t return encodeURIComponent(stringifyPrimitive(name)) + eq +\r\n\t encodeURIComponent(stringifyPrimitive(obj));\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 10 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\r\n\tmodule.exports = function equal(a, b) {\r\n\t if (a === b) return true;\r\n\r\n\t var arrA = Array.isArray(a)\r\n\t , arrB = Array.isArray(b)\r\n\t , i;\r\n\r\n\t if (arrA && arrB) {\r\n\t if (a.length != b.length) return false;\r\n\t for (i = 0; i < a.length; i++)\r\n\t if (!equal(a[i], b[i])) return false;\r\n\t return true;\r\n\t }\r\n\r\n\t if (arrA != arrB) return false;\r\n\r\n\t if (a && b && typeof a === 'object' && typeof b === 'object') {\r\n\t var keys = Object.keys(a);\r\n\r\n\t if (keys.length !== Object.keys(b).length) return false;\r\n\r\n\t for (i = 0; i < keys.length; i++)\r\n\t if (b[keys[i]] === undefined) return false;\r\n\r\n\t for (i = 0; i < keys.length; i++)\r\n\t if(!equal(a[keys[i]], b[keys[i]])) return false;\r\n\r\n\t return true;\r\n\t }\r\n\r\n\t return false;\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 11 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\r\n\tmodule.exports = {\r\n\t copy: copy,\r\n\t checkDataType: checkDataType,\r\n\t checkDataTypes: checkDataTypes,\r\n\t coerceToTypes: coerceToTypes,\r\n\t toHash: toHash,\r\n\t getProperty: getProperty,\r\n\t escapeQuotes: escapeQuotes,\r\n\t ucs2length: ucs2length,\r\n\t varOccurences: varOccurences,\r\n\t varReplace: varReplace,\r\n\t cleanUpCode: cleanUpCode,\r\n\t cleanUpVarErrors: cleanUpVarErrors,\r\n\t schemaHasRules: schemaHasRules,\r\n\t stableStringify: __webpack_require__(12),\r\n\t toQuotedString: toQuotedString,\r\n\t getPathExpr: getPathExpr,\r\n\t getPath: getPath,\r\n\t getData: getData,\r\n\t unescapeFragment: unescapeFragment,\r\n\t escapeFragment: escapeFragment,\r\n\t escapeJsonPointer: escapeJsonPointer\r\n\t};\r\n\r\n\r\n\tfunction copy(o, to) {\r\n\t to = to || {};\r\n\t for (var key in o) to[key] = o[key];\r\n\t return to;\r\n\t}\r\n\r\n\r\n\tfunction checkDataType(dataType, data, negate) {\r\n\t var EQUAL = negate ? ' !== ' : ' === '\r\n\t , AND = negate ? ' || ' : ' && '\r\n\t , OK = negate ? '!' : ''\r\n\t , NOT = negate ? '' : '!';\r\n\t switch (dataType) {\r\n\t case 'null': return data + EQUAL + 'null';\r\n\t case 'array': return OK + 'Array.isArray(' + data + ')';\r\n\t case 'object': return '(' + OK + data + AND +\r\n\t 'typeof ' + data + EQUAL + '\"object\"' + AND +\r\n\t NOT + 'Array.isArray(' + data + '))';\r\n\t case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\r\n\t NOT + '(' + data + ' % 1))';\r\n\t default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\r\n\t }\r\n\t}\r\n\r\n\r\n\tfunction checkDataTypes(dataTypes, data) {\r\n\t switch (dataTypes.length) {\r\n\t case 1: return checkDataType(dataTypes[0], data, true);\r\n\t default:\r\n\t var code = '';\r\n\t var types = toHash(dataTypes);\r\n\t if (types.array && types.object) {\r\n\t code = types.null ? '(': '(!' + data + ' || ';\r\n\t code += 'typeof ' + data + ' !== \"object\")';\r\n\t delete types.null;\r\n\t delete types.array;\r\n\t delete types.object;\r\n\t }\r\n\t if (types.number) delete types.integer;\r\n\t for (var t in types)\r\n\t code += (code ? ' && ' : '' ) + checkDataType(t, data, true);\r\n\r\n\t return code;\r\n\t }\r\n\t}\r\n\r\n\r\n\tvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\r\n\tfunction coerceToTypes(dataTypes) {\r\n\t if (Array.isArray(dataTypes)) {\r\n\t var types = [];\r\n\t for (var i=0; i= 0xD800 && value <= 0xDBFF && pos < len) {\r\n\t // high surrogate, and there is a next character\r\n\t value = str.charCodeAt(pos);\r\n\t if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\r\n\t }\r\n\t }\r\n\t return length;\r\n\t}\r\n\r\n\r\n\tfunction varOccurences(str, dataVar) {\r\n\t dataVar += '[^0-9]';\r\n\t var matches = str.match(new RegExp(dataVar, 'g'));\r\n\t return matches ? matches.length : 0;\r\n\t}\r\n\r\n\r\n\tfunction varReplace(str, dataVar, expr) {\r\n\t dataVar += '([^0-9])';\r\n\t expr = expr.replace(/\\$/g, '$$$$');\r\n\t return str.replace(new RegExp(dataVar, 'g'), expr + '$1');\r\n\t}\r\n\r\n\r\n\tvar EMPTY_ELSE = /else\\s*{\\s*}/g\r\n\t , EMPTY_IF_NO_ELSE = /if\\s*\\([^)]+\\)\\s*\\{\\s*\\}(?!\\s*else)/g\r\n\t , EMPTY_IF_WITH_ELSE = /if\\s*\\(([^)]+)\\)\\s*\\{\\s*\\}\\s*else(?!\\s*if)/g;\r\n\tfunction cleanUpCode(out) {\r\n\t return out.replace(EMPTY_ELSE, '')\r\n\t .replace(EMPTY_IF_NO_ELSE, '')\r\n\t .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))');\r\n\t}\r\n\r\n\r\n\tvar ERRORS_REGEXP = /[^v\\.]errors/g\r\n\t , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g\r\n\t , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g\r\n\t , RETURN_VALID = 'return errors === 0;'\r\n\t , RETURN_TRUE = 'validate.errors = null; return true;'\r\n\t , RETURN_ASYNC = /if \\(errors === 0\\) return true;\\s*else throw new ValidationError\\(vErrors\\);/\r\n\t , RETURN_TRUE_ASYNC = 'return true;';\r\n\r\n\tfunction cleanUpVarErrors(out, async) {\r\n\t var matches = out.match(ERRORS_REGEXP);\r\n\t if (!matches || matches.length !== 2) return out;\r\n\t return async\r\n\t ? out.replace(REMOVE_ERRORS_ASYNC, '')\r\n\t .replace(RETURN_ASYNC, RETURN_TRUE_ASYNC)\r\n\t : out.replace(REMOVE_ERRORS, '')\r\n\t .replace(RETURN_VALID, RETURN_TRUE);\r\n\t}\r\n\r\n\r\n\tfunction schemaHasRules(schema, rules) {\r\n\t for (var key in schema) if (rules[key]) return true;\r\n\t}\r\n\r\n\r\n\tfunction toQuotedString(str) {\r\n\t return '\\'' + escapeQuotes(str) + '\\'';\r\n\t}\r\n\r\n\r\n\tfunction getPathExpr(currentPath, expr, jsonPointers, isNumber) {\r\n\t var path = jsonPointers // false by default\r\n\t ? '\\'/\\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \\'~0\\').replace(/\\\\//g, \\'~1\\')')\r\n\t : (isNumber ? '\\'[\\' + ' + expr + ' + \\']\\'' : '\\'[\\\\\\'\\' + ' + expr + ' + \\'\\\\\\']\\'');\r\n\t return joinPaths(currentPath, path);\r\n\t}\r\n\r\n\r\n\tfunction getPath(currentPath, prop, jsonPointers) {\r\n\t var path = jsonPointers // false by default\r\n\t ? toQuotedString('/' + escapeJsonPointer(prop))\r\n\t : toQuotedString(getProperty(prop));\r\n\t return joinPaths(currentPath, path);\r\n\t}\r\n\r\n\r\n\tvar RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\r\n\tfunction getData($data, lvl, paths) {\r\n\t var matches = $data.match(RELATIVE_JSON_POINTER);\r\n\t if (!matches) throw new Error('Invalid relative JSON-pointer: ' + $data);\r\n\t var up = +matches[1];\r\n\t var jsonPointer = matches[2];\r\n\t if (jsonPointer == '#') {\r\n\t if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\r\n\t return paths[lvl - up];\r\n\t }\r\n\r\n\t if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\r\n\t var data = 'data' + ((lvl - up) || '');\r\n\t if (!jsonPointer) return data;\r\n\r\n\t var expr = data;\r\n\t var segments = jsonPointer.split('/');\r\n\t for (var i=0; i= '0' && ch <= '9') {\r\n\t string += ch;\r\n\t next();\r\n\t }\r\n\t if (ch === '.') {\r\n\t string += '.';\r\n\t while (next() && ch >= '0' && ch <= '9') {\r\n\t string += ch;\r\n\t }\r\n\t }\r\n\t if (ch === 'e' || ch === 'E') {\r\n\t string += ch;\r\n\t next();\r\n\t if (ch === '-' || ch === '+') {\r\n\t string += ch;\r\n\t next();\r\n\t }\r\n\t while (ch >= '0' && ch <= '9') {\r\n\t string += ch;\r\n\t next();\r\n\t }\r\n\t }\r\n\t number = +string;\r\n\t if (!isFinite(number)) {\r\n\t error(\"Bad number\");\r\n\t } else {\r\n\t return number;\r\n\t }\r\n\t },\r\n\t \r\n\t string = function () {\r\n\t // Parse a string value.\r\n\t var hex,\r\n\t i,\r\n\t string = '',\r\n\t uffff;\r\n\t \r\n\t // When parsing for string values, we must look for \" and \\ characters.\r\n\t if (ch === '\"') {\r\n\t while (next()) {\r\n\t if (ch === '\"') {\r\n\t next();\r\n\t return string;\r\n\t } else if (ch === '\\\\') {\r\n\t next();\r\n\t if (ch === 'u') {\r\n\t uffff = 0;\r\n\t for (i = 0; i < 4; i += 1) {\r\n\t hex = parseInt(next(), 16);\r\n\t if (!isFinite(hex)) {\r\n\t break;\r\n\t }\r\n\t uffff = uffff * 16 + hex;\r\n\t }\r\n\t string += String.fromCharCode(uffff);\r\n\t } else if (typeof escapee[ch] === 'string') {\r\n\t string += escapee[ch];\r\n\t } else {\r\n\t break;\r\n\t }\r\n\t } else {\r\n\t string += ch;\r\n\t }\r\n\t }\r\n\t }\r\n\t error(\"Bad string\");\r\n\t },\r\n\r\n\t white = function () {\r\n\r\n\t// Skip whitespace.\r\n\r\n\t while (ch && ch <= ' ') {\r\n\t next();\r\n\t }\r\n\t },\r\n\r\n\t word = function () {\r\n\r\n\t// true, false, or null.\r\n\r\n\t switch (ch) {\r\n\t case 't':\r\n\t next('t');\r\n\t next('r');\r\n\t next('u');\r\n\t next('e');\r\n\t return true;\r\n\t case 'f':\r\n\t next('f');\r\n\t next('a');\r\n\t next('l');\r\n\t next('s');\r\n\t next('e');\r\n\t return false;\r\n\t case 'n':\r\n\t next('n');\r\n\t next('u');\r\n\t next('l');\r\n\t next('l');\r\n\t return null;\r\n\t }\r\n\t error(\"Unexpected '\" + ch + \"'\");\r\n\t },\r\n\r\n\t value, // Place holder for the value function.\r\n\r\n\t array = function () {\r\n\r\n\t// Parse an array value.\r\n\r\n\t var array = [];\r\n\r\n\t if (ch === '[') {\r\n\t next('[');\r\n\t white();\r\n\t if (ch === ']') {\r\n\t next(']');\r\n\t return array; // empty array\r\n\t }\r\n\t while (ch) {\r\n\t array.push(value());\r\n\t white();\r\n\t if (ch === ']') {\r\n\t next(']');\r\n\t return array;\r\n\t }\r\n\t next(',');\r\n\t white();\r\n\t }\r\n\t }\r\n\t error(\"Bad array\");\r\n\t },\r\n\r\n\t object = function () {\r\n\r\n\t// Parse an object value.\r\n\r\n\t var key,\r\n\t object = {};\r\n\r\n\t if (ch === '{') {\r\n\t next('{');\r\n\t white();\r\n\t if (ch === '}') {\r\n\t next('}');\r\n\t return object; // empty object\r\n\t }\r\n\t while (ch) {\r\n\t key = string();\r\n\t white();\r\n\t next(':');\r\n\t if (Object.hasOwnProperty.call(object, key)) {\r\n\t error('Duplicate key \"' + key + '\"');\r\n\t }\r\n\t object[key] = value();\r\n\t white();\r\n\t if (ch === '}') {\r\n\t next('}');\r\n\t return object;\r\n\t }\r\n\t next(',');\r\n\t white();\r\n\t }\r\n\t }\r\n\t error(\"Bad object\");\r\n\t };\r\n\r\n\tvalue = function () {\r\n\r\n\t// Parse a JSON value. It could be an object, an array, a string, a number,\r\n\t// or a word.\r\n\r\n\t white();\r\n\t switch (ch) {\r\n\t case '{':\r\n\t return object();\r\n\t case '[':\r\n\t return array();\r\n\t case '\"':\r\n\t return string();\r\n\t case '-':\r\n\t return number();\r\n\t default:\r\n\t return ch >= '0' && ch <= '9' ? number() : word();\r\n\t }\r\n\t};\r\n\r\n\t// Return the json_parse function. It will have access to all of the above\r\n\t// functions and variables.\r\n\r\n\tmodule.exports = function (source, reviver) {\r\n\t var result;\r\n\t \r\n\t text = source;\r\n\t at = 0;\r\n\t ch = ' ';\r\n\t result = value();\r\n\t white();\r\n\t if (ch) {\r\n\t error(\"Syntax error\");\r\n\t }\r\n\r\n\t // If there is a reviver function, we recursively walk the new structure,\r\n\t // passing each name/value pair to the reviver function for possible\r\n\t // transformation, starting with a temporary root object that holds the result\r\n\t // in an empty key. If there is not a reviver function, we simply return the\r\n\t // result.\r\n\r\n\t return typeof reviver === 'function' ? (function walk(holder, key) {\r\n\t var k, v, value = holder[key];\r\n\t if (value && typeof value === 'object') {\r\n\t for (k in value) {\r\n\t if (Object.prototype.hasOwnProperty.call(value, k)) {\r\n\t v = walk(value, k);\r\n\t if (v !== undefined) {\r\n\t value[k] = v;\r\n\t } else {\r\n\t delete value[k];\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t return reviver.call(holder, key, value);\r\n\t }({'': result}, '')) : result;\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 15 */\r\n/***/ function(module, exports) {\r\n\r\n\tvar cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\r\n\t escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\r\n\t gap,\r\n\t indent,\r\n\t meta = { // table of character substitutions\r\n\t '\\b': '\\\\b',\r\n\t '\\t': '\\\\t',\r\n\t '\\n': '\\\\n',\r\n\t '\\f': '\\\\f',\r\n\t '\\r': '\\\\r',\r\n\t '\"' : '\\\\\"',\r\n\t '\\\\': '\\\\\\\\'\r\n\t },\r\n\t rep;\r\n\r\n\tfunction quote(string) {\r\n\t // If the string contains no control characters, no quote characters, and no\r\n\t // backslash characters, then we can safely slap some quotes around it.\r\n\t // Otherwise we must also replace the offending characters with safe escape\r\n\t // sequences.\r\n\t \r\n\t escapable.lastIndex = 0;\r\n\t return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\r\n\t var c = meta[a];\r\n\t return typeof c === 'string' ? c :\r\n\t '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\r\n\t }) + '\"' : '\"' + string + '\"';\r\n\t}\r\n\r\n\tfunction str(key, holder) {\r\n\t // Produce a string from holder[key].\r\n\t var i, // The loop counter.\r\n\t k, // The member key.\r\n\t v, // The member value.\r\n\t length,\r\n\t mind = gap,\r\n\t partial,\r\n\t value = holder[key];\r\n\t \r\n\t // If the value has a toJSON method, call it to obtain a replacement value.\r\n\t if (value && typeof value === 'object' &&\r\n\t typeof value.toJSON === 'function') {\r\n\t value = value.toJSON(key);\r\n\t }\r\n\t \r\n\t // If we were called with a replacer function, then call the replacer to\r\n\t // obtain a replacement value.\r\n\t if (typeof rep === 'function') {\r\n\t value = rep.call(holder, key, value);\r\n\t }\r\n\t \r\n\t // What happens next depends on the value's type.\r\n\t switch (typeof value) {\r\n\t case 'string':\r\n\t return quote(value);\r\n\t \r\n\t case 'number':\r\n\t // JSON numbers must be finite. Encode non-finite numbers as null.\r\n\t return isFinite(value) ? String(value) : 'null';\r\n\t \r\n\t case 'boolean':\r\n\t case 'null':\r\n\t // If the value is a boolean or null, convert it to a string. Note:\r\n\t // typeof null does not produce 'null'. The case is included here in\r\n\t // the remote chance that this gets fixed someday.\r\n\t return String(value);\r\n\t \r\n\t case 'object':\r\n\t if (!value) return 'null';\r\n\t gap += indent;\r\n\t partial = [];\r\n\t \r\n\t // Array.isArray\r\n\t if (Object.prototype.toString.apply(value) === '[object Array]') {\r\n\t length = value.length;\r\n\t for (i = 0; i < length; i += 1) {\r\n\t partial[i] = str(i, value) || 'null';\r\n\t }\r\n\t \r\n\t // Join all of the elements together, separated with commas, and\r\n\t // wrap them in brackets.\r\n\t v = partial.length === 0 ? '[]' : gap ?\r\n\t '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' :\r\n\t '[' + partial.join(',') + ']';\r\n\t gap = mind;\r\n\t return v;\r\n\t }\r\n\t \r\n\t // If the replacer is an array, use it to select the members to be\r\n\t // stringified.\r\n\t if (rep && typeof rep === 'object') {\r\n\t length = rep.length;\r\n\t for (i = 0; i < length; i += 1) {\r\n\t k = rep[i];\r\n\t if (typeof k === 'string') {\r\n\t v = str(k, value);\r\n\t if (v) {\r\n\t partial.push(quote(k) + (gap ? ': ' : ':') + v);\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t else {\r\n\t // Otherwise, iterate through all of the keys in the object.\r\n\t for (k in value) {\r\n\t if (Object.prototype.hasOwnProperty.call(value, k)) {\r\n\t v = str(k, value);\r\n\t if (v) {\r\n\t partial.push(quote(k) + (gap ? ': ' : ':') + v);\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t \r\n\t // Join all of the member texts together, separated with commas,\r\n\t // and wrap them in braces.\r\n\r\n\t v = partial.length === 0 ? '{}' : gap ?\r\n\t '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' :\r\n\t '{' + partial.join(',') + '}';\r\n\t gap = mind;\r\n\t return v;\r\n\t }\r\n\t}\r\n\r\n\tmodule.exports = function (value, replacer, space) {\r\n\t var i;\r\n\t gap = '';\r\n\t indent = '';\r\n\t \r\n\t // If the space parameter is a number, make an indent string containing that\r\n\t // many spaces.\r\n\t if (typeof space === 'number') {\r\n\t for (i = 0; i < space; i += 1) {\r\n\t indent += ' ';\r\n\t }\r\n\t }\r\n\t // If the space parameter is a string, it will be used as the indent string.\r\n\t else if (typeof space === 'string') {\r\n\t indent = space;\r\n\t }\r\n\r\n\t // If there is a replacer, it must be a function or an array.\r\n\t // Otherwise, throw an error.\r\n\t rep = replacer;\r\n\t if (replacer && typeof replacer !== 'function'\r\n\t && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {\r\n\t throw new Error('JSON.stringify');\r\n\t }\r\n\t \r\n\t // Make a fake root object containing our value under the key of ''.\r\n\t // Return the result of stringifying the value.\r\n\t return str('', {'': value});\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 16 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar util = __webpack_require__(11);\r\n\r\n\tmodule.exports = SchemaObject;\r\n\r\n\tfunction SchemaObject(obj) {\r\n\t util.copy(obj, this);\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 17 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tmodule.exports = {\r\n\t setup: setupAsync,\r\n\t compile: compileAsync\r\n\t};\r\n\r\n\r\n\tvar util = __webpack_require__(11);\r\n\r\n\tvar ASYNC = {\r\n\t '*': checkGenerators,\r\n\t 'co*': checkGenerators,\r\n\t 'es7': checkAsyncFunction\r\n\t};\r\n\r\n\tvar TRANSPILE = {\r\n\t 'nodent': getNodent,\r\n\t 'regenerator': getRegenerator\r\n\t};\r\n\r\n\tvar MODES = [\r\n\t { async: 'co*' },\r\n\t { async: 'es7', transpile: 'nodent' },\r\n\t { async: 'co*', transpile: 'regenerator' }\r\n\t];\r\n\r\n\r\n\tvar regenerator, nodent;\r\n\r\n\r\n\tfunction setupAsync(opts, required) {\r\n\t if (required !== false) required = true;\r\n\t var async = opts.async\r\n\t , transpile = opts.transpile\r\n\t , check;\r\n\r\n\t switch (typeof transpile) {\r\n\t case 'string':\r\n\t var get = TRANSPILE[transpile];\r\n\t if (!get) throw new Error('bad transpiler: ' + transpile);\r\n\t return (opts._transpileFunc = get(opts, required));\r\n\t case 'undefined':\r\n\t case 'boolean':\r\n\t if (typeof async == 'string') {\r\n\t check = ASYNC[async];\r\n\t if (!check) throw new Error('bad async mode: ' + async);\r\n\t return (opts.transpile = check(opts, required));\r\n\t }\r\n\r\n\t for (var i=0; i 2) res = slice.call(arguments, 1);\r\n\t resolve(res);\r\n\t });\r\n\t });\r\n\t}\r\n\r\n\t/**\r\n\t * Convert an array of \"yieldables\" to a promise.\r\n\t * Uses `Promise.all()` internally.\r\n\t *\r\n\t * @param {Array} obj\r\n\t * @return {Promise}\r\n\t * @api private\r\n\t */\r\n\r\n\tfunction arrayToPromise(obj) {\r\n\t return Promise.all(obj.map(toPromise, this));\r\n\t}\r\n\r\n\t/**\r\n\t * Convert an object of \"yieldables\" to a promise.\r\n\t * Uses `Promise.all()` internally.\r\n\t *\r\n\t * @param {Object} obj\r\n\t * @return {Promise}\r\n\t * @api private\r\n\t */\r\n\r\n\tfunction objectToPromise(obj){\r\n\t var results = new obj.constructor();\r\n\t var keys = Object.keys(obj);\r\n\t var promises = [];\r\n\t for (var i = 0; i < keys.length; i++) {\r\n\t var key = keys[i];\r\n\t var promise = toPromise.call(this, obj[key]);\r\n\t if (promise && isPromise(promise)) defer(promise, key);\r\n\t else results[key] = obj[key];\r\n\t }\r\n\t return Promise.all(promises).then(function () {\r\n\t return results;\r\n\t });\r\n\r\n\t function defer(promise, key) {\r\n\t // predefine the key in the result\r\n\t results[key] = undefined;\r\n\t promises.push(promise.then(function (res) {\r\n\t results[key] = res;\r\n\t }));\r\n\t }\r\n\t}\r\n\r\n\t/**\r\n\t * Check if `obj` is a promise.\r\n\t *\r\n\t * @param {Object} obj\r\n\t * @return {Boolean}\r\n\t * @api private\r\n\t */\r\n\r\n\tfunction isPromise(obj) {\r\n\t return 'function' == typeof obj.then;\r\n\t}\r\n\r\n\t/**\r\n\t * Check if `obj` is a generator.\r\n\t *\r\n\t * @param {Mixed} obj\r\n\t * @return {Boolean}\r\n\t * @api private\r\n\t */\r\n\r\n\tfunction isGenerator(obj) {\r\n\t return 'function' == typeof obj.next && 'function' == typeof obj.throw;\r\n\t}\r\n\r\n\t/**\r\n\t * Check if `obj` is a generator function.\r\n\t *\r\n\t * @param {Mixed} obj\r\n\t * @return {Boolean}\r\n\t * @api private\r\n\t */\r\n\tfunction isGeneratorFunction(obj) {\r\n\t var constructor = obj.constructor;\r\n\t if (!constructor) return false;\r\n\t if ('GeneratorFunction' === constructor.name || 'GeneratorFunction' === constructor.displayName) return true;\r\n\t return isGenerator(constructor.prototype);\r\n\t}\r\n\r\n\t/**\r\n\t * Check for plain object.\r\n\t *\r\n\t * @param {Mixed} val\r\n\t * @return {Boolean}\r\n\t * @api private\r\n\t */\r\n\r\n\tfunction isObject(val) {\r\n\t return Object == val.constructor;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 20 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\r\n\tmodule.exports = ValidationError;\r\n\r\n\r\n\tfunction ValidationError(errors) {\r\n\t this.message = 'validation failed';\r\n\t this.errors = errors;\r\n\t this.ajv = this.validation = true;\r\n\t}\r\n\r\n\r\n\tValidationError.prototype = Object.create(Error.prototype);\r\n\tValidationError.prototype.constructor = ValidationError;\r\n\r\n\r\n/***/ },\r\n/* 21 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\r\n\r\n\tvar Cache = module.exports = function Cache() {\r\n\t this._cache = {};\r\n\t};\r\n\r\n\r\n\tCache.prototype.put = function Cache_put(key, value) {\r\n\t this._cache[key] = value;\r\n\t};\r\n\r\n\r\n\tCache.prototype.get = function Cache_get(key) {\r\n\t return this._cache[key];\r\n\t};\r\n\r\n\r\n\tCache.prototype.del = function Cache_del(key) {\r\n\t delete this._cache[key];\r\n\t};\r\n\r\n\r\n\tCache.prototype.clear = function Cache_clear() {\r\n\t this._cache = {};\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 22 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar util = __webpack_require__(11);\r\n\r\n\tvar DATE = /^\\d\\d\\d\\d-(\\d\\d)-(\\d\\d)$/;\r\n\tvar DAYS = [0,31,29,31,30,31,30,31,31,30,31,30,31];\r\n\tvar TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d:\\d\\d)?$/i;\r\n\tvar HOSTNAME = /^[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?(\\.[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?)*$/i;\r\n\tvar URI = /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@\\/?]|%[0-9a-f]{2})*)?(?:\\#(?:[a-z0-9\\-._~!$&'()*+,;=:@\\/?]|%[0-9a-f]{2})*)?$/i;\r\n\tvar UUID = /^(?:urn\\:uuid\\:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\r\n\tvar JSON_POINTER = /^(?:\\/(?:[^~\\/]|~0|~1)+)*(?:\\/)?$|^\\#(?:\\/(?:[a-z0-9_\\-\\.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)+)*(?:\\/)?$/i;\r\n\tvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:\\#|(?:\\/(?:[^~\\/]|~0|~1)+)*(?:\\/)?)$/;\r\n\r\n\r\n\tmodule.exports = formats;\r\n\r\n\tfunction formats(mode) {\r\n\t mode = mode == 'full' ? 'full' : 'fast';\r\n\t var formatDefs = util.copy(formats[mode]);\r\n\t for (var fName in formats.compare) {\r\n\t formatDefs[fName] = {\r\n\t validate: formatDefs[fName],\r\n\t compare: formats.compare[fName]\r\n\t };\r\n\t }\r\n\t return formatDefs;\r\n\t}\r\n\r\n\r\n\tformats.fast = {\r\n\t // date: http://tools.ietf.org/html/rfc3339#section-5.6\r\n\t date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\r\n\t // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\r\n\t time: /^[0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:z|[+-]\\d\\d:\\d\\d)?$/i,\r\n\t 'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s][0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:z|[+-]\\d\\d:\\d\\d)$/i,\r\n\t // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\r\n\t uri: /^(?:[a-z][a-z0-9+-.]*)?(?:\\:|\\/)\\/?[^\\s]*$/i,\r\n\t // email (sources from jsen validator):\r\n\t // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\r\n\t // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\r\n\t email: /^[a-z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\r\n\t hostname: HOSTNAME,\r\n\t // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\r\n\t ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\r\n\t // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\r\n\t ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\r\n\t regex: regex,\r\n\t // uuid: http://tools.ietf.org/html/rfc4122\r\n\t uuid: UUID,\r\n\t // JSON-pointer: https://tools.ietf.org/html/rfc6901\r\n\t // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\r\n\t 'json-pointer': JSON_POINTER,\r\n\t // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\r\n\t 'relative-json-pointer': RELATIVE_JSON_POINTER\r\n\t};\r\n\r\n\r\n\tformats.full = {\r\n\t date: date,\r\n\t time: time,\r\n\t 'date-time': date_time,\r\n\t uri: uri,\r\n\t email: /^[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&''*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\r\n\t hostname: hostname,\r\n\t ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\r\n\t ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\r\n\t regex: regex,\r\n\t uuid: UUID,\r\n\t 'json-pointer': JSON_POINTER,\r\n\t 'relative-json-pointer': RELATIVE_JSON_POINTER\r\n\t};\r\n\r\n\r\n\tformats.compare = {\r\n\t date: compareDate,\r\n\t time: compareTime,\r\n\t 'date-time': compareDateTime\r\n\t};\r\n\r\n\r\n\tfunction date(str) {\r\n\t // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\r\n\t var matches = str.match(DATE);\r\n\t if (!matches) return false;\r\n\r\n\t var month = +matches[1];\r\n\t var day = +matches[2];\r\n\t return month >= 1 && month <= 12 && day >= 1 && day <= DAYS[month];\r\n\t}\r\n\r\n\r\n\tfunction time(str, full) {\r\n\t var matches = str.match(TIME);\r\n\t if (!matches) return false;\r\n\r\n\t var hour = matches[1];\r\n\t var minute = matches[2];\r\n\t var second = matches[3];\r\n\t var timeZone = matches[5];\r\n\t return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone);\r\n\t}\r\n\r\n\r\n\tvar DATE_TIME_SEPARATOR = /t|\\s/i;\r\n\tfunction date_time(str) {\r\n\t // http://tools.ietf.org/html/rfc3339#section-5.6\r\n\t var dateTime = str.split(DATE_TIME_SEPARATOR);\r\n\t return date(dateTime[0]) && time(dateTime[1], true);\r\n\t}\r\n\r\n\r\n\tfunction hostname(str) {\r\n\t // http://tools.ietf.org/html/rfc1034#section-3.5\r\n\t return str.length <= 255 && HOSTNAME.test(str);\r\n\t}\r\n\r\n\r\n\tvar NOT_URI_FRAGMENT = /\\/|\\:/;\r\n\tfunction uri(str) {\r\n\t // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\r\n\t return NOT_URI_FRAGMENT.test(str) && URI.test(str);\r\n\t}\r\n\r\n\r\n\tfunction regex(str) {\r\n\t try {\r\n\t new RegExp(str);\r\n\t return true;\r\n\t } catch(e) {\r\n\t return false;\r\n\t }\r\n\t}\r\n\r\n\r\n\tfunction compareDate(d1, d2) {\r\n\t if (!(d1 && d2)) return;\r\n\t if (d1 > d2) return 1;\r\n\t if (d1 < d2) return -1;\r\n\t if (d1 === d2) return 0;\r\n\t}\r\n\r\n\r\n\tfunction compareTime(t1, t2) {\r\n\t if (!(t1 && t2)) return;\r\n\t t1 = t1.match(TIME);\r\n\t t2 = t2.match(TIME);\r\n\t if (!(t1 && t2)) return;\r\n\t t1 = t1[1] + t1[2] + t1[3] + (t1[4]||'');\r\n\t t2 = t2[1] + t2[2] + t2[3] + (t2[4]||'');\r\n\t if (t1 > t2) return 1;\r\n\t if (t1 < t2) return -1;\r\n\t if (t1 === t2) return 0;\r\n\t}\r\n\r\n\r\n\tfunction compareDateTime(dt1, dt2) {\r\n\t if (!(dt1 && dt2)) return;\r\n\t dt1 = dt1.split(DATE_TIME_SEPARATOR);\r\n\t dt2 = dt2.split(DATE_TIME_SEPARATOR);\r\n\t var res = compareDate(dt1[0], dt2[0]);\r\n\t if (res === undefined) return;\r\n\t return res || compareTime(dt1[1], dt2[1]);\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 23 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar ruleModules = __webpack_require__(24)\r\n\t , util = __webpack_require__(11);\r\n\r\n\tmodule.exports = function rules() {\r\n\t var RULES = [\r\n\t { type: 'number',\r\n\t rules: [ 'maximum', 'minimum', 'multipleOf'] },\r\n\t { type: 'string',\r\n\t rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },\r\n\t { type: 'array',\r\n\t rules: [ 'maxItems', 'minItems', 'uniqueItems', 'items' ] },\r\n\t { type: 'object',\r\n\t rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'properties' ] },\r\n\t { rules: [ '$ref', 'enum', 'not', 'anyOf', 'oneOf', 'allOf' ] }\r\n\t ];\r\n\r\n\t RULES.all = [ 'type', 'additionalProperties', 'patternProperties' ];\r\n\t RULES.keywords = [ 'additionalItems', '$schema', 'id', 'title', 'description', 'default' ];\r\n\t RULES.types = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];\r\n\r\n\t RULES.forEach(function (group) {\r\n\t group.rules = group.rules.map(function (keyword) {\r\n\t RULES.all.push(keyword);\r\n\t return {\r\n\t keyword: keyword,\r\n\t code: ruleModules[keyword]\r\n\t };\r\n\t });\r\n\t });\r\n\r\n\t RULES.keywords = util.toHash(RULES.all.concat(RULES.keywords));\r\n\t RULES.all = util.toHash(RULES.all);\r\n\t RULES.types = util.toHash(RULES.types);\r\n\r\n\t return RULES;\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 24 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\t//all requires must be explicit because browserify won't work with dynamic requires\r\n\tmodule.exports = {\r\n\t '$ref': __webpack_require__(25),\r\n\t allOf: __webpack_require__(26),\r\n\t anyOf: __webpack_require__(27),\r\n\t dependencies: __webpack_require__(28),\r\n\t enum: __webpack_require__(29),\r\n\t format: __webpack_require__(30),\r\n\t items: __webpack_require__(31),\r\n\t maximum: __webpack_require__(32),\r\n\t minimum: __webpack_require__(32),\r\n\t maxItems: __webpack_require__(33),\r\n\t minItems: __webpack_require__(33),\r\n\t maxLength: __webpack_require__(34),\r\n\t minLength: __webpack_require__(34),\r\n\t maxProperties: __webpack_require__(35),\r\n\t minProperties: __webpack_require__(35),\r\n\t multipleOf: __webpack_require__(36),\r\n\t not: __webpack_require__(37),\r\n\t oneOf: __webpack_require__(38),\r\n\t pattern: __webpack_require__(39),\r\n\t properties: __webpack_require__(40),\r\n\t required: __webpack_require__(41),\r\n\t uniqueItems: __webpack_require__(42),\r\n\t validate: __webpack_require__(18)\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 25 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_ref(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $async, $refCode;\r\n\t if ($schema == '#' || $schema == '#/') {\r\n\t if (it.isRoot) {\r\n\t $async = it.async;\r\n\t $refCode = 'validate';\r\n\t } else {\r\n\t $async = it.root.schema.$async === true;\r\n\t $refCode = 'root.refVal[0]';\r\n\t }\r\n\t } else {\r\n\t var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);\r\n\t if ($refVal === undefined) {\r\n\t var $message = 'can\\'t resolve reference ' + $schema + ' from id ' + it.baseId;\r\n\t if (it.opts.missingRefs == 'fail') {\r\n\t console.log($message);\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '$ref') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { ref: \\'' + (it.util.escapeQuotes($schema)) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'can\\\\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (false) { ';\r\n\t }\r\n\t } else if (it.opts.missingRefs == 'ignore') {\r\n\t console.log($message);\r\n\t if ($breakOnError) {\r\n\t out += ' if (true) { ';\r\n\t }\r\n\t } else {\r\n\t var $error = new Error($message);\r\n\t $error.missingRef = it.resolve.url(it.baseId, $schema);\r\n\t $error.missingSchema = it.resolve.normalizeId(it.resolve.fullPath($error.missingRef));\r\n\t throw $error;\r\n\t }\r\n\t } else if ($refVal.inline) {\r\n\t var $it = it.util.copy(it);\r\n\t $it.level++;\r\n\t $it.schema = $refVal.schema;\r\n\t $it.schemaPath = '';\r\n\t $it.errSchemaPath = $schema;\r\n\t var $code = it.validate($it).replace(/validate\\.schema/g, $refVal.code);\r\n\t out += ' ' + ($code) + ' ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t }\r\n\t } else {\r\n\t $async = $refVal.async;\r\n\t $refCode = $refVal.code;\r\n\t }\r\n\t }\r\n\t if ($refCode) {\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = '';\r\n\t if (it.opts.passContext) {\r\n\t out += ' ' + ($refCode) + '.call(this, ';\r\n\t } else {\r\n\t out += ' ' + ($refCode) + '( ';\r\n\t }\r\n\t out += ' ' + ($data) + ', (dataPath || \\'\\')';\r\n\t if (it.errorPath != '\"\"') {\r\n\t out += ' + ' + (it.errorPath);\r\n\t }\r\n\t if ($dataLvl) {\r\n\t out += ' , data' + (($dataLvl - 1) || '') + ' , ' + (it.dataPathArr[$dataLvl]) + ' ';\r\n\t } else {\r\n\t out += ' , parentData , parentDataProperty ';\r\n\t }\r\n\t out += ') ';\r\n\t var __callValidate = out;\r\n\t out = $$outStack.pop();\r\n\t if ($async) {\r\n\t if (!it.async) throw new Error('async schema referenced by sync schema');\r\n\t out += ' try { ';\r\n\t if ($breakOnError) {\r\n\t out += 'var ' + ($valid) + ' =';\r\n\t }\r\n\t out += ' ' + (it.yieldAwait) + ' ' + (__callValidate) + '; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (' + ($valid) + ') { ';\r\n\t }\r\n\t } else {\r\n\t out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t }\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 26 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_allOf(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $it = it.util.copy(it);\r\n\t var $closingBraces = '';\r\n\t $it.level++;\r\n\t var arr1 = $schema;\r\n\t if (arr1) {\r\n\t var $sch, $i = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while ($i < l1) {\r\n\t $sch = arr1[$i += 1];\r\n\t if (it.util.schemaHasRules($sch, it.RULES.all)) {\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = $schemaPath + '[' + $i + ']';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $i;\r\n\t out += ' ' + (it.validate($it)) + ' ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' ' + ($closingBraces.slice(0, -1));\r\n\t }\r\n\t out = it.util.cleanUpCode(out);\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 27 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_anyOf(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $errs = 'errs__' + $lvl;\r\n\t var $it = it.util.copy(it);\r\n\t var $closingBraces = '';\r\n\t $it.level++;\r\n\t var $noEmptySchema = $schema.every(function($sch) {\r\n\t return it.util.schemaHasRules($sch, it.RULES.all);\r\n\t });\r\n\t if ($noEmptySchema) {\r\n\t out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; ';\r\n\t var $wasComposite = it.compositeRule;\r\n\t it.compositeRule = $it.compositeRule = true;\r\n\t var arr1 = $schema;\r\n\t if (arr1) {\r\n\t var $sch, $i = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while ($i < l1) {\r\n\t $sch = arr1[$i += 1];\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = $schemaPath + '[' + $i + ']';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $i;\r\n\t out += ' ' + (it.validate($it)) + ' ' + ($valid) + ' = ' + ($valid) + ' || valid' + ($it.level) + '; if (!' + ($valid) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t it.compositeRule = $it.compositeRule = $wasComposite;\r\n\t out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should match some schema in anyOf\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\r\n\t if (it.opts.allErrors) {\r\n\t out += ' } ';\r\n\t }\r\n\t out = it.util.cleanUpCode(out);\r\n\t } else {\r\n\t if ($breakOnError) {\r\n\t out += ' if (true) { ';\r\n\t }\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 28 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_dependencies(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $errs = 'errs__' + $lvl;\r\n\t var $it = it.util.copy(it);\r\n\t var $closingBraces = '';\r\n\t $it.level++;\r\n\t var $schemaDeps = {},\r\n\t $propertyDeps = {};\r\n\t for ($property in $schema) {\r\n\t var $sch = $schema[$property];\r\n\t var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;\r\n\t $deps[$property] = $sch;\r\n\t }\r\n\t out += 'var ' + ($errs) + ' = errors;';\r\n\t var $currentErrorPath = it.errorPath;\r\n\t out += 'var missing' + ($lvl) + ';';\r\n\t for (var $property in $propertyDeps) {\r\n\t $deps = $propertyDeps[$property];\r\n\t out += ' if (' + ($data) + (it.util.getProperty($property)) + ' !== undefined && ( ';\r\n\t var arr1 = $deps;\r\n\t if (arr1) {\r\n\t var _$property, $i = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while ($i < l1) {\r\n\t _$property = arr1[$i += 1];\r\n\t if ($i) {\r\n\t out += ' || ';\r\n\t }\r\n\t var $prop = it.util.getProperty(_$property);\r\n\t out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) ';\r\n\t }\r\n\t }\r\n\t out += ')) { ';\r\n\t var $propertyPath = 'missing' + $lvl,\r\n\t $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\r\n\t }\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should have ';\r\n\t if ($deps.length == 1) {\r\n\t out += 'property ' + (it.util.escapeQuotes($deps[0]));\r\n\t } else {\r\n\t out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\r\n\t }\r\n\t out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t $closingBraces += '}';\r\n\t out += ' else { ';\r\n\t }\r\n\t }\r\n\t it.errorPath = $currentErrorPath;\r\n\t for (var $property in $schemaDeps) {\r\n\t var $sch = $schemaDeps[$property];\r\n\t if (it.util.schemaHasRules($sch, it.RULES.all)) {\r\n\t out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '[\\'' + ($property) + '\\'] !== undefined) { ';\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = $schemaPath + it.util.getProperty($property);\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\r\n\t out += ' ' + (it.validate($it)) + ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\r\n\t }\r\n\t out = it.util.cleanUpCode(out);\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 29 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_enum(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t var $i = 'i' + $lvl;\r\n\t if (!$isData) {\r\n\t out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\r\n\t }\r\n\t out += 'var ' + ($valid) + ';';\r\n\t if ($isData) {\r\n\t out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\r\n\t }\r\n\t out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + ' ' + ($i) + ') { ';\r\n\t var $passData = $data + '[' + $i + ']';\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = $schemaPath + '[' + $i + ']';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $i;\r\n\t $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\r\n\t $it.dataPathArr[$dataNxt] = $i;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) {\r\n\t $it.schema = $additionalItems;\r\n\t $it.schemaPath = it.schemaPath + '.additionalItems';\r\n\t $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\r\n\t out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var i' + ($lvl) + ' = ' + ($schema.length) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { ';\r\n\t $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true);\r\n\t var $passData = $data + '[i' + $lvl + ']';\r\n\t $it.dataPathArr[$dataNxt] = 'i' + $lvl;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (!valid' + ($it.level) + ') break; ';\r\n\t }\r\n\t out += ' } } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t } else if (it.util.schemaHasRules($schema, it.RULES.all)) {\r\n\t $it.schema = $schema;\r\n\t $it.schemaPath = $schemaPath;\r\n\t $it.errSchemaPath = $errSchemaPath;\r\n\t out += ' for (var i' + ($lvl) + ' = ' + (0) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { ';\r\n\t $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true);\r\n\t var $passData = $data + '[i' + $lvl + ']';\r\n\t $it.dataPathArr[$dataNxt] = 'i' + $lvl;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (!valid' + ($it.level) + ') break; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\r\n\t }\r\n\t out = it.util.cleanUpCode(out);\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 32 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate__limit(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t var $isMax = $keyword == 'maximum',\r\n\t $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',\r\n\t $schemaExcl = it.schema[$exclusiveKeyword],\r\n\t $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data,\r\n\t $op = $isMax ? '<' : '>',\r\n\t $notOp = $isMax ? '>' : '<';\r\n\t if ($isDataExcl) {\r\n\t var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\r\n\t $exclusive = 'exclusive' + $lvl,\r\n\t $opExpr = 'op' + $lvl,\r\n\t $opStr = '\\' + ' + $opExpr + ' + \\'';\r\n\t out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\r\n\t $schemaValueExcl = 'schemaExcl' + $lvl;\r\n\t out += ' var exclusive' + ($lvl) + '; if (typeof ' + ($schemaValueExcl) + ' != \\'boolean\\' && typeof ' + ($schemaValueExcl) + ' != \\'undefined\\') { ';\r\n\t var $errorKeyword = $exclusiveKeyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } else if( ';\r\n\t if ($isData) {\r\n\t out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\r\n\t }\r\n\t out += ' ((exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ')) { var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\';';\r\n\t } else {\r\n\t var $exclusive = $schemaExcl === true,\r\n\t $opStr = $op;\r\n\t if (!$exclusive) $opStr += '=';\r\n\t var $opExpr = '\\'' + $opStr + '\\'';\r\n\t out += ' if ( ';\r\n\t if ($isData) {\r\n\t out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\r\n\t }\r\n\t out += ' ' + ($data) + ' ' + ($notOp);\r\n\t if ($exclusive) {\r\n\t out += '=';\r\n\t }\r\n\t out += ' ' + ($schemaValue) + ') {';\r\n\t }\r\n\t var $errorKeyword = $keyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should be ' + ($opStr) + ' ';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue);\r\n\t } else {\r\n\t out += '' + ($schema) + '\\'';\r\n\t }\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 33 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate__limitItems(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t var $op = $keyword == 'maxItems' ? '>' : '<';\r\n\t out += 'if ( ';\r\n\t if ($isData) {\r\n\t out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\r\n\t }\r\n\t out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\r\n\t var $errorKeyword = $keyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { limit: ' + ($schemaValue) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT have ';\r\n\t if ($keyword == 'maxItems') {\r\n\t out += 'more';\r\n\t } else {\r\n\t out += 'less';\r\n\t }\r\n\t out += ' than ';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue) + ' + \\'';\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' items\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '} ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 34 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate__limitLength(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t var $op = $keyword == 'maxLength' ? '>' : '<';\r\n\t out += 'if ( ';\r\n\t if ($isData) {\r\n\t out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\r\n\t }\r\n\t if (it.opts.unicode === false) {\r\n\t out += ' ' + ($data) + '.length ';\r\n\t } else {\r\n\t out += ' ucs2length(' + ($data) + ') ';\r\n\t }\r\n\t out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\r\n\t var $errorKeyword = $keyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { limit: ' + ($schemaValue) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT be ';\r\n\t if ($keyword == 'maxLength') {\r\n\t out += 'longer';\r\n\t } else {\r\n\t out += 'shorter';\r\n\t }\r\n\t out += ' than ';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue) + ' + \\'';\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' characters\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '} ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 35 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate__limitProperties(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t var $op = $keyword == 'maxProperties' ? '>' : '<';\r\n\t out += 'if ( ';\r\n\t if ($isData) {\r\n\t out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\r\n\t }\r\n\t out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\r\n\t var $errorKeyword = $keyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { limit: ' + ($schemaValue) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT have ';\r\n\t if ($keyword == 'maxProperties') {\r\n\t out += 'more';\r\n\t } else {\r\n\t out += 'less';\r\n\t }\r\n\t out += ' than ';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue) + ' + \\'';\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' properties\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '} ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 36 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_multipleOf(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t out += 'var division' + ($lvl) + ';if (';\r\n\t if ($isData) {\r\n\t out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\r\n\t }\r\n\t out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\r\n\t if (it.opts.multipleOfPrecision) {\r\n\t out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\r\n\t } else {\r\n\t out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\r\n\t }\r\n\t out += ' ) ';\r\n\t if ($isData) {\r\n\t out += ' ) ';\r\n\t }\r\n\t out += ' ) { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { multipleOf: ' + ($schemaValue) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should be multiple of ';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue);\r\n\t } else {\r\n\t out += '' + ($schema) + '\\'';\r\n\t }\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '} ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 37 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_not(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $errs = 'errs__' + $lvl;\r\n\t var $it = it.util.copy(it);\r\n\t $it.level++;\r\n\t if (it.util.schemaHasRules($schema, it.RULES.all)) {\r\n\t $it.schema = $schema;\r\n\t $it.schemaPath = $schemaPath;\r\n\t $it.errSchemaPath = $errSchemaPath;\r\n\t out += ' var ' + ($errs) + ' = errors; ';\r\n\t var $wasComposite = it.compositeRule;\r\n\t it.compositeRule = $it.compositeRule = true;\r\n\t $it.createErrors = false;\r\n\t var $allErrorsOption;\r\n\t if ($it.opts.allErrors) {\r\n\t $allErrorsOption = $it.opts.allErrors;\r\n\t $it.opts.allErrors = false;\r\n\t }\r\n\t out += ' ' + (it.validate($it)) + ' ';\r\n\t $it.createErrors = true;\r\n\t if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\r\n\t it.compositeRule = $it.compositeRule = $wasComposite;\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT be valid\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\r\n\t if (it.opts.allErrors) {\r\n\t out += ' } ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = '; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT be valid\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (false) { ';\r\n\t }\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 38 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_oneOf(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $errs = 'errs__' + $lvl;\r\n\t var $it = it.util.copy(it);\r\n\t var $closingBraces = '';\r\n\t $it.level++;\r\n\t out += 'var ' + ($errs) + ' = errors;var prevValid' + ($lvl) + ' = false;var ' + ($valid) + ' = false; ';\r\n\t var $wasComposite = it.compositeRule;\r\n\t it.compositeRule = $it.compositeRule = true;\r\n\t var arr1 = $schema;\r\n\t if (arr1) {\r\n\t var $sch, $i = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while ($i < l1) {\r\n\t $sch = arr1[$i += 1];\r\n\t if (it.util.schemaHasRules($sch, it.RULES.all)) {\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = $schemaPath + '[' + $i + ']';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $i;\r\n\t out += ' ' + (it.validate($it)) + ' ';\r\n\t } else {\r\n\t out += ' var valid' + ($it.level) + ' = true; ';\r\n\t }\r\n\t if ($i) {\r\n\t out += ' if (valid' + ($it.level) + ' && prevValid' + ($lvl) + ') ' + ($valid) + ' = false; else { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t out += ' if (valid' + ($it.level) + ') ' + ($valid) + ' = prevValid' + ($lvl) + ' = true;';\r\n\t }\r\n\t }\r\n\t it.compositeRule = $it.compositeRule = $wasComposite;\r\n\t out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should match exactly one schema in oneOf\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\r\n\t if (it.opts.allErrors) {\r\n\t out += ' } ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 39 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_pattern(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\r\n\t out += 'if ( ';\r\n\t if ($isData) {\r\n\t out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\r\n\t }\r\n\t out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { pattern: ';\r\n\t if ($isData) {\r\n\t out += '' + ($schemaValue);\r\n\t } else {\r\n\t out += '' + (it.util.toQuotedString($schema));\r\n\t }\r\n\t out += ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should match pattern \"';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue) + ' + \\'';\r\n\t } else {\r\n\t out += '' + (it.util.escapeQuotes($schema));\r\n\t }\r\n\t out += '\"\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + (it.util.toQuotedString($schema));\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '} ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 40 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_properties(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $errs = 'errs__' + $lvl;\r\n\t var $it = it.util.copy(it);\r\n\t var $closingBraces = '';\r\n\t $it.level++;\r\n\t var $dataNxt = $it.dataLevel = it.dataLevel + 1,\r\n\t $nextData = 'data' + $dataNxt;\r\n\t var $schemaKeys = Object.keys($schema || {}),\r\n\t $pProperties = it.schema.patternProperties || {},\r\n\t $pPropertyKeys = Object.keys($pProperties),\r\n\t $aProperties = it.schema.additionalProperties,\r\n\t $someProperties = $schemaKeys.length || $pPropertyKeys.length,\r\n\t $noAdditional = $aProperties === false,\r\n\t $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\r\n\t $removeAdditional = it.opts.removeAdditional,\r\n\t $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional;\r\n\t var $required = it.schema.required;\r\n\t if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required);\r\n\t if (it.opts.v5) {\r\n\t var $pgProperties = it.schema.patternGroups || {},\r\n\t $pgPropertyKeys = Object.keys($pgProperties);\r\n\t }\r\n\t out += 'var ' + ($errs) + ' = errors;var valid' + ($it.level) + ' = true;';\r\n\t if ($checkAdditional) {\r\n\t out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { ';\r\n\t if ($someProperties) {\r\n\t out += ' var isAdditional' + ($lvl) + ' = !(false ';\r\n\t if ($schemaKeys.length) {\r\n\t if ($schemaKeys.length > 5) {\r\n\t out += ' || validate.schema' + ($schemaPath) + '[key' + ($lvl) + '] ';\r\n\t } else {\r\n\t var arr1 = $schemaKeys;\r\n\t if (arr1) {\r\n\t var $propertyKey, i1 = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while (i1 < l1) {\r\n\t $propertyKey = arr1[i1 += 1];\r\n\t out += ' || key' + ($lvl) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t if ($pPropertyKeys.length) {\r\n\t var arr2 = $pPropertyKeys;\r\n\t if (arr2) {\r\n\t var $pProperty, $i = -1,\r\n\t l2 = arr2.length - 1;\r\n\t while ($i < l2) {\r\n\t $pProperty = arr2[$i += 1];\r\n\t out += ' || ' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ') ';\r\n\t }\r\n\t }\r\n\t }\r\n\t if (it.opts.v5 && $pgPropertyKeys && $pgPropertyKeys.length) {\r\n\t var arr3 = $pgPropertyKeys;\r\n\t if (arr3) {\r\n\t var $pgProperty, $i = -1,\r\n\t l3 = arr3.length - 1;\r\n\t while ($i < l3) {\r\n\t $pgProperty = arr3[$i += 1];\r\n\t out += ' || ' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ') ';\r\n\t }\r\n\t }\r\n\t }\r\n\t out += ' ); if (isAdditional' + ($lvl) + ') { ';\r\n\t }\r\n\t if ($removeAdditional == 'all') {\r\n\t out += ' delete ' + ($data) + '[key' + ($lvl) + ']; ';\r\n\t } else {\r\n\t var $currentErrorPath = it.errorPath;\r\n\t var $additionalProperty = '\\' + key' + $lvl + ' + \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers);\r\n\t }\r\n\t if ($noAdditional) {\r\n\t if ($removeAdditional) {\r\n\t out += ' delete ' + ($data) + '[key' + ($lvl) + ']; ';\r\n\t } else {\r\n\t out += ' valid' + ($it.level) + ' = false; ';\r\n\t var $currErrSchemaPath = $errSchemaPath;\r\n\t $errSchemaPath = it.errSchemaPath + '/additionalProperties';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT have additional properties\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t $errSchemaPath = $currErrSchemaPath;\r\n\t if ($breakOnError) {\r\n\t out += ' break; ';\r\n\t }\r\n\t }\r\n\t } else if ($additionalIsSchema) {\r\n\t if ($removeAdditional == 'failing') {\r\n\t out += ' var ' + ($errs) + ' = errors; ';\r\n\t var $wasComposite = it.compositeRule;\r\n\t it.compositeRule = $it.compositeRule = true;\r\n\t $it.schema = $aProperties;\r\n\t $it.schemaPath = it.schemaPath + '.additionalProperties';\r\n\t $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\r\n\t $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers);\r\n\t var $passData = $data + '[key' + $lvl + ']';\r\n\t $it.dataPathArr[$dataNxt] = 'key' + $lvl;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t out += ' if (!valid' + ($it.level) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[key' + ($lvl) + ']; } ';\r\n\t it.compositeRule = $it.compositeRule = $wasComposite;\r\n\t } else {\r\n\t $it.schema = $aProperties;\r\n\t $it.schemaPath = it.schemaPath + '.additionalProperties';\r\n\t $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\r\n\t $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers);\r\n\t var $passData = $data + '[key' + $lvl + ']';\r\n\t $it.dataPathArr[$dataNxt] = 'key' + $lvl;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (!valid' + ($it.level) + ') break; ';\r\n\t }\r\n\t }\r\n\t }\r\n\t it.errorPath = $currentErrorPath;\r\n\t }\r\n\t if ($someProperties) {\r\n\t out += ' } ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t var $useDefaults = it.opts.useDefaults && !it.compositeRule;\r\n\t if ($schemaKeys.length) {\r\n\t var arr4 = $schemaKeys;\r\n\t if (arr4) {\r\n\t var $propertyKey, i4 = -1,\r\n\t l4 = arr4.length - 1;\r\n\t while (i4 < l4) {\r\n\t $propertyKey = arr4[i4 += 1];\r\n\t var $sch = $schema[$propertyKey];\r\n\t if (it.util.schemaHasRules($sch, it.RULES.all)) {\r\n\t var $prop = it.util.getProperty($propertyKey),\r\n\t $passData = $data + $prop,\r\n\t $hasDefault = $useDefaults && $sch.default !== undefined;\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = $schemaPath + $prop;\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\r\n\t $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\r\n\t $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t $code = it.util.varReplace($code, $nextData, $passData);\r\n\t var $useData = $passData;\r\n\t } else {\r\n\t var $useData = $nextData;\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\r\n\t }\r\n\t if ($hasDefault) {\r\n\t out += ' ' + ($code) + ' ';\r\n\t } else {\r\n\t if ($requiredHash && $requiredHash[$propertyKey]) {\r\n\t out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = false; ';\r\n\t var $currentErrorPath = it.errorPath,\r\n\t $currErrSchemaPath = $errSchemaPath,\r\n\t $missingProperty = it.util.escapeQuotes($propertyKey);\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\r\n\t }\r\n\t $errSchemaPath = it.errSchemaPath + '/required';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t out += 'is a required property';\r\n\t } else {\r\n\t out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\r\n\t }\r\n\t out += '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t $errSchemaPath = $currErrSchemaPath;\r\n\t it.errorPath = $currentErrorPath;\r\n\t out += ' } else { ';\r\n\t } else {\r\n\t if ($breakOnError) {\r\n\t out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = true; } else { ';\r\n\t } else {\r\n\t out += ' if (' + ($useData) + ' !== undefined) { ';\r\n\t }\r\n\t }\r\n\t out += ' ' + ($code) + ' } ';\r\n\t }\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t var arr5 = $pPropertyKeys;\r\n\t if (arr5) {\r\n\t var $pProperty, i5 = -1,\r\n\t l5 = arr5.length - 1;\r\n\t while (i5 < l5) {\r\n\t $pProperty = arr5[i5 += 1];\r\n\t var $sch = $pProperties[$pProperty];\r\n\t if (it.util.schemaHasRules($sch, it.RULES.all)) {\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\r\n\t $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\r\n\t out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ')) { ';\r\n\t $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers);\r\n\t var $passData = $data + '[key' + $lvl + ']';\r\n\t $it.dataPathArr[$dataNxt] = 'key' + $lvl;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (!valid' + ($it.level) + ') break; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' else valid' + ($it.level) + ' = true; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t if (it.opts.v5) {\r\n\t var arr6 = $pgPropertyKeys;\r\n\t if (arr6) {\r\n\t var $pgProperty, i6 = -1,\r\n\t l6 = arr6.length - 1;\r\n\t while (i6 < l6) {\r\n\t $pgProperty = arr6[i6 += 1];\r\n\t var $pgSchema = $pgProperties[$pgProperty],\r\n\t $sch = $pgSchema.schema;\r\n\t if (it.util.schemaHasRules($sch, it.RULES.all)) {\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = it.schemaPath + '.patternGroups' + it.util.getProperty($pgProperty) + '.schema';\r\n\t $it.errSchemaPath = it.errSchemaPath + '/patternGroups/' + it.util.escapeFragment($pgProperty) + '/schema';\r\n\t out += ' var pgPropCount' + ($lvl) + ' = 0; for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ')) { pgPropCount' + ($lvl) + '++; ';\r\n\t $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers);\r\n\t var $passData = $data + '[key' + $lvl + ']';\r\n\t $it.dataPathArr[$dataNxt] = 'key' + $lvl;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (!valid' + ($it.level) + ') break; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' else valid' + ($it.level) + ' = true; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t var $pgMin = $pgSchema.minimum,\r\n\t $pgMax = $pgSchema.maximum;\r\n\t if ($pgMin !== undefined || $pgMax !== undefined) {\r\n\t out += ' var ' + ($valid) + ' = true; ';\r\n\t var $currErrSchemaPath = $errSchemaPath;\r\n\t if ($pgMin !== undefined) {\r\n\t var $limit = $pgMin,\r\n\t $reason = 'minimum',\r\n\t $moreOrLess = 'less';\r\n\t out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' >= ' + ($pgMin) + '; ';\r\n\t $errSchemaPath = it.errSchemaPath + '/patternGroups/minimum';\r\n\t out += ' if (!' + ($valid) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'patternGroups') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { reason: \\'' + ($reason) + '\\', limit: ' + ($limit) + ', pattern: \\'' + (it.util.escapeQuotes($pgProperty)) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern \"' + (it.util.escapeQuotes($pgProperty)) + '\"\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($pgMax !== undefined) {\r\n\t out += ' else ';\r\n\t }\r\n\t }\r\n\t if ($pgMax !== undefined) {\r\n\t var $limit = $pgMax,\r\n\t $reason = 'maximum',\r\n\t $moreOrLess = 'more';\r\n\t out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' <= ' + ($pgMax) + '; ';\r\n\t $errSchemaPath = it.errSchemaPath + '/patternGroups/maximum';\r\n\t out += ' if (!' + ($valid) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'patternGroups') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { reason: \\'' + ($reason) + '\\', limit: ' + ($limit) + ', pattern: \\'' + (it.util.escapeQuotes($pgProperty)) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern \"' + (it.util.escapeQuotes($pgProperty)) + '\"\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } ';\r\n\t }\r\n\t $errSchemaPath = $currErrSchemaPath;\r\n\t if ($breakOnError) {\r\n\t out += ' if (' + ($valid) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\r\n\t }\r\n\t out = it.util.cleanUpCode(out);\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 41 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_required(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t if (!$isData) {\r\n\t if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {\r\n\t var $required = [];\r\n\t var arr1 = $schema;\r\n\t if (arr1) {\r\n\t var $property, i1 = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while (i1 < l1) {\r\n\t $property = arr1[i1 += 1];\r\n\t var $propertySch = it.schema.properties[$property];\r\n\t if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) {\r\n\t $required[$required.length] = $property;\r\n\t }\r\n\t }\r\n\t }\r\n\t } else {\r\n\t var $required = $schema;\r\n\t }\r\n\t }\r\n\t if ($isData || $required.length) {\r\n\t var $currentErrorPath = it.errorPath,\r\n\t $loopRequired = $isData || $required.length >= it.opts.loopRequired;\r\n\t if ($breakOnError) {\r\n\t out += ' var missing' + ($lvl) + '; ';\r\n\t if ($loopRequired) {\r\n\t if (!$isData) {\r\n\t out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; ';\r\n\t }\r\n\t var $i = 'i' + $lvl,\r\n\t $propertyPath = 'schema' + $lvl + '[' + $i + ']',\r\n\t $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\r\n\t }\r\n\t out += ' var ' + ($valid) + ' = true; ';\r\n\t if ($isData) {\r\n\t out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\r\n\t }\r\n\t out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] !== undefined; if (!' + ($valid) + ') break; } ';\r\n\t if ($isData) {\r\n\t out += ' } ';\r\n\t }\r\n\t out += ' if (!' + ($valid) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t out += 'is a required property';\r\n\t } else {\r\n\t out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\r\n\t }\r\n\t out += '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } else { ';\r\n\t } else {\r\n\t out += ' if ( ';\r\n\t var arr2 = $required;\r\n\t if (arr2) {\r\n\t var _$property, $i = -1,\r\n\t l2 = arr2.length - 1;\r\n\t while ($i < l2) {\r\n\t _$property = arr2[$i += 1];\r\n\t if ($i) {\r\n\t out += ' || ';\r\n\t }\r\n\t var $prop = it.util.getProperty(_$property);\r\n\t out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) ';\r\n\t }\r\n\t }\r\n\t out += ') { ';\r\n\t var $propertyPath = 'missing' + $lvl,\r\n\t $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\r\n\t }\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t out += 'is a required property';\r\n\t } else {\r\n\t out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\r\n\t }\r\n\t out += '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } else { ';\r\n\t }\r\n\t } else {\r\n\t if ($loopRequired) {\r\n\t if (!$isData) {\r\n\t out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; ';\r\n\t }\r\n\t var $i = 'i' + $lvl,\r\n\t $propertyPath = 'schema' + $lvl + '[' + $i + ']',\r\n\t $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\r\n\t }\r\n\t if ($isData) {\r\n\t out += ' if (schema' + ($lvl) + ' && !Array.isArray(schema' + ($lvl) + ')) { var err = '; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t out += 'is a required property';\r\n\t } else {\r\n\t out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\r\n\t }\r\n\t out += '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema' + ($lvl) + ' !== undefined) { ';\r\n\t }\r\n\t out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { if (' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] === undefined) { var err = '; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t out += 'is a required property';\r\n\t } else {\r\n\t out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\r\n\t }\r\n\t out += '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\r\n\t if ($isData) {\r\n\t out += ' } ';\r\n\t }\r\n\t } else {\r\n\t var arr3 = $required;\r\n\t if (arr3) {\r\n\t var $property, $i = -1,\r\n\t l3 = arr3.length - 1;\r\n\t while ($i < l3) {\r\n\t $property = arr3[$i += 1];\r\n\t var $prop = it.util.getProperty($property),\r\n\t $missingProperty = it.util.escapeQuotes($property);\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.util.getPath($currentErrorPath, $property, it.opts.jsonPointers);\r\n\t }\r\n\t out += ' if (' + ($data) + ($prop) + ' === undefined) { var err = '; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t out += 'is a required property';\r\n\t } else {\r\n\t out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\r\n\t }\r\n\t out += '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t it.errorPath = $currentErrorPath;\r\n\t } else if ($breakOnError) {\r\n\t out += ' if (true) {';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 42 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_uniqueItems(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t if (($schema || $isData) && it.opts.uniqueItems !== false) {\r\n\t if ($isData) {\r\n\t out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\r\n\t }\r\n\t out += ' var ' + ($valid) + ' = true; if (' + ($data) + '.length > 1) { var i = ' + ($data) + '.length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } } ';\r\n\t if ($isData) {\r\n\t out += ' } ';\r\n\t }\r\n\t out += ' if (!' + ($valid) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { i: i, j: j } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t } else {\r\n\t if ($breakOnError) {\r\n\t out += ' if (true) { ';\r\n\t }\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 43 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar META_SCHEMA_ID = 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json';\r\n\r\n\tmodule.exports = {\r\n\t enable: enableV5,\r\n\t META_SCHEMA_ID: META_SCHEMA_ID\r\n\t};\r\n\r\n\r\n\tfunction enableV5(ajv) {\r\n\t var inlineFunctions = {\r\n\t 'switch': __webpack_require__(44),\r\n\t 'constant': __webpack_require__(45),\r\n\t '_formatLimit': __webpack_require__(46),\r\n\t 'patternRequired': __webpack_require__(47)\r\n\t };\r\n\r\n\t if (ajv._opts.meta !== false) {\r\n\t var metaSchema = __webpack_require__(48);\r\n\t ajv.addMetaSchema(metaSchema, META_SCHEMA_ID);\r\n\t }\r\n\t _addKeyword('constant');\r\n\t ajv.addKeyword('contains', { type: 'array', macro: containsMacro });\r\n\r\n\t _addKeyword('formatMaximum', 'string', inlineFunctions._formatLimit);\r\n\t _addKeyword('formatMinimum', 'string', inlineFunctions._formatLimit);\r\n\t ajv.addKeyword('exclusiveFormatMaximum');\r\n\t ajv.addKeyword('exclusiveFormatMinimum');\r\n\r\n\t ajv.addKeyword('patternGroups'); // implemented in properties.jst\r\n\t _addKeyword('patternRequired', 'object');\r\n\t _addKeyword('switch');\r\n\r\n\r\n\t function _addKeyword(keyword, types, inlineFunc) {\r\n\t var definition = {\r\n\t inline: inlineFunc || inlineFunctions[keyword],\r\n\t statements: true,\r\n\t errors: 'full'\r\n\t };\r\n\t if (types) definition.type = types;\r\n\t ajv.addKeyword(keyword, definition);\r\n\t }\r\n\t}\r\n\r\n\r\n\tfunction containsMacro(schema) {\r\n\t return {\r\n\t not: { items: { not: schema } }\r\n\t };\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 44 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_switch(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $errs = 'errs__' + $lvl;\r\n\t var $it = it.util.copy(it);\r\n\t var $closingBraces = '';\r\n\t $it.level++;\r\n\t var $ifPassed = 'ifPassed' + it.level,\r\n\t $shouldContinue;\r\n\t out += 'var ' + ($ifPassed) + ';';\r\n\t var arr1 = $schema;\r\n\t if (arr1) {\r\n\t var $sch, $caseIndex = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while ($caseIndex < l1) {\r\n\t $sch = arr1[$caseIndex += 1];\r\n\t if ($caseIndex && !$shouldContinue) {\r\n\t out += ' if (!' + ($ifPassed) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t if ($sch.if && it.util.schemaHasRules($sch.if, it.RULES.all)) {\r\n\t out += ' var ' + ($errs) + ' = errors; ';\r\n\t var $wasComposite = it.compositeRule;\r\n\t it.compositeRule = $it.compositeRule = true;\r\n\t $it.createErrors = false;\r\n\t $it.schema = $sch.if;\r\n\t $it.schemaPath = $schemaPath + '[' + $caseIndex + '].if';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/if';\r\n\t out += ' ' + (it.validate($it)) + ' ';\r\n\t $it.createErrors = true;\r\n\t it.compositeRule = $it.compositeRule = $wasComposite;\r\n\t out += ' ' + ($ifPassed) + ' = valid' + ($it.level) + '; if (' + ($ifPassed) + ') { ';\r\n\t if (typeof $sch.then == 'boolean') {\r\n\t if ($sch.then === false) {\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'switch') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { caseIndex: ' + ($caseIndex) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should pass \"switch\" keyword validation\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t }\r\n\t out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; ';\r\n\t } else {\r\n\t $it.schema = $sch.then;\r\n\t $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then';\r\n\t out += ' ' + (it.validate($it)) + ' ';\r\n\t }\r\n\t out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } } ';\r\n\t } else {\r\n\t out += ' ' + ($ifPassed) + ' = true; ';\r\n\t if (typeof $sch.then == 'boolean') {\r\n\t if ($sch.then === false) {\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'switch') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { caseIndex: ' + ($caseIndex) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should pass \"switch\" keyword validation\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t }\r\n\t out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; ';\r\n\t } else {\r\n\t $it.schema = $sch.then;\r\n\t $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then';\r\n\t out += ' ' + (it.validate($it)) + ' ';\r\n\t }\r\n\t }\r\n\t $shouldContinue = $sch.continue\r\n\t }\r\n\t }\r\n\t out += '' + ($closingBraces) + 'var ' + ($valid) + ' = valid' + ($it.level) + '; ';\r\n\t out = it.util.cleanUpCode(out);\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 45 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_constant(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t if (!$isData) {\r\n\t out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\r\n\t }\r\n\t out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'constant') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should be equal to constant\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' }';\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 46 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate__formatLimit(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t out += 'var ' + ($valid) + ' = undefined;';\r\n\t if (it.opts.format === false) {\r\n\t out += ' ' + ($valid) + ' = true; ';\r\n\t return out;\r\n\t }\r\n\t var $schemaFormat = it.schema.format,\r\n\t $isDataFormat = it.opts.v5 && $schemaFormat.$data,\r\n\t $closingBraces = '';\r\n\t if ($isDataFormat) {\r\n\t var $schemaValueFormat = it.util.getData($schemaFormat.$data, $dataLvl, it.dataPathArr),\r\n\t $format = 'format' + $lvl,\r\n\t $compare = 'compare' + $lvl;\r\n\t out += ' var ' + ($format) + ' = formats[' + ($schemaValueFormat) + '] , ' + ($compare) + ' = ' + ($format) + ' && ' + ($format) + '.compare;';\r\n\t } else {\r\n\t var $format = it.formats[$schemaFormat];\r\n\t if (!($format && $format.compare)) {\r\n\t out += ' ' + ($valid) + ' = true; ';\r\n\t return out;\r\n\t }\r\n\t var $compare = 'formats' + it.util.getProperty($schemaFormat) + '.compare';\r\n\t }\r\n\t var $isMax = $keyword == 'formatMaximum',\r\n\t $exclusiveKeyword = 'exclusiveFormat' + ($isMax ? 'Maximum' : 'Minimum'),\r\n\t $schemaExcl = it.schema[$exclusiveKeyword],\r\n\t $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data,\r\n\t $op = $isMax ? '<' : '>',\r\n\t $result = 'result' + $lvl;\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t if ($isDataExcl) {\r\n\t var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\r\n\t $exclusive = 'exclusive' + $lvl,\r\n\t $opExpr = 'op' + $lvl,\r\n\t $opStr = '\\' + ' + $opExpr + ' + \\'';\r\n\t out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\r\n\t $schemaValueExcl = 'schemaExcl' + $lvl;\r\n\t out += ' if (typeof ' + ($schemaValueExcl) + ' != \\'boolean\\' && ' + ($schemaValueExcl) + ' !== undefined) { ' + ($valid) + ' = false; ';\r\n\t var $errorKeyword = $exclusiveKeyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveFormatLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t $closingBraces += '}';\r\n\t out += ' else { ';\r\n\t }\r\n\t if ($isData) {\r\n\t out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'string\\') ' + ($valid) + ' = false; else { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t if ($isDataFormat) {\r\n\t out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', ';\r\n\t if ($isData) {\r\n\t out += '' + ($schemaValue);\r\n\t } else {\r\n\t out += '' + (it.util.toQuotedString($schema));\r\n\t }\r\n\t out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; var exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true; if (' + ($valid) + ' === undefined) { ' + ($valid) + ' = exclusive' + ($lvl) + ' ? ' + ($result) + ' ' + ($op) + ' 0 : ' + ($result) + ' ' + ($op) + '= 0; } if (!' + ($valid) + ') var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\';';\r\n\t } else {\r\n\t var $exclusive = $schemaExcl === true,\r\n\t $opStr = $op;\r\n\t if (!$exclusive) $opStr += '=';\r\n\t var $opExpr = '\\'' + $opStr + '\\'';\r\n\t if ($isData) {\r\n\t out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'string\\') ' + ($valid) + ' = false; else { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t if ($isDataFormat) {\r\n\t out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', ';\r\n\t if ($isData) {\r\n\t out += '' + ($schemaValue);\r\n\t } else {\r\n\t out += '' + (it.util.toQuotedString($schema));\r\n\t }\r\n\t out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; if (' + ($valid) + ' === undefined) ' + ($valid) + ' = ' + ($result) + ' ' + ($op);\r\n\t if (!$exclusive) {\r\n\t out += '=';\r\n\t }\r\n\t out += ' 0;';\r\n\t }\r\n\t out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { ';\r\n\t var $errorKeyword = $keyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_formatLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { limit: ';\r\n\t if ($isData) {\r\n\t out += '' + ($schemaValue);\r\n\t } else {\r\n\t out += '' + (it.util.toQuotedString($schema));\r\n\t }\r\n\t out += ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should be ' + ($opStr) + ' \"';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue) + ' + \\'';\r\n\t } else {\r\n\t out += '' + (it.util.escapeQuotes($schema));\r\n\t }\r\n\t out += '\"\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + (it.util.toQuotedString($schema));\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '}';\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 47 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_patternRequired(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $key = 'key' + $lvl,\r\n\t $matched = 'patternMatched' + $lvl,\r\n\t $closingBraces = '';\r\n\t out += 'var ' + ($valid) + ' = true;';\r\n\t var arr1 = $schema;\r\n\t if (arr1) {\r\n\t var $pProperty, i1 = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while (i1 < l1) {\r\n\t $pProperty = arr1[i1 += 1];\r\n\t out += ' var ' + ($matched) + ' = false; for (var ' + ($key) + ' in ' + ($data) + ') { ' + ($matched) + ' = ' + (it.usePattern($pProperty)) + '.test(' + ($key) + '); if (' + ($matched) + ') break; } ';\r\n\t var $missingPattern = it.util.escapeQuotes($pProperty);\r\n\t out += ' if (!' + ($matched) + ') { ' + ($valid) + ' = false; var err = '; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'patternRequired') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingPattern: \\'' + ($missingPattern) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should have property matching pattern \\\\\\'' + ($missingPattern) + '\\\\\\'\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\r\n\t if ($breakOnError) {\r\n\t $closingBraces += '}';\r\n\t out += ' else { ';\r\n\t }\r\n\t }\r\n\t }\r\n\t out += '' + ($closingBraces);\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 48 */\r\n/***/ function(module, exports) {\r\n\r\n\tmodule.exports = {\r\n\t\t\"id\": \"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#\",\r\n\t\t\"$schema\": \"http://json-schema.org/draft-04/schema#\",\r\n\t\t\"description\": \"Core schema meta-schema (v5 proposals)\",\r\n\t\t\"definitions\": {\r\n\t\t\t\"schemaArray\": {\r\n\t\t\t\t\"type\": \"array\",\r\n\t\t\t\t\"minItems\": 1,\r\n\t\t\t\t\"items\": {\r\n\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"positiveInteger\": {\r\n\t\t\t\t\"type\": \"integer\",\r\n\t\t\t\t\"minimum\": 0\r\n\t\t\t},\r\n\t\t\t\"positiveIntegerDefault0\": {\r\n\t\t\t\t\"allOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveInteger\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"default\": 0\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"simpleTypes\": {\r\n\t\t\t\t\"enum\": [\r\n\t\t\t\t\t\"array\",\r\n\t\t\t\t\t\"boolean\",\r\n\t\t\t\t\t\"integer\",\r\n\t\t\t\t\t\"null\",\r\n\t\t\t\t\t\"number\",\r\n\t\t\t\t\t\"object\",\r\n\t\t\t\t\t\"string\"\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"stringArray\": {\r\n\t\t\t\t\"type\": \"array\",\r\n\t\t\t\t\"items\": {\r\n\t\t\t\t\t\"type\": \"string\"\r\n\t\t\t\t},\r\n\t\t\t\t\"minItems\": 1,\r\n\t\t\t\t\"uniqueItems\": true\r\n\t\t\t},\r\n\t\t\t\"$data\": {\r\n\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\"required\": [\r\n\t\t\t\t\t\"$data\"\r\n\t\t\t\t],\r\n\t\t\t\t\"properties\": {\r\n\t\t\t\t\t\"$data\": {\r\n\t\t\t\t\t\t\"type\": \"string\",\r\n\t\t\t\t\t\t\"format\": \"relative-json-pointer\"\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\"additionalProperties\": false\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"type\": \"object\",\r\n\t\t\"properties\": {\r\n\t\t\t\"id\": {\r\n\t\t\t\t\"type\": \"string\",\r\n\t\t\t\t\"format\": \"uri\"\r\n\t\t\t},\r\n\t\t\t\"$schema\": {\r\n\t\t\t\t\"type\": \"string\",\r\n\t\t\t\t\"format\": \"uri\"\r\n\t\t\t},\r\n\t\t\t\"title\": {\r\n\t\t\t\t\"type\": \"string\"\r\n\t\t\t},\r\n\t\t\t\"description\": {\r\n\t\t\t\t\"type\": \"string\"\r\n\t\t\t},\r\n\t\t\t\"default\": {},\r\n\t\t\t\"multipleOf\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"number\",\r\n\t\t\t\t\t\t\"minimum\": 0,\r\n\t\t\t\t\t\t\"exclusiveMinimum\": true\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"maximum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"number\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"exclusiveMaximum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\",\r\n\t\t\t\t\t\t\"default\": false\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"minimum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"number\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"exclusiveMinimum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\",\r\n\t\t\t\t\t\t\"default\": false\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"maxLength\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveInteger\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"minLength\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveIntegerDefault0\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"pattern\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"string\",\r\n\t\t\t\t\t\t\"format\": \"regex\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"additionalItems\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"items\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/schemaArray\"\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"maxItems\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveInteger\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"minItems\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveIntegerDefault0\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"uniqueItems\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\",\r\n\t\t\t\t\t\t\"default\": false\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"maxProperties\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveInteger\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"minProperties\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveIntegerDefault0\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"required\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/stringArray\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"additionalProperties\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"definitions\": {\r\n\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\"additionalProperties\": {\r\n\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t},\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"properties\": {\r\n\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\"additionalProperties\": {\r\n\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t},\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"patternProperties\": {\r\n\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\"additionalProperties\": {\r\n\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t},\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"dependencies\": {\r\n\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\"additionalProperties\": {\r\n\t\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"$ref\": \"#/definitions/stringArray\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"enum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"array\",\r\n\t\t\t\t\t\t\"minItems\": 1,\r\n\t\t\t\t\t\t\"uniqueItems\": true\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"type\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/simpleTypes\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"array\",\r\n\t\t\t\t\t\t\"items\": {\r\n\t\t\t\t\t\t\t\"$ref\": \"#/definitions/simpleTypes\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"minItems\": 1,\r\n\t\t\t\t\t\t\"uniqueItems\": true\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"allOf\": {\r\n\t\t\t\t\"$ref\": \"#/definitions/schemaArray\"\r\n\t\t\t},\r\n\t\t\t\"anyOf\": {\r\n\t\t\t\t\"$ref\": \"#/definitions/schemaArray\"\r\n\t\t\t},\r\n\t\t\t\"oneOf\": {\r\n\t\t\t\t\"$ref\": \"#/definitions/schemaArray\"\r\n\t\t\t},\r\n\t\t\t\"not\": {\r\n\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t},\r\n\t\t\t\"format\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"string\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"formatMaximum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"string\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"formatMinimum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"string\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"exclusiveFormatMaximum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\",\r\n\t\t\t\t\t\t\"default\": false\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"exclusiveFormatMinimum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\",\r\n\t\t\t\t\t\t\"default\": false\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"constant\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"contains\": {\r\n\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t},\r\n\t\t\t\"patternGroups\": {\r\n\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\"additionalProperties\": {\r\n\t\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\t\"required\": [\r\n\t\t\t\t\t\t\"schema\"\r\n\t\t\t\t\t],\r\n\t\t\t\t\t\"properties\": {\r\n\t\t\t\t\t\t\"maximum\": {\r\n\t\t\t\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveInteger\"\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"minimum\": {\r\n\t\t\t\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveIntegerDefault0\"\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"schema\": {\r\n\t\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"additionalProperties\": false\r\n\t\t\t\t},\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"switch\": {\r\n\t\t\t\t\"type\": \"array\",\r\n\t\t\t\t\"items\": {\r\n\t\t\t\t\t\"required\": [\r\n\t\t\t\t\t\t\"then\"\r\n\t\t\t\t\t],\r\n\t\t\t\t\t\"properties\": {\r\n\t\t\t\t\t\t\"if\": {\r\n\t\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"then\": {\r\n\t\t\t\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\"type\": \"boolean\"\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"continue\": {\r\n\t\t\t\t\t\t\t\"type\": \"boolean\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"additionalProperties\": false,\r\n\t\t\t\t\t\"dependencies\": {\r\n\t\t\t\t\t\t\"continue\": [\r\n\t\t\t\t\t\t\t\"if\"\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"dependencies\": {\r\n\t\t\t\"exclusiveMaximum\": [\r\n\t\t\t\t\"maximum\"\r\n\t\t\t],\r\n\t\t\t\"exclusiveMinimum\": [\r\n\t\t\t\t\"minimum\"\r\n\t\t\t],\r\n\t\t\t\"formatMaximum\": [\r\n\t\t\t\t\"format\"\r\n\t\t\t],\r\n\t\t\t\"formatMinimum\": [\r\n\t\t\t\t\"format\"\r\n\t\t\t],\r\n\t\t\t\"exclusiveFormatMaximum\": [\r\n\t\t\t\t\"formatMaximum\"\r\n\t\t\t],\r\n\t\t\t\"exclusiveFormatMinimum\": [\r\n\t\t\t\t\"formatMinimum\"\r\n\t\t\t]\r\n\t\t},\r\n\t\t\"default\": {}\r\n\t};\r\n\r\n/***/ },\r\n/* 49 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\r\n\tvar IDENTIFIER = /^[a-z_$][a-z0-9_$]*$/i;\r\n\r\n\t/**\r\n\t * Define custom keyword\r\n\t * @this Ajv\r\n\t * @param {String} keyword custom keyword, should be a valid identifier, should be different from all standard, custom and macro keywords.\r\n\t * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.\r\n\t */\r\n\tmodule.exports = function addKeyword(keyword, definition) {\r\n\t /* eslint no-shadow: 0 */\r\n\t var self = this;\r\n\t if (this.RULES.keywords[keyword])\r\n\t throw new Error('Keyword ' + keyword + ' is already defined');\r\n\r\n\t if (!IDENTIFIER.test(keyword))\r\n\t throw new Error('Keyword ' + keyword + ' is not a valid identifier');\r\n\r\n\t if (definition) {\r\n\t var dataType = definition.type;\r\n\t if (Array.isArray(dataType)) {\r\n\t var i, len = dataType.length;\r\n\t for (i=0; i 0) {\r\n\t this.autoScrollStep = ((top + margin) - mouseY) / 3;\r\n\t }\r\n\t else if (mouseY > bottom - margin &&\r\n\t height + content.scrollTop < content.scrollHeight) {\r\n\t this.autoScrollStep = ((bottom - margin) - mouseY) / 3;\r\n\t }\r\n\t else {\r\n\t this.autoScrollStep = undefined;\r\n\t }\r\n\r\n\t if (this.autoScrollStep) {\r\n\t if (!this.autoScrollTimer) {\r\n\t this.autoScrollTimer = setInterval(function () {\r\n\t if (me.autoScrollStep) {\r\n\t content.scrollTop -= me.autoScrollStep;\r\n\t }\r\n\t else {\r\n\t me.stopAutoScroll();\r\n\t }\r\n\t }, interval);\r\n\t }\r\n\t }\r\n\t else {\r\n\t this.stopAutoScroll();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Stop auto scrolling. Only applicable when scrolling\r\n\t */\r\n\ttreemode.stopAutoScroll = function () {\r\n\t if (this.autoScrollTimer) {\r\n\t clearTimeout(this.autoScrollTimer);\r\n\t delete this.autoScrollTimer;\r\n\t }\r\n\t if (this.autoScrollStep) {\r\n\t delete this.autoScrollStep;\r\n\t }\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Set the focus to an element in the editor, set text selection, and\r\n\t * set scroll position.\r\n\t * @param {Object} selection An object containing fields:\r\n\t * {Element | undefined} dom The dom element\r\n\t * which has focus\r\n\t * {Range | TextRange} range A text selection\r\n\t * {Node[]} nodes Nodes in case of multi selection\r\n\t * {Number} scrollTop Scroll position\r\n\t */\r\n\ttreemode.setSelection = function (selection) {\r\n\t if (!selection) {\r\n\t return;\r\n\t }\r\n\r\n\t if ('scrollTop' in selection && this.content) {\r\n\t // TODO: animated scroll\r\n\t this.content.scrollTop = selection.scrollTop;\r\n\t }\r\n\t if (selection.nodes) {\r\n\t // multi-select\r\n\t this.select(selection.nodes);\r\n\t }\r\n\t if (selection.range) {\r\n\t util.setSelectionOffset(selection.range);\r\n\t }\r\n\t if (selection.dom) {\r\n\t selection.dom.focus();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the current focus\r\n\t * @return {Object} selection An object containing fields:\r\n\t * {Element | undefined} dom The dom element\r\n\t * which has focus\r\n\t * {Range | TextRange} range A text selection\r\n\t * {Node[]} nodes Nodes in case of multi selection\r\n\t * {Number} scrollTop Scroll position\r\n\t */\r\n\ttreemode.getSelection = function () {\r\n\t var range = util.getSelectionOffset();\r\n\t if (range && range.container.nodeName !== 'DIV') { // filter on (editable) divs)\r\n\t range = null;\r\n\t }\r\n\r\n\t return {\r\n\t dom: this.focusTarget,\r\n\t range: range,\r\n\t nodes: this.multiselection.nodes.slice(0),\r\n\t scrollTop: this.content ? this.content.scrollTop : 0\r\n\t };\r\n\t};\r\n\r\n\t/**\r\n\t * Adjust the scroll position such that given top position is shown at 1/4\r\n\t * of the window height.\r\n\t * @param {Number} top\r\n\t * @param {function(boolean)} [callback] Callback, executed when animation is\r\n\t * finished. The callback returns true\r\n\t * when animation is finished, or false\r\n\t * when not.\r\n\t */\r\n\ttreemode.scrollTo = function (top, callback) {\r\n\t var content = this.content;\r\n\t if (content) {\r\n\t var editor = this;\r\n\t // cancel any running animation\r\n\t if (editor.animateTimeout) {\r\n\t clearTimeout(editor.animateTimeout);\r\n\t delete editor.animateTimeout;\r\n\t }\r\n\t if (editor.animateCallback) {\r\n\t editor.animateCallback(false);\r\n\t delete editor.animateCallback;\r\n\t }\r\n\r\n\t // calculate final scroll position\r\n\t var height = content.clientHeight;\r\n\t var bottom = content.scrollHeight - height;\r\n\t var finalScrollTop = Math.min(Math.max(top - height / 4, 0), bottom);\r\n\r\n\t // animate towards the new scroll position\r\n\t var animate = function () {\r\n\t var scrollTop = content.scrollTop;\r\n\t var diff = (finalScrollTop - scrollTop);\r\n\t if (Math.abs(diff) > 3) {\r\n\t content.scrollTop += diff / 3;\r\n\t editor.animateCallback = callback;\r\n\t editor.animateTimeout = setTimeout(animate, 50);\r\n\t }\r\n\t else {\r\n\t // finished\r\n\t if (callback) {\r\n\t callback(true);\r\n\t }\r\n\t content.scrollTop = finalScrollTop;\r\n\t delete editor.animateTimeout;\r\n\t delete editor.animateCallback;\r\n\t }\r\n\t };\r\n\t animate();\r\n\t }\r\n\t else {\r\n\t if (callback) {\r\n\t callback(false);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Create main frame\r\n\t * @private\r\n\t */\r\n\ttreemode._createFrame = function () {\r\n\t // create the frame\r\n\t this.frame = document.createElement('div');\r\n\t this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode;\r\n\t this.container.appendChild(this.frame);\r\n\r\n\t // create one global event listener to handle all events from all nodes\r\n\t var editor = this;\r\n\t function onEvent(event) {\r\n\t // when switching to mode \"code\" or \"text\" via the menu, some events\r\n\t // are still fired whilst the _onEvent methods is already removed.\r\n\t if (editor._onEvent) {\r\n\t editor._onEvent(event);\r\n\t }\r\n\t }\r\n\t this.frame.onclick = function (event) {\r\n\t var target = event.target;// || event.srcElement;\r\n\r\n\t onEvent(event);\r\n\r\n\t // prevent default submit action of buttons when editor is located\r\n\t // inside a form\r\n\t if (target.nodeName == 'BUTTON') {\r\n\t event.preventDefault();\r\n\t }\r\n\t };\r\n\t this.frame.oninput = onEvent;\r\n\t this.frame.onchange = onEvent;\r\n\t this.frame.onkeydown = onEvent;\r\n\t this.frame.onkeyup = onEvent;\r\n\t this.frame.oncut = onEvent;\r\n\t this.frame.onpaste = onEvent;\r\n\t this.frame.onmousedown = onEvent;\r\n\t this.frame.onmouseup = onEvent;\r\n\t this.frame.onmouseover = onEvent;\r\n\t this.frame.onmouseout = onEvent;\r\n\t // Note: focus and blur events do not propagate, therefore they defined\r\n\t // using an eventListener with useCapture=true\r\n\t // see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\r\n\t util.addEventListener(this.frame, 'focus', onEvent, true);\r\n\t util.addEventListener(this.frame, 'blur', onEvent, true);\r\n\t this.frame.onfocusin = onEvent; // for IE\r\n\t this.frame.onfocusout = onEvent; // for IE\r\n\r\n\t // create menu\r\n\t this.menu = document.createElement('div');\r\n\t this.menu.className = 'jsoneditor-menu';\r\n\t this.frame.appendChild(this.menu);\r\n\r\n\t // create expand all button\r\n\t var expandAll = document.createElement('button');\r\n\t expandAll.type = 'button';\r\n\t expandAll.className = 'jsoneditor-expand-all';\r\n\t expandAll.title = 'Expand all fields';\r\n\t expandAll.onclick = function () {\r\n\t editor.expandAll();\r\n\t };\r\n\t this.menu.appendChild(expandAll);\r\n\r\n\t // create expand all button\r\n\t var collapseAll = document.createElement('button');\r\n\t collapseAll.type = 'button';\r\n\t collapseAll.title = 'Collapse all fields';\r\n\t collapseAll.className = 'jsoneditor-collapse-all';\r\n\t collapseAll.onclick = function () {\r\n\t editor.collapseAll();\r\n\t };\r\n\t this.menu.appendChild(collapseAll);\r\n\r\n\t // create undo/redo buttons\r\n\t if (this.history) {\r\n\t // create undo button\r\n\t var undo = document.createElement('button');\r\n\t undo.type = 'button';\r\n\t undo.className = 'jsoneditor-undo jsoneditor-separator';\r\n\t undo.title = 'Undo last action (Ctrl+Z)';\r\n\t undo.onclick = function () {\r\n\t editor._onUndo();\r\n\t };\r\n\t this.menu.appendChild(undo);\r\n\t this.dom.undo = undo;\r\n\r\n\t // create redo button\r\n\t var redo = document.createElement('button');\r\n\t redo.type = 'button';\r\n\t redo.className = 'jsoneditor-redo';\r\n\t redo.title = 'Redo (Ctrl+Shift+Z)';\r\n\t redo.onclick = function () {\r\n\t editor._onRedo();\r\n\t };\r\n\t this.menu.appendChild(redo);\r\n\t this.dom.redo = redo;\r\n\r\n\t // register handler for onchange of history\r\n\t this.history.onChange = function () {\r\n\t undo.disabled = !editor.history.canUndo();\r\n\t redo.disabled = !editor.history.canRedo();\r\n\t };\r\n\t this.history.onChange();\r\n\t }\r\n\r\n\t // create mode box\r\n\t if (this.options && this.options.modes && this.options.modes.length) {\r\n\t var me = this;\r\n\t this.modeSwitcher = new ModeSwitcher(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) {\r\n\t me.modeSwitcher.destroy();\r\n\r\n\t // switch mode and restore focus\r\n\t me.setMode(mode);\r\n\t me.modeSwitcher.focus();\r\n\t });\r\n\t }\r\n\r\n\t // create search box\r\n\t if (this.options.search) {\r\n\t this.searchBox = new SearchBox(this, this.menu);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Perform an undo action\r\n\t * @private\r\n\t */\r\n\ttreemode._onUndo = function () {\r\n\t if (this.history) {\r\n\t // undo last action\r\n\t this.history.undo();\r\n\r\n\t // fire change event\r\n\t this._onChange();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Perform a redo action\r\n\t * @private\r\n\t */\r\n\ttreemode._onRedo = function () {\r\n\t if (this.history) {\r\n\t // redo last action\r\n\t this.history.redo();\r\n\r\n\t // fire change event\r\n\t this._onChange();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Event handler\r\n\t * @param event\r\n\t * @private\r\n\t */\r\n\ttreemode._onEvent = function (event) {\r\n\t if (event.type == 'keydown') {\r\n\t this._onKeyDown(event);\r\n\t }\r\n\r\n\t if (event.type == 'focus') {\r\n\t this.focusTarget = event.target;\r\n\t }\r\n\r\n\t if (event.type == 'mousedown') {\r\n\t this._startDragDistance(event);\r\n\t }\r\n\t if (event.type == 'mousemove' || event.type == 'mouseup' || event.type == 'click') {\r\n\t this._updateDragDistance(event);\r\n\t }\r\n\r\n\t var node = Node.getNodeFromTarget(event.target);\r\n\r\n\t if (node && node.selected) {\r\n\t if (event.type == 'click') {\r\n\t if (event.target == node.dom.menu) {\r\n\t this.showContextMenu(event.target);\r\n\r\n\t // stop propagation (else we will open the context menu of a single node)\r\n\t return;\r\n\t }\r\n\r\n\t // deselect a multi selection\r\n\t if (!event.hasMoved) {\r\n\t this.deselect();\r\n\t }\r\n\t }\r\n\r\n\t if (event.type == 'mousedown') {\r\n\t // drag multiple nodes\r\n\t Node.onDragStart(this.multiselection.nodes, event);\r\n\t }\r\n\t }\r\n\t else {\r\n\t if (event.type == 'mousedown') {\r\n\t this.deselect();\r\n\r\n\t if (node && event.target == node.dom.drag) {\r\n\t // drag a singe node\r\n\t Node.onDragStart(node, event);\r\n\t }\r\n\t else if (!node || (event.target != node.dom.field && event.target != node.dom.value && event.target != node.dom.select)) {\r\n\t // select multiple nodes\r\n\t this._onMultiSelectStart(event);\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t if (node) {\r\n\t node.onEvent(event);\r\n\t }\r\n\t};\r\n\r\n\ttreemode._startDragDistance = function (event) {\r\n\t this.dragDistanceEvent = {\r\n\t initialTarget: event.target,\r\n\t initialPageX: event.pageX,\r\n\t initialPageY: event.pageY,\r\n\t dragDistance: 0,\r\n\t hasMoved: false\r\n\t };\r\n\t};\r\n\r\n\ttreemode._updateDragDistance = function (event) {\r\n\t if (!this.dragDistanceEvent) {\r\n\t this._startDragDistance(event);\r\n\t }\r\n\r\n\t var diffX = event.pageX - this.dragDistanceEvent.initialPageX;\r\n\t var diffY = event.pageY - this.dragDistanceEvent.initialPageY;\r\n\r\n\t this.dragDistanceEvent.dragDistance = Math.sqrt(diffX * diffX + diffY * diffY);\r\n\t this.dragDistanceEvent.hasMoved =\r\n\t this.dragDistanceEvent.hasMoved || this.dragDistanceEvent.dragDistance > 10;\r\n\r\n\t event.dragDistance = this.dragDistanceEvent.dragDistance;\r\n\t event.hasMoved = this.dragDistanceEvent.hasMoved;\r\n\r\n\t return event.dragDistance;\r\n\t};\r\n\r\n\t/**\r\n\t * Start multi selection of nodes by dragging the mouse\r\n\t * @param event\r\n\t * @private\r\n\t */\r\n\ttreemode._onMultiSelectStart = function (event) {\r\n\t var node = Node.getNodeFromTarget(event.target);\r\n\r\n\t if (this.options.mode !== 'tree' || this.options.onEditable !== undefined) {\r\n\t // dragging not allowed in modes 'view' and 'form'\r\n\t // TODO: allow multiselection of items when option onEditable is specified\r\n\t return;\r\n\t }\r\n\r\n\t this.multiselection = {\r\n\t start: node || null,\r\n\t end: null,\r\n\t nodes: []\r\n\t };\r\n\r\n\t this._startDragDistance(event);\r\n\r\n\t var editor = this;\r\n\t if (!this.mousemove) {\r\n\t this.mousemove = util.addEventListener(window, 'mousemove', function (event) {\r\n\t editor._onMultiSelect(event);\r\n\t });\r\n\t }\r\n\t if (!this.mouseup) {\r\n\t this.mouseup = util.addEventListener(window, 'mouseup', function (event ) {\r\n\t editor._onMultiSelectEnd(event);\r\n\t });\r\n\t }\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Multiselect nodes by dragging\r\n\t * @param event\r\n\t * @private\r\n\t */\r\n\ttreemode._onMultiSelect = function (event) {\r\n\t event.preventDefault();\r\n\r\n\t this._updateDragDistance(event);\r\n\t if (!event.hasMoved) {\r\n\t return;\r\n\t }\r\n\r\n\t var node = Node.getNodeFromTarget(event.target);\r\n\r\n\t if (node) {\r\n\t if (this.multiselection.start == null) {\r\n\t this.multiselection.start = node;\r\n\t }\r\n\t this.multiselection.end = node;\r\n\t }\r\n\r\n\t // deselect previous selection\r\n\t this.deselect();\r\n\r\n\t // find the selected nodes in the range from first to last\r\n\t var start = this.multiselection.start;\r\n\t var end = this.multiselection.end || this.multiselection.start;\r\n\t if (start && end) {\r\n\t // find the top level childs, all having the same parent\r\n\t this.multiselection.nodes = this._findTopLevelNodes(start, end);\r\n\t this.select(this.multiselection.nodes);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * End of multiselect nodes by dragging\r\n\t * @param event\r\n\t * @private\r\n\t */\r\n\ttreemode._onMultiSelectEnd = function (event) {\r\n\t // set focus to the context menu button of the first node\r\n\t if (this.multiselection.nodes[0]) {\r\n\t this.multiselection.nodes[0].dom.menu.focus();\r\n\t }\r\n\r\n\t this.multiselection.start = null;\r\n\t this.multiselection.end = null;\r\n\r\n\t // cleanup global event listeners\r\n\t if (this.mousemove) {\r\n\t util.removeEventListener(window, 'mousemove', this.mousemove);\r\n\t delete this.mousemove;\r\n\t }\r\n\t if (this.mouseup) {\r\n\t util.removeEventListener(window, 'mouseup', this.mouseup);\r\n\t delete this.mouseup;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * deselect currently selected nodes\r\n\t * @param {boolean} [clearStartAndEnd=false] If true, the `start` and `end`\r\n\t * state is cleared too.\r\n\t */\r\n\ttreemode.deselect = function (clearStartAndEnd) {\r\n\t this.multiselection.nodes.forEach(function (node) {\r\n\t node.setSelected(false);\r\n\t });\r\n\t this.multiselection.nodes = [];\r\n\r\n\t if (clearStartAndEnd) {\r\n\t this.multiselection.start = null;\r\n\t this.multiselection.end = null;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * select nodes\r\n\t * @param {Node[] | Node} nodes\r\n\t */\r\n\ttreemode.select = function (nodes) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t return this.select([nodes]);\r\n\t }\r\n\r\n\t if (nodes) {\r\n\t this.deselect();\r\n\r\n\t this.multiselection.nodes = nodes.slice(0);\r\n\r\n\t var first = nodes[0];\r\n\t nodes.forEach(function (node) {\r\n\t node.setSelected(true, node === first);\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * From two arbitrary selected nodes, find their shared parent node.\r\n\t * From that parent node, select the two child nodes in the brances going to\r\n\t * nodes `start` and `end`, and select all childs in between.\r\n\t * @param {Node} start\r\n\t * @param {Node} end\r\n\t * @return {Array.} Returns an ordered list with child nodes\r\n\t * @private\r\n\t */\r\n\ttreemode._findTopLevelNodes = function (start, end) {\r\n\t var startPath = start.getNodePath();\r\n\t var endPath = end.getNodePath();\r\n\t var i = 0;\r\n\t while (i < startPath.length && startPath[i] === endPath[i]) {\r\n\t i++;\r\n\t }\r\n\t var root = startPath[i - 1];\r\n\t var startChild = startPath[i];\r\n\t var endChild = endPath[i];\r\n\r\n\t if (!startChild || !endChild) {\r\n\t if (root.parent) {\r\n\t // startChild is a parent of endChild or vice versa\r\n\t startChild = root;\r\n\t endChild = root;\r\n\t root = root.parent\r\n\t }\r\n\t else {\r\n\t // we have selected the root node (which doesn't have a parent)\r\n\t startChild = root.childs[0];\r\n\t endChild = root.childs[root.childs.length - 1];\r\n\t }\r\n\t }\r\n\r\n\t if (root && startChild && endChild) {\r\n\t var startIndex = root.childs.indexOf(startChild);\r\n\t var endIndex = root.childs.indexOf(endChild);\r\n\t var firstIndex = Math.min(startIndex, endIndex);\r\n\t var lastIndex = Math.max(startIndex, endIndex);\r\n\r\n\t return root.childs.slice(firstIndex, lastIndex + 1);\r\n\t }\r\n\t else {\r\n\t return [];\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Event handler for keydown. Handles shortcut keys\r\n\t * @param {Event} event\r\n\t * @private\r\n\t */\r\n\ttreemode._onKeyDown = function (event) {\r\n\t var keynum = event.which || event.keyCode;\r\n\t var ctrlKey = event.ctrlKey;\r\n\t var shiftKey = event.shiftKey;\r\n\t var handled = false;\r\n\r\n\t if (keynum == 9) { // Tab or Shift+Tab\r\n\t var me = this;\r\n\t setTimeout(function () {\r\n\t // select all text when moving focus to an editable div\r\n\t util.selectContentEditable(me.focusTarget);\r\n\t }, 0);\r\n\t }\r\n\r\n\t if (this.searchBox) {\r\n\t if (ctrlKey && keynum == 70) { // Ctrl+F\r\n\t this.searchBox.dom.search.focus();\r\n\t this.searchBox.dom.search.select();\r\n\t handled = true;\r\n\t }\r\n\t else if (keynum == 114 || (ctrlKey && keynum == 71)) { // F3 or Ctrl+G\r\n\t var focus = true;\r\n\t if (!shiftKey) {\r\n\t // select next search result (F3 or Ctrl+G)\r\n\t this.searchBox.next(focus);\r\n\t }\r\n\t else {\r\n\t // select previous search result (Shift+F3 or Ctrl+Shift+G)\r\n\t this.searchBox.previous(focus);\r\n\t }\r\n\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\r\n\t if (this.history) {\r\n\t if (ctrlKey && !shiftKey && keynum == 90) { // Ctrl+Z\r\n\t // undo\r\n\t this._onUndo();\r\n\t handled = true;\r\n\t }\r\n\t else if (ctrlKey && shiftKey && keynum == 90) { // Ctrl+Shift+Z\r\n\t // redo\r\n\t this._onRedo();\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\r\n\t if (handled) {\r\n\t event.preventDefault();\r\n\t event.stopPropagation();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Create main table\r\n\t * @private\r\n\t */\r\n\ttreemode._createTable = function () {\r\n\t var contentOuter = document.createElement('div');\r\n\t contentOuter.className = 'jsoneditor-outer';\r\n\t this.contentOuter = contentOuter;\r\n\r\n\t this.content = document.createElement('div');\r\n\t this.content.className = 'jsoneditor-tree';\r\n\t contentOuter.appendChild(this.content);\r\n\r\n\t this.table = document.createElement('table');\r\n\t this.table.className = 'jsoneditor-tree';\r\n\t this.content.appendChild(this.table);\r\n\r\n\t // create colgroup where the first two columns don't have a fixed\r\n\t // width, and the edit columns do have a fixed width\r\n\t var col;\r\n\t this.colgroupContent = document.createElement('colgroup');\r\n\t if (this.options.mode === 'tree') {\r\n\t col = document.createElement('col');\r\n\t col.width = \"24px\";\r\n\t this.colgroupContent.appendChild(col);\r\n\t }\r\n\t col = document.createElement('col');\r\n\t col.width = \"24px\";\r\n\t this.colgroupContent.appendChild(col);\r\n\t col = document.createElement('col');\r\n\t this.colgroupContent.appendChild(col);\r\n\t this.table.appendChild(this.colgroupContent);\r\n\r\n\t this.tbody = document.createElement('tbody');\r\n\t this.table.appendChild(this.tbody);\r\n\r\n\t this.frame.appendChild(contentOuter);\r\n\t};\r\n\r\n\t/**\r\n\t * Show a contextmenu for this node.\r\n\t * Used for multiselection\r\n\t * @param {HTMLElement} anchor Anchor element to attache the context menu to.\r\n\t * @param {function} [onClose] Callback method called when the context menu\r\n\t * is being closed.\r\n\t */\r\n\ttreemode.showContextMenu = function (anchor, onClose) {\r\n\t var items = [];\r\n\t var editor = this;\r\n\r\n\t // create duplicate button\r\n\t items.push({\r\n\t text: 'Duplicate',\r\n\t title: 'Duplicate selected fields (Ctrl+D)',\r\n\t className: 'jsoneditor-duplicate',\r\n\t click: function () {\r\n\t Node.onDuplicate(editor.multiselection.nodes);\r\n\t }\r\n\t });\r\n\r\n\t // create remove button\r\n\t items.push({\r\n\t text: 'Remove',\r\n\t title: 'Remove selected fields (Ctrl+Del)',\r\n\t className: 'jsoneditor-remove',\r\n\t click: function () {\r\n\t Node.onRemove(editor.multiselection.nodes);\r\n\t }\r\n\t });\r\n\r\n\t var menu = new ContextMenu(items, {close: onClose});\r\n\t menu.show(anchor, this.content);\r\n\t};\r\n\r\n\r\n\t// define modes\r\n\tmodule.exports = [\r\n\t {\r\n\t mode: 'tree',\r\n\t mixin: treemode,\r\n\t data: 'json'\r\n\t },\r\n\t {\r\n\t mode: 'view',\r\n\t mixin: treemode,\r\n\t data: 'json'\r\n\t },\r\n\t {\r\n\t mode: 'form',\r\n\t mixin: treemode,\r\n\t data: 'json'\r\n\t }\r\n\t];\r\n\r\n\r\n/***/ },\r\n/* 52 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * The highlighter can highlight/unhighlight a node, and\r\n\t * animate the visibility of a context menu.\r\n\t * @constructor Highlighter\r\n\t */\r\n\tfunction Highlighter () {\r\n\t this.locked = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Hightlight given node and its childs\r\n\t * @param {Node} node\r\n\t */\r\n\tHighlighter.prototype.highlight = function (node) {\r\n\t if (this.locked) {\r\n\t return;\r\n\t }\r\n\r\n\t if (this.node != node) {\r\n\t // unhighlight current node\r\n\t if (this.node) {\r\n\t this.node.setHighlight(false);\r\n\t }\r\n\r\n\t // highlight new node\r\n\t this.node = node;\r\n\t this.node.setHighlight(true);\r\n\t }\r\n\r\n\t // cancel any current timeout\r\n\t this._cancelUnhighlight();\r\n\t};\r\n\r\n\t/**\r\n\t * Unhighlight currently highlighted node.\r\n\t * Will be done after a delay\r\n\t */\r\n\tHighlighter.prototype.unhighlight = function () {\r\n\t if (this.locked) {\r\n\t return;\r\n\t }\r\n\r\n\t var me = this;\r\n\t if (this.node) {\r\n\t this._cancelUnhighlight();\r\n\r\n\t // do the unhighlighting after a small delay, to prevent re-highlighting\r\n\t // the same node when moving from the drag-icon to the contextmenu-icon\r\n\t // or vice versa.\r\n\t this.unhighlightTimer = setTimeout(function () {\r\n\t me.node.setHighlight(false);\r\n\t me.node = undefined;\r\n\t me.unhighlightTimer = undefined;\r\n\t }, 0);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Cancel an unhighlight action (if before the timeout of the unhighlight action)\r\n\t * @private\r\n\t */\r\n\tHighlighter.prototype._cancelUnhighlight = function () {\r\n\t if (this.unhighlightTimer) {\r\n\t clearTimeout(this.unhighlightTimer);\r\n\t this.unhighlightTimer = undefined;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Lock highlighting or unhighlighting nodes.\r\n\t * methods highlight and unhighlight do not work while locked.\r\n\t */\r\n\tHighlighter.prototype.lock = function () {\r\n\t this.locked = true;\r\n\t};\r\n\r\n\t/**\r\n\t * Unlock highlighting or unhighlighting nodes\r\n\t */\r\n\tHighlighter.prototype.unlock = function () {\r\n\t this.locked = false;\r\n\t};\r\n\r\n\tmodule.exports = Highlighter;\r\n\r\n\r\n/***/ },\r\n/* 53 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar util = __webpack_require__(54);\r\n\r\n\t/**\r\n\t * @constructor History\r\n\t * Store action history, enables undo and redo\r\n\t * @param {JSONEditor} editor\r\n\t */\r\n\tfunction History (editor) {\r\n\t this.editor = editor;\r\n\t this.history = [];\r\n\t this.index = -1;\r\n\r\n\t this.clear();\r\n\r\n\t // map with all supported actions\r\n\t this.actions = {\r\n\t 'editField': {\r\n\t 'undo': function (params) {\r\n\t params.node.updateField(params.oldValue);\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.node.updateField(params.newValue);\r\n\t }\r\n\t },\r\n\t 'editValue': {\r\n\t 'undo': function (params) {\r\n\t params.node.updateValue(params.oldValue);\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.node.updateValue(params.newValue);\r\n\t }\r\n\t },\r\n\t 'changeType': {\r\n\t 'undo': function (params) {\r\n\t params.node.changeType(params.oldType);\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.node.changeType(params.newType);\r\n\t }\r\n\t },\r\n\r\n\t 'appendNodes': {\r\n\t 'undo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.removeChild(node);\r\n\t });\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.appendChild(node);\r\n\t });\r\n\t }\r\n\t },\r\n\t 'insertBeforeNodes': {\r\n\t 'undo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.removeChild(node);\r\n\t });\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.insertBefore(node, params.beforeNode);\r\n\t });\r\n\t }\r\n\t },\r\n\t 'insertAfterNodes': {\r\n\t 'undo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.removeChild(node);\r\n\t });\r\n\t },\r\n\t 'redo': function (params) {\r\n\t var afterNode = params.afterNode;\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.insertAfter(params.node, afterNode);\r\n\t afterNode = node;\r\n\t });\r\n\t }\r\n\t },\r\n\t 'removeNodes': {\r\n\t 'undo': function (params) {\r\n\t var parent = params.parent;\r\n\t var beforeNode = parent.childs[params.index] || parent.append;\r\n\t params.nodes.forEach(function (node) {\r\n\t parent.insertBefore(node, beforeNode);\r\n\t });\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.removeChild(node);\r\n\t });\r\n\t }\r\n\t },\r\n\t 'duplicateNodes': {\r\n\t 'undo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.removeChild(node);\r\n\t });\r\n\t },\r\n\t 'redo': function (params) {\r\n\t var afterNode = params.afterNode;\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.insertAfter(node, afterNode);\r\n\t afterNode = node;\r\n\t });\r\n\t }\r\n\t },\r\n\t 'moveNodes': {\r\n\t 'undo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.oldBeforeNode.parent.moveBefore(node, params.oldBeforeNode);\r\n\t });\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.newBeforeNode.parent.moveBefore(node, params.newBeforeNode);\r\n\t });\r\n\t }\r\n\t },\r\n\r\n\t 'sort': {\r\n\t 'undo': function (params) {\r\n\t var node = params.node;\r\n\t node.hideChilds();\r\n\t node.sort = params.oldSort;\r\n\t node.childs = params.oldChilds;\r\n\t node.showChilds();\r\n\t },\r\n\t 'redo': function (params) {\r\n\t var node = params.node;\r\n\t node.hideChilds();\r\n\t node.sort = params.newSort;\r\n\t node.childs = params.newChilds;\r\n\t node.showChilds();\r\n\t }\r\n\t }\r\n\r\n\t // TODO: restore the original caret position and selection with each undo\r\n\t // TODO: implement history for actions \"expand\", \"collapse\", \"scroll\", \"setDocument\"\r\n\t };\r\n\t}\r\n\r\n\t/**\r\n\t * The method onChange is executed when the History is changed, and can\r\n\t * be overloaded.\r\n\t */\r\n\tHistory.prototype.onChange = function () {};\r\n\r\n\t/**\r\n\t * Add a new action to the history\r\n\t * @param {String} action The executed action. Available actions: \"editField\",\r\n\t * \"editValue\", \"changeType\", \"appendNode\",\r\n\t * \"removeNode\", \"duplicateNode\", \"moveNode\"\r\n\t * @param {Object} params Object containing parameters describing the change.\r\n\t * The parameters in params depend on the action (for\r\n\t * example for \"editValue\" the Node, old value, and new\r\n\t * value are provided). params contains all information\r\n\t * needed to undo or redo the action.\r\n\t */\r\n\tHistory.prototype.add = function (action, params) {\r\n\t this.index++;\r\n\t this.history[this.index] = {\r\n\t 'action': action,\r\n\t 'params': params,\r\n\t 'timestamp': new Date()\r\n\t };\r\n\r\n\t // remove redo actions which are invalid now\r\n\t if (this.index < this.history.length - 1) {\r\n\t this.history.splice(this.index + 1, this.history.length - this.index - 1);\r\n\t }\r\n\r\n\t // fire onchange event\r\n\t this.onChange();\r\n\t};\r\n\r\n\t/**\r\n\t * Clear history\r\n\t */\r\n\tHistory.prototype.clear = function () {\r\n\t this.history = [];\r\n\t this.index = -1;\r\n\r\n\t // fire onchange event\r\n\t this.onChange();\r\n\t};\r\n\r\n\t/**\r\n\t * Check if there is an action available for undo\r\n\t * @return {Boolean} canUndo\r\n\t */\r\n\tHistory.prototype.canUndo = function () {\r\n\t return (this.index >= 0);\r\n\t};\r\n\r\n\t/**\r\n\t * Check if there is an action available for redo\r\n\t * @return {Boolean} canRedo\r\n\t */\r\n\tHistory.prototype.canRedo = function () {\r\n\t return (this.index < this.history.length - 1);\r\n\t};\r\n\r\n\t/**\r\n\t * Undo the last action\r\n\t */\r\n\tHistory.prototype.undo = function () {\r\n\t if (this.canUndo()) {\r\n\t var obj = this.history[this.index];\r\n\t if (obj) {\r\n\t var action = this.actions[obj.action];\r\n\t if (action && action.undo) {\r\n\t action.undo(obj.params);\r\n\t if (obj.params.oldSelection) {\r\n\t this.editor.setSelection(obj.params.oldSelection);\r\n\t }\r\n\t }\r\n\t else {\r\n\t console.error(new Error('unknown action \"' + obj.action + '\"'));\r\n\t }\r\n\t }\r\n\t this.index--;\r\n\r\n\t // fire onchange event\r\n\t this.onChange();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Redo the last action\r\n\t */\r\n\tHistory.prototype.redo = function () {\r\n\t if (this.canRedo()) {\r\n\t this.index++;\r\n\r\n\t var obj = this.history[this.index];\r\n\t if (obj) {\r\n\t var action = this.actions[obj.action];\r\n\t if (action && action.redo) {\r\n\t action.redo(obj.params);\r\n\t if (obj.params.newSelection) {\r\n\t this.editor.setSelection(obj.params.newSelection);\r\n\t }\r\n\t }\r\n\t else {\r\n\t console.error(new Error('unknown action \"' + obj.action + '\"'));\r\n\t }\r\n\t }\r\n\r\n\t // fire onchange event\r\n\t this.onChange();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Destroy history\r\n\t */\r\n\tHistory.prototype.destroy = function () {\r\n\t this.editor = null;\r\n\r\n\t this.history = [];\r\n\t this.index = -1;\r\n\t};\r\n\r\n\tmodule.exports = History;\r\n\r\n\r\n/***/ },\r\n/* 54 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar jsonlint = __webpack_require__(55);\r\n\r\n\t/**\r\n\t * Parse JSON using the parser built-in in the browser.\r\n\t * On exception, the jsonString is validated and a detailed error is thrown.\r\n\t * @param {String} jsonString\r\n\t * @return {JSON} json\r\n\t */\r\n\texports.parse = function parse(jsonString) {\r\n\t try {\r\n\t return JSON.parse(jsonString);\r\n\t }\r\n\t catch (err) {\r\n\t // try to throw a more detailed error message using validate\r\n\t exports.validate(jsonString);\r\n\r\n\t // rethrow the original error\r\n\t throw err;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Sanitize a JSON-like string containing. For example changes JavaScript\r\n\t * notation into JSON notation.\r\n\t * This function for example changes a string like \"{a: 2, 'b': {c: 'd'}\"\r\n\t * into '{\"a\": 2, \"b\": {\"c\": \"d\"}'\r\n\t * @param {string} jsString\r\n\t * @returns {string} json\r\n\t */\r\n\texports.sanitize = function (jsString) {\r\n\t // escape all single and double quotes inside strings\r\n\t var chars = [];\r\n\t var i = 0;\r\n\r\n\t //If JSON starts with a function (characters/digits/\"_-\"), remove this function.\r\n\t //This is useful for \"stripping\" JSONP objects to become JSON\r\n\t //For example: /* some comment */ function_12321321 ( [{\"a\":\"b\"}] ); => [{\"a\":\"b\"}]\r\n\t var match = jsString.match(/^\\s*(\\/\\*(.|[\\r\\n])*?\\*\\/)?\\s*[\\da-zA-Z_$]+\\s*\\(([\\s\\S]*)\\)\\s*;?\\s*$/);\r\n\t if (match) {\r\n\t jsString = match[3];\r\n\t }\r\n\r\n\t // helper functions to get the current/prev/next character\r\n\t function curr () { return jsString.charAt(i); }\r\n\t function next() { return jsString.charAt(i + 1); }\r\n\t function prev() { return jsString.charAt(i - 1); }\r\n\r\n\t // get the last parsed non-whitespace character\r\n\t function lastNonWhitespace () {\r\n\t var p = chars.length - 1;\r\n\r\n\t while (p >= 0) {\r\n\t var pp = chars[p];\r\n\t if (pp !== ' ' && pp !== '\\n' && pp !== '\\r' && pp !== '\\t') { // non whitespace\r\n\t return pp;\r\n\t }\r\n\t p--;\r\n\t }\r\n\r\n\t return '';\r\n\t }\r\n\r\n\t // skip a block comment '/* ... */'\r\n\t function skipBlockComment () {\r\n\t i += 2;\r\n\t while (i < jsString.length && (curr() !== '*' || next() !== '/')) {\r\n\t i++;\r\n\t }\r\n\t i += 2;\r\n\t }\r\n\r\n\t // skip a comment '// ...'\r\n\t function skipComment () {\r\n\t i += 2;\r\n\t while (i < jsString.length && (curr() !== '\\n')) {\r\n\t i++;\r\n\t }\r\n\t }\r\n\r\n\t // parse single or double quoted string\r\n\t function parseString(quote) {\r\n\t chars.push('\"');\r\n\t i++;\r\n\t var c = curr();\r\n\t while (i < jsString.length && c !== quote) {\r\n\t if (c === '\"' && prev() !== '\\\\') {\r\n\t // unescaped double quote, escape it\r\n\t chars.push('\\\\');\r\n\t }\r\n\r\n\t // handle escape character\r\n\t if (c === '\\\\') {\r\n\t i++;\r\n\t c = curr();\r\n\r\n\t // remove the escape character when followed by a single quote ', not needed\r\n\t if (c !== '\\'') {\r\n\t chars.push('\\\\');\r\n\t }\r\n\t }\r\n\t chars.push(c);\r\n\r\n\t i++;\r\n\t c = curr();\r\n\t }\r\n\t if (c === quote) {\r\n\t chars.push('\"');\r\n\t i++;\r\n\t }\r\n\t }\r\n\r\n\t // parse an unquoted key\r\n\t function parseKey() {\r\n\t var specialValues = ['null', 'true', 'false'];\r\n\t var key = '';\r\n\t var c = curr();\r\n\r\n\t var regexp = /[a-zA-Z_$\\d]/; // letter, number, underscore, dollar character\r\n\t while (regexp.test(c)) {\r\n\t key += c;\r\n\t i++;\r\n\t c = curr();\r\n\t }\r\n\r\n\t if (specialValues.indexOf(key) === -1) {\r\n\t chars.push('\"' + key + '\"');\r\n\t }\r\n\t else {\r\n\t chars.push(key);\r\n\t }\r\n\t }\r\n\r\n\t while(i < jsString.length) {\r\n\t var c = curr();\r\n\r\n\t if (c === '/' && next() === '*') {\r\n\t skipBlockComment();\r\n\t }\r\n\t else if (c === '/' && next() === '/') {\r\n\t skipComment();\r\n\t }\r\n\t else if (c === '\\'' || c === '\"') {\r\n\t parseString(c);\r\n\t }\r\n\t else if (/[a-zA-Z_$]/.test(c) && ['{', ','].indexOf(lastNonWhitespace()) !== -1) {\r\n\t // an unquoted object key (like a in '{a:2}')\r\n\t parseKey();\r\n\t }\r\n\t else {\r\n\t chars.push(c);\r\n\t i++;\r\n\t }\r\n\t }\r\n\r\n\t return chars.join('');\r\n\t};\r\n\r\n\t/**\r\n\t * Escape unicode characters.\r\n\t * For example input '\\u2661' (length 1) will output '\\\\u2661' (length 5).\r\n\t * @param {string} text\r\n\t * @return {string}\r\n\t */\r\n\texports.escapeUnicodeChars = function (text) {\r\n\t // see https://www.wikiwand.com/en/UTF-16\r\n\t // note: we leave surrogate pairs as two individual chars,\r\n\t // as JSON doesn't interpret them as a single unicode char.\r\n\t return text.replace(/[\\u007F-\\uFFFF]/g, function(c) {\r\n\t return '\\\\u'+('0000' + c.charCodeAt(0).toString(16)).slice(-4);\r\n\t })\r\n\t};\r\n\r\n\t/**\r\n\t * Validate a string containing a JSON object\r\n\t * This method uses JSONLint to validate the String. If JSONLint is not\r\n\t * available, the built-in JSON parser of the browser is used.\r\n\t * @param {String} jsonString String with an (invalid) JSON object\r\n\t * @throws Error\r\n\t */\r\n\texports.validate = function validate(jsonString) {\r\n\t if (typeof(jsonlint) != 'undefined') {\r\n\t jsonlint.parse(jsonString);\r\n\t }\r\n\t else {\r\n\t JSON.parse(jsonString);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Extend object a with the properties of object b\r\n\t * @param {Object} a\r\n\t * @param {Object} b\r\n\t * @return {Object} a\r\n\t */\r\n\texports.extend = function extend(a, b) {\r\n\t for (var prop in b) {\r\n\t if (b.hasOwnProperty(prop)) {\r\n\t a[prop] = b[prop];\r\n\t }\r\n\t }\r\n\t return a;\r\n\t};\r\n\r\n\t/**\r\n\t * Remove all properties from object a\r\n\t * @param {Object} a\r\n\t * @return {Object} a\r\n\t */\r\n\texports.clear = function clear (a) {\r\n\t for (var prop in a) {\r\n\t if (a.hasOwnProperty(prop)) {\r\n\t delete a[prop];\r\n\t }\r\n\t }\r\n\t return a;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the type of an object\r\n\t * @param {*} object\r\n\t * @return {String} type\r\n\t */\r\n\texports.type = function type (object) {\r\n\t if (object === null) {\r\n\t return 'null';\r\n\t }\r\n\t if (object === undefined) {\r\n\t return 'undefined';\r\n\t }\r\n\t if ((object instanceof Number) || (typeof object === 'number')) {\r\n\t return 'number';\r\n\t }\r\n\t if ((object instanceof String) || (typeof object === 'string')) {\r\n\t return 'string';\r\n\t }\r\n\t if ((object instanceof Boolean) || (typeof object === 'boolean')) {\r\n\t return 'boolean';\r\n\t }\r\n\t if ((object instanceof RegExp) || (typeof object === 'regexp')) {\r\n\t return 'regexp';\r\n\t }\r\n\t if (exports.isArray(object)) {\r\n\t return 'array';\r\n\t }\r\n\r\n\t return 'object';\r\n\t};\r\n\r\n\t/**\r\n\t * Test whether a text contains a url (matches when a string starts\r\n\t * with 'http://*' or 'https://*' and has no whitespace characters)\r\n\t * @param {String} text\r\n\t */\r\n\tvar isUrlRegex = /^https?:\\/\\/\\S+$/;\r\n\texports.isUrl = function isUrl (text) {\r\n\t return (typeof text == 'string' || text instanceof String) &&\r\n\t isUrlRegex.test(text);\r\n\t};\r\n\r\n\t/**\r\n\t * Tes whether given object is an Array\r\n\t * @param {*} obj\r\n\t * @returns {boolean} returns true when obj is an array\r\n\t */\r\n\texports.isArray = function (obj) {\r\n\t return Object.prototype.toString.call(obj) === '[object Array]';\r\n\t};\r\n\r\n\t/**\r\n\t * Retrieve the absolute left value of a DOM element\r\n\t * @param {Element} elem A dom element, for example a div\r\n\t * @return {Number} left The absolute left position of this element\r\n\t * in the browser page.\r\n\t */\r\n\texports.getAbsoluteLeft = function getAbsoluteLeft(elem) {\r\n\t var rect = elem.getBoundingClientRect();\r\n\t return rect.left + window.pageXOffset || document.scrollLeft || 0;\r\n\t};\r\n\r\n\t/**\r\n\t * Retrieve the absolute top value of a DOM element\r\n\t * @param {Element} elem A dom element, for example a div\r\n\t * @return {Number} top The absolute top position of this element\r\n\t * in the browser page.\r\n\t */\r\n\texports.getAbsoluteTop = function getAbsoluteTop(elem) {\r\n\t var rect = elem.getBoundingClientRect();\r\n\t return rect.top + window.pageYOffset || document.scrollTop || 0;\r\n\t};\r\n\r\n\t/**\r\n\t * add a className to the given elements style\r\n\t * @param {Element} elem\r\n\t * @param {String} className\r\n\t */\r\n\texports.addClassName = function addClassName(elem, className) {\r\n\t var classes = elem.className.split(' ');\r\n\t if (classes.indexOf(className) == -1) {\r\n\t classes.push(className); // add the class to the array\r\n\t elem.className = classes.join(' ');\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * add a className to the given elements style\r\n\t * @param {Element} elem\r\n\t * @param {String} className\r\n\t */\r\n\texports.removeClassName = function removeClassName(elem, className) {\r\n\t var classes = elem.className.split(' ');\r\n\t var index = classes.indexOf(className);\r\n\t if (index != -1) {\r\n\t classes.splice(index, 1); // remove the class from the array\r\n\t elem.className = classes.join(' ');\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Strip the formatting from the contents of a div\r\n\t * the formatting from the div itself is not stripped, only from its childs.\r\n\t * @param {Element} divElement\r\n\t */\r\n\texports.stripFormatting = function stripFormatting(divElement) {\r\n\t var childs = divElement.childNodes;\r\n\t for (var i = 0, iMax = childs.length; i < iMax; i++) {\r\n\t var child = childs[i];\r\n\r\n\t // remove the style\r\n\t if (child.style) {\r\n\t // TODO: test if child.attributes does contain style\r\n\t child.removeAttribute('style');\r\n\t }\r\n\r\n\t // remove all attributes\r\n\t var attributes = child.attributes;\r\n\t if (attributes) {\r\n\t for (var j = attributes.length - 1; j >= 0; j--) {\r\n\t var attribute = attributes[j];\r\n\t if (attribute.specified === true) {\r\n\t child.removeAttribute(attribute.name);\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t // recursively strip childs\r\n\t exports.stripFormatting(child);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Set focus to the end of an editable div\r\n\t * code from Nico Burns\r\n\t * http://stackoverflow.com/users/140293/nico-burns\r\n\t * http://stackoverflow.com/questions/1125292/how-to-move-cursor-to-end-of-contenteditable-entity\r\n\t * @param {Element} contentEditableElement A content editable div\r\n\t */\r\n\texports.setEndOfContentEditable = function setEndOfContentEditable(contentEditableElement) {\r\n\t var range, selection;\r\n\t if(document.createRange) {\r\n\t range = document.createRange();//Create a range (a range is a like the selection but invisible)\r\n\t range.selectNodeContents(contentEditableElement);//Select the entire contents of the element with the range\r\n\t range.collapse(false);//collapse the range to the end point. false means collapse to end rather than the start\r\n\t selection = window.getSelection();//get the selection object (allows you to change selection)\r\n\t selection.removeAllRanges();//remove any selections already made\r\n\t selection.addRange(range);//make the range you have just created the visible selection\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Select all text of a content editable div.\r\n\t * http://stackoverflow.com/a/3806004/1262753\r\n\t * @param {Element} contentEditableElement A content editable div\r\n\t */\r\n\texports.selectContentEditable = function selectContentEditable(contentEditableElement) {\r\n\t if (!contentEditableElement || contentEditableElement.nodeName != 'DIV') {\r\n\t return;\r\n\t }\r\n\r\n\t var sel, range;\r\n\t if (window.getSelection && document.createRange) {\r\n\t range = document.createRange();\r\n\t range.selectNodeContents(contentEditableElement);\r\n\t sel = window.getSelection();\r\n\t sel.removeAllRanges();\r\n\t sel.addRange(range);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get text selection\r\n\t * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore\r\n\t * @return {Range | TextRange | null} range\r\n\t */\r\n\texports.getSelection = function getSelection() {\r\n\t if (window.getSelection) {\r\n\t var sel = window.getSelection();\r\n\t if (sel.getRangeAt && sel.rangeCount) {\r\n\t return sel.getRangeAt(0);\r\n\t }\r\n\t }\r\n\t return null;\r\n\t};\r\n\r\n\t/**\r\n\t * Set text selection\r\n\t * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore\r\n\t * @param {Range | TextRange | null} range\r\n\t */\r\n\texports.setSelection = function setSelection(range) {\r\n\t if (range) {\r\n\t if (window.getSelection) {\r\n\t var sel = window.getSelection();\r\n\t sel.removeAllRanges();\r\n\t sel.addRange(range);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get selected text range\r\n\t * @return {Object} params object containing parameters:\r\n\t * {Number} startOffset\r\n\t * {Number} endOffset\r\n\t * {Element} container HTML element holding the\r\n\t * selected text element\r\n\t * Returns null if no text selection is found\r\n\t */\r\n\texports.getSelectionOffset = function getSelectionOffset() {\r\n\t var range = exports.getSelection();\r\n\r\n\t if (range && 'startOffset' in range && 'endOffset' in range &&\r\n\t range.startContainer && (range.startContainer == range.endContainer)) {\r\n\t return {\r\n\t startOffset: range.startOffset,\r\n\t endOffset: range.endOffset,\r\n\t container: range.startContainer.parentNode\r\n\t };\r\n\t }\r\n\r\n\t return null;\r\n\t};\r\n\r\n\t/**\r\n\t * Set selected text range in given element\r\n\t * @param {Object} params An object containing:\r\n\t * {Element} container\r\n\t * {Number} startOffset\r\n\t * {Number} endOffset\r\n\t */\r\n\texports.setSelectionOffset = function setSelectionOffset(params) {\r\n\t if (document.createRange && window.getSelection) {\r\n\t var selection = window.getSelection();\r\n\t if(selection) {\r\n\t var range = document.createRange();\r\n\r\n\t if (!params.container.firstChild) {\r\n\t params.container.appendChild(document.createTextNode(''));\r\n\t }\r\n\r\n\t // TODO: do not suppose that the first child of the container is a textnode,\r\n\t // but recursively find the textnodes\r\n\t range.setStart(params.container.firstChild, params.startOffset);\r\n\t range.setEnd(params.container.firstChild, params.endOffset);\r\n\r\n\t exports.setSelection(range);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the inner text of an HTML element (for example a div element)\r\n\t * @param {Element} element\r\n\t * @param {Object} [buffer]\r\n\t * @return {String} innerText\r\n\t */\r\n\texports.getInnerText = function getInnerText(element, buffer) {\r\n\t var first = (buffer == undefined);\r\n\t if (first) {\r\n\t buffer = {\r\n\t 'text': '',\r\n\t 'flush': function () {\r\n\t var text = this.text;\r\n\t this.text = '';\r\n\t return text;\r\n\t },\r\n\t 'set': function (text) {\r\n\t this.text = text;\r\n\t }\r\n\t };\r\n\t }\r\n\r\n\t // text node\r\n\t if (element.nodeValue) {\r\n\t return buffer.flush() + element.nodeValue;\r\n\t }\r\n\r\n\t // divs or other HTML elements\r\n\t if (element.hasChildNodes()) {\r\n\t var childNodes = element.childNodes;\r\n\t var innerText = '';\r\n\r\n\t for (var i = 0, iMax = childNodes.length; i < iMax; i++) {\r\n\t var child = childNodes[i];\r\n\r\n\t if (child.nodeName == 'DIV' || child.nodeName == 'P') {\r\n\t var prevChild = childNodes[i - 1];\r\n\t var prevName = prevChild ? prevChild.nodeName : undefined;\r\n\t if (prevName && prevName != 'DIV' && prevName != 'P' && prevName != 'BR') {\r\n\t innerText += '\\n';\r\n\t buffer.flush();\r\n\t }\r\n\t innerText += exports.getInnerText(child, buffer);\r\n\t buffer.set('\\n');\r\n\t }\r\n\t else if (child.nodeName == 'BR') {\r\n\t innerText += buffer.flush();\r\n\t buffer.set('\\n');\r\n\t }\r\n\t else {\r\n\t innerText += exports.getInnerText(child, buffer);\r\n\t }\r\n\t }\r\n\r\n\t return innerText;\r\n\t }\r\n\t else {\r\n\t if (element.nodeName == 'P' && exports.getInternetExplorerVersion() != -1) {\r\n\t // On Internet Explorer, a
with hasChildNodes()==false is\r\n\t // rendered with a new line. Note that a
with\r\n\t // hasChildNodes()==true is rendered without a new line\r\n\t // Other browsers always ensure there is a inside the
,\r\n\t // and if not, the
does not render a new line\r\n\t return buffer.flush();\r\n\t }\r\n\t }\r\n\r\n\t // br or unknown\r\n\t return '';\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the version of Internet Explorer or a -1\r\n\t * (indicating the use of another browser).\r\n\t * Source: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx\r\n\t * @return {Number} Internet Explorer version, or -1 in case of an other browser\r\n\t */\r\n\texports.getInternetExplorerVersion = function getInternetExplorerVersion() {\r\n\t if (_ieVersion == -1) {\r\n\t var rv = -1; // Return value assumes failure.\r\n\t if (navigator.appName == 'Microsoft Internet Explorer')\r\n\t {\r\n\t var ua = navigator.userAgent;\r\n\t var re = new RegExp(\"MSIE ([0-9]{1,}[\\.0-9]{0,})\");\r\n\t if (re.exec(ua) != null) {\r\n\t rv = parseFloat( RegExp.$1 );\r\n\t }\r\n\t }\r\n\r\n\t _ieVersion = rv;\r\n\t }\r\n\r\n\t return _ieVersion;\r\n\t};\r\n\r\n\t/**\r\n\t * Test whether the current browser is Firefox\r\n\t * @returns {boolean} isFirefox\r\n\t */\r\n\texports.isFirefox = function isFirefox () {\r\n\t return (navigator.userAgent.indexOf(\"Firefox\") != -1);\r\n\t};\r\n\r\n\t/**\r\n\t * cached internet explorer version\r\n\t * @type {Number}\r\n\t * @private\r\n\t */\r\n\tvar _ieVersion = -1;\r\n\r\n\t/**\r\n\t * Add and event listener. Works for all browsers\r\n\t * @param {Element} element An html element\r\n\t * @param {string} action The action, for example \"click\",\r\n\t * without the prefix \"on\"\r\n\t * @param {function} listener The callback function to be executed\r\n\t * @param {boolean} [useCapture] false by default\r\n\t * @return {function} the created event listener\r\n\t */\r\n\texports.addEventListener = function addEventListener(element, action, listener, useCapture) {\r\n\t if (element.addEventListener) {\r\n\t if (useCapture === undefined)\r\n\t useCapture = false;\r\n\r\n\t if (action === \"mousewheel\" && exports.isFirefox()) {\r\n\t action = \"DOMMouseScroll\"; // For Firefox\r\n\t }\r\n\r\n\t element.addEventListener(action, listener, useCapture);\r\n\t return listener;\r\n\t } else if (element.attachEvent) {\r\n\t // Old IE browsers\r\n\t var f = function () {\r\n\t return listener.call(element, window.event);\r\n\t };\r\n\t element.attachEvent(\"on\" + action, f);\r\n\t return f;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Remove an event listener from an element\r\n\t * @param {Element} element An html dom element\r\n\t * @param {string} action The name of the event, for example \"mousedown\"\r\n\t * @param {function} listener The listener function\r\n\t * @param {boolean} [useCapture] false by default\r\n\t */\r\n\texports.removeEventListener = function removeEventListener(element, action, listener, useCapture) {\r\n\t if (element.removeEventListener) {\r\n\t if (useCapture === undefined)\r\n\t useCapture = false;\r\n\r\n\t if (action === \"mousewheel\" && exports.isFirefox()) {\r\n\t action = \"DOMMouseScroll\"; // For Firefox\r\n\t }\r\n\r\n\t element.removeEventListener(action, listener, useCapture);\r\n\t } else if (element.detachEvent) {\r\n\t // Old IE browsers\r\n\t element.detachEvent(\"on\" + action, listener);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Parse a JSON path like '.items[3].name' into an array\r\n\t * @param {string} jsonPath\r\n\t * @return {Array}\r\n\t */\r\n\texports.parsePath = function parsePath(jsonPath) {\r\n\t var prop, remainder;\r\n\r\n\t if (jsonPath.length === 0) {\r\n\t return [];\r\n\t }\r\n\r\n\t // find a match like '.prop'\r\n\t var match = jsonPath.match(/^\\.(\\w+)/);\r\n\t if (match) {\r\n\t prop = match[1];\r\n\t remainder = jsonPath.substr(prop.length + 1);\r\n\t }\r\n\t else if (jsonPath[0] === '[') {\r\n\t // find a match like\r\n\t var end = jsonPath.indexOf(']');\r\n\t if (end === -1) {\r\n\t throw new SyntaxError('Character ] expected in path');\r\n\t }\r\n\t if (end === 1) {\r\n\t throw new SyntaxError('Index expected after [');\r\n\t }\r\n\r\n\t var value = jsonPath.substring(1, end);\r\n\t if (value[0] === '\\'') {\r\n\t // ajv produces string prop names with single quotes, so we need\r\n\t // to reformat them into valid double-quoted JSON strings\r\n\t value = '\\\"' + value.substring(1, value.length - 1) + '\\\"';\r\n\t }\r\n\r\n\t prop = value === '*' ? value : JSON.parse(value); // parse string and number\r\n\t remainder = jsonPath.substr(end + 1);\r\n\t }\r\n\t else {\r\n\t throw new SyntaxError('Failed to parse path');\r\n\t }\r\n\r\n\t return [prop].concat(parsePath(remainder))\r\n\t};\r\n\r\n\t/**\r\n\t * Improve the error message of a JSON schema error\r\n\t * @param {Object} error\r\n\t * @return {Object} The error\r\n\t */\r\n\texports.improveSchemaError = function (error) {\r\n\t if (error.keyword === 'enum' && Array.isArray(error.schema)) {\r\n\t var enums = error.schema;\r\n\t if (enums) {\r\n\t enums = enums.map(function (value) {\r\n\t return JSON.stringify(value);\r\n\t });\r\n\r\n\t if (enums.length > 5) {\r\n\t var more = ['(' + (enums.length - 5) + ' more...)'];\r\n\t enums = enums.slice(0, 5);\r\n\t enums.push(more);\r\n\t }\r\n\t error.message = 'should be equal to one of: ' + enums.join(', ');\r\n\t }\r\n\t }\r\n\r\n\t if (error.keyword === 'additionalProperties') {\r\n\t error.message = 'should NOT have additional property: ' + error.params.additionalProperty;\r\n\t }\r\n\r\n\t return error;\r\n\t};\r\n\r\n\t/**\r\n\t * Test whether the child rect fits completely inside the parent rect.\r\n\t * @param {ClientRect} parent\r\n\t * @param {ClientRect} child\r\n\t * @param {number} margin\r\n\t */\r\n\texports.insideRect = function (parent, child, margin) {\r\n\t var _margin = margin !== undefined ? margin : 0;\r\n\t return child.left - _margin >= parent.left\r\n\t && child.right + _margin <= parent.right\r\n\t && child.top - _margin >= parent.top\r\n\t && child.bottom + _margin <= parent.bottom;\r\n\t};\r\n\r\n\t/**\r\n\t * Returns a function, that, as long as it continues to be invoked, will not\r\n\t * be triggered. The function will be called after it stops being called for\r\n\t * N milliseconds.\r\n\t *\r\n\t * Source: https://davidwalsh.name/javascript-debounce-function\r\n\t *\r\n\t * @param {function} func\r\n\t * @param {number} wait Number in milliseconds\r\n\t * @param {boolean} [immediate=false] If `immediate` is passed, trigger the\r\n\t * function on the leading edge, instead\r\n\t * of the trailing.\r\n\t * @return {function} Return the debounced function\r\n\t */\r\n\texports.debounce = function debounce(func, wait, immediate) {\r\n\t var timeout;\r\n\t return function() {\r\n\t var context = this, args = arguments;\r\n\t var later = function() {\r\n\t timeout = null;\r\n\t if (!immediate) func.apply(context, args);\r\n\t };\r\n\t var callNow = immediate && !timeout;\r\n\t clearTimeout(timeout);\r\n\t timeout = setTimeout(later, wait);\r\n\t if (callNow) func.apply(context, args);\r\n\t };\r\n\t};\r\n\r\n\t/**\r\n\t * Determines the difference between two texts.\r\n\t * Can only detect one removed or inserted block of characters.\r\n\t * @param {string} oldText\r\n\t * @param {string} newText\r\n\t * @return {{start: number, end: number}} Returns the start and end\r\n\t * of the changed part in newText.\r\n\t */\r\n\texports.textDiff = function textDiff(oldText, newText) {\r\n\t var len = newText.length;\r\n\t var start = 0;\r\n\t var oldEnd = oldText.length;\r\n\t var newEnd = newText.length;\r\n\r\n\t while (newText.charAt(start) === oldText.charAt(start)\r\n\t && start < len) {\r\n\t start++;\r\n\t }\r\n\r\n\t while (newText.charAt(newEnd - 1) === oldText.charAt(oldEnd - 1)\r\n\t && newEnd > start && oldEnd > 0) {\r\n\t newEnd--;\r\n\t oldEnd--;\r\n\t }\r\n\r\n\t return {start: start, end: newEnd};\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 55 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t/* Jison generated parser */\r\n\tvar jsonlint = (function(){\r\n\tvar parser = {trace: function trace() { },\r\n\tyy: {},\r\n\tsymbols_: {\"error\":2,\"JSONString\":3,\"STRING\":4,\"JSONNumber\":5,\"NUMBER\":6,\"JSONNullLiteral\":7,\"NULL\":8,\"JSONBooleanLiteral\":9,\"TRUE\":10,\"FALSE\":11,\"JSONText\":12,\"JSONValue\":13,\"EOF\":14,\"JSONObject\":15,\"JSONArray\":16,\"{\":17,\"}\":18,\"JSONMemberList\":19,\"JSONMember\":20,\":\":21,\",\":22,\"[\":23,\"]\":24,\"JSONElementList\":25,\"$accept\":0,\"$end\":1},\r\n\tterminals_: {2:\"error\",4:\"STRING\",6:\"NUMBER\",8:\"NULL\",10:\"TRUE\",11:\"FALSE\",14:\"EOF\",17:\"{\",18:\"}\",21:\":\",22:\",\",23:\"[\",24:\"]\"},\r\n\tproductions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],\r\n\tperformAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {\r\n\r\n\tvar $0 = $$.length - 1;\r\n\tswitch (yystate) {\r\n\tcase 1: // replace escaped characters with actual character\r\n\t this.$ = yytext.replace(/\\\\(\\\\|\")/g, \"$\"+\"1\")\r\n\t .replace(/\\\\n/g,'\\n')\r\n\t .replace(/\\\\r/g,'\\r')\r\n\t .replace(/\\\\t/g,'\\t')\r\n\t .replace(/\\\\v/g,'\\v')\r\n\t .replace(/\\\\f/g,'\\f')\r\n\t .replace(/\\\\b/g,'\\b');\r\n\t \r\n\tbreak;\r\n\tcase 2:this.$ = Number(yytext);\r\n\tbreak;\r\n\tcase 3:this.$ = null;\r\n\tbreak;\r\n\tcase 4:this.$ = true;\r\n\tbreak;\r\n\tcase 5:this.$ = false;\r\n\tbreak;\r\n\tcase 6:return this.$ = $$[$0-1];\r\n\tbreak;\r\n\tcase 13:this.$ = {};\r\n\tbreak;\r\n\tcase 14:this.$ = $$[$0-1];\r\n\tbreak;\r\n\tcase 15:this.$ = [$$[$0-2], $$[$0]];\r\n\tbreak;\r\n\tcase 16:this.$ = {}; this.$[$$[$0][0]] = $$[$0][1];\r\n\tbreak;\r\n\tcase 17:this.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1];\r\n\tbreak;\r\n\tcase 18:this.$ = [];\r\n\tbreak;\r\n\tcase 19:this.$ = $$[$0-1];\r\n\tbreak;\r\n\tcase 20:this.$ = [$$[$0]];\r\n\tbreak;\r\n\tcase 21:this.$ = $$[$0-2]; $$[$0-2].push($$[$0]);\r\n\tbreak;\r\n\t}\r\n\t},\r\n\ttable: [{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],\r\n\tdefaultActions: {16:[2,6]},\r\n\tparseError: function parseError(str, hash) {\r\n\t throw new Error(str);\r\n\t},\r\n\tparse: function parse(input) {\r\n\t var self = this,\r\n\t stack = [0],\r\n\t vstack = [null], // semantic value stack\r\n\t lstack = [], // location stack\r\n\t table = this.table,\r\n\t yytext = '',\r\n\t yylineno = 0,\r\n\t yyleng = 0,\r\n\t recovering = 0,\r\n\t TERROR = 2,\r\n\t EOF = 1;\r\n\r\n\t //this.reductionCount = this.shiftCount = 0;\r\n\r\n\t this.lexer.setInput(input);\r\n\t this.lexer.yy = this.yy;\r\n\t this.yy.lexer = this.lexer;\r\n\t if (typeof this.lexer.yylloc == 'undefined')\r\n\t this.lexer.yylloc = {};\r\n\t var yyloc = this.lexer.yylloc;\r\n\t lstack.push(yyloc);\r\n\r\n\t if (typeof this.yy.parseError === 'function')\r\n\t this.parseError = this.yy.parseError;\r\n\r\n\t function popStack (n) {\r\n\t stack.length = stack.length - 2*n;\r\n\t vstack.length = vstack.length - n;\r\n\t lstack.length = lstack.length - n;\r\n\t }\r\n\r\n\t function lex() {\r\n\t var token;\r\n\t token = self.lexer.lex() || 1; // $end = 1\r\n\t // if token isn't its numeric value, convert\r\n\t if (typeof token !== 'number') {\r\n\t token = self.symbols_[token] || token;\r\n\t }\r\n\t return token;\r\n\t }\r\n\r\n\t var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected;\r\n\t while (true) {\r\n\t // retreive state number from top of stack\r\n\t state = stack[stack.length-1];\r\n\r\n\t // use default actions if available\r\n\t if (this.defaultActions[state]) {\r\n\t action = this.defaultActions[state];\r\n\t } else {\r\n\t if (symbol == null)\r\n\t symbol = lex();\r\n\t // read action for current state and first input\r\n\t action = table[state] && table[state][symbol];\r\n\t }\r\n\r\n\t // handle parse error\r\n\t _handle_error:\r\n\t if (typeof action === 'undefined' || !action.length || !action[0]) {\r\n\r\n\t if (!recovering) {\r\n\t // Report error\r\n\t expected = [];\r\n\t for (p in table[state]) if (this.terminals_[p] && p > 2) {\r\n\t expected.push(\"'\"+this.terminals_[p]+\"'\");\r\n\t }\r\n\t var errStr = '';\r\n\t if (this.lexer.showPosition) {\r\n\t errStr = 'Parse error on line '+(yylineno+1)+\":\\n\"+this.lexer.showPosition()+\"\\nExpecting \"+expected.join(', ') + \", got '\" + this.terminals_[symbol]+ \"'\";\r\n\t } else {\r\n\t errStr = 'Parse error on line '+(yylineno+1)+\": Unexpected \" +\r\n\t (symbol == 1 /*EOF*/ ? \"end of input\" :\r\n\t (\"'\"+(this.terminals_[symbol] || symbol)+\"'\"));\r\n\t }\r\n\t this.parseError(errStr,\r\n\t {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\r\n\t }\r\n\r\n\t // just recovered from another error\r\n\t if (recovering == 3) {\r\n\t if (symbol == EOF) {\r\n\t throw new Error(errStr || 'Parsing halted.');\r\n\t }\r\n\r\n\t // discard current lookahead and grab another\r\n\t yyleng = this.lexer.yyleng;\r\n\t yytext = this.lexer.yytext;\r\n\t yylineno = this.lexer.yylineno;\r\n\t yyloc = this.lexer.yylloc;\r\n\t symbol = lex();\r\n\t }\r\n\r\n\t // try to recover from error\r\n\t while (1) {\r\n\t // check for error recovery rule in this state\r\n\t if ((TERROR.toString()) in table[state]) {\r\n\t break;\r\n\t }\r\n\t if (state == 0) {\r\n\t throw new Error(errStr || 'Parsing halted.');\r\n\t }\r\n\t popStack(1);\r\n\t state = stack[stack.length-1];\r\n\t }\r\n\r\n\t preErrorSymbol = symbol; // save the lookahead token\r\n\t symbol = TERROR; // insert generic error symbol as new lookahead\r\n\t state = stack[stack.length-1];\r\n\t action = table[state] && table[state][TERROR];\r\n\t recovering = 3; // allow 3 real symbols to be shifted before reporting a new error\r\n\t }\r\n\r\n\t // this shouldn't happen, unless resolve defaults are off\r\n\t if (action[0] instanceof Array && action.length > 1) {\r\n\t throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);\r\n\t }\r\n\r\n\t switch (action[0]) {\r\n\r\n\t case 1: // shift\r\n\t //this.shiftCount++;\r\n\r\n\t stack.push(symbol);\r\n\t vstack.push(this.lexer.yytext);\r\n\t lstack.push(this.lexer.yylloc);\r\n\t stack.push(action[1]); // push state\r\n\t symbol = null;\r\n\t if (!preErrorSymbol) { // normal execution/no error\r\n\t yyleng = this.lexer.yyleng;\r\n\t yytext = this.lexer.yytext;\r\n\t yylineno = this.lexer.yylineno;\r\n\t yyloc = this.lexer.yylloc;\r\n\t if (recovering > 0)\r\n\t recovering--;\r\n\t } else { // error just occurred, resume old lookahead f/ before error\r\n\t symbol = preErrorSymbol;\r\n\t preErrorSymbol = null;\r\n\t }\r\n\t break;\r\n\r\n\t case 2: // reduce\r\n\t //this.reductionCount++;\r\n\r\n\t len = this.productions_[action[1]][1];\r\n\r\n\t // perform semantic action\r\n\t yyval.$ = vstack[vstack.length-len]; // default to $$ = $1\r\n\t // default location, uses first token for firsts, last for lasts\r\n\t yyval._$ = {\r\n\t first_line: lstack[lstack.length-(len||1)].first_line,\r\n\t last_line: lstack[lstack.length-1].last_line,\r\n\t first_column: lstack[lstack.length-(len||1)].first_column,\r\n\t last_column: lstack[lstack.length-1].last_column\r\n\t };\r\n\t r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\r\n\r\n\t if (typeof r !== 'undefined') {\r\n\t return r;\r\n\t }\r\n\r\n\t // pop off stack\r\n\t if (len) {\r\n\t stack = stack.slice(0,-1*len*2);\r\n\t vstack = vstack.slice(0, -1*len);\r\n\t lstack = lstack.slice(0, -1*len);\r\n\t }\r\n\r\n\t stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce)\r\n\t vstack.push(yyval.$);\r\n\t lstack.push(yyval._$);\r\n\t // goto new state = table[STATE][NONTERMINAL]\r\n\t newState = table[stack[stack.length-2]][stack[stack.length-1]];\r\n\t stack.push(newState);\r\n\t break;\r\n\r\n\t case 3: // accept\r\n\t return true;\r\n\t }\r\n\r\n\t }\r\n\r\n\t return true;\r\n\t}};\r\n\t/* Jison generated lexer */\r\n\tvar lexer = (function(){\r\n\tvar lexer = ({EOF:1,\r\n\tparseError:function parseError(str, hash) {\r\n\t if (this.yy.parseError) {\r\n\t this.yy.parseError(str, hash);\r\n\t } else {\r\n\t throw new Error(str);\r\n\t }\r\n\t },\r\n\tsetInput:function (input) {\r\n\t this._input = input;\r\n\t this._more = this._less = this.done = false;\r\n\t this.yylineno = this.yyleng = 0;\r\n\t this.yytext = this.matched = this.match = '';\r\n\t this.conditionStack = ['INITIAL'];\r\n\t this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\r\n\t return this;\r\n\t },\r\n\tinput:function () {\r\n\t var ch = this._input[0];\r\n\t this.yytext+=ch;\r\n\t this.yyleng++;\r\n\t this.match+=ch;\r\n\t this.matched+=ch;\r\n\t var lines = ch.match(/\\n/);\r\n\t if (lines) this.yylineno++;\r\n\t this._input = this._input.slice(1);\r\n\t return ch;\r\n\t },\r\n\tunput:function (ch) {\r\n\t this._input = ch + this._input;\r\n\t return this;\r\n\t },\r\n\tmore:function () {\r\n\t this._more = true;\r\n\t return this;\r\n\t },\r\n\tless:function (n) {\r\n\t this._input = this.match.slice(n) + this._input;\r\n\t },\r\n\tpastInput:function () {\r\n\t var past = this.matched.substr(0, this.matched.length - this.match.length);\r\n\t return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\r\n\t },\r\n\tupcomingInput:function () {\r\n\t var next = this.match;\r\n\t if (next.length < 20) {\r\n\t next += this._input.substr(0, 20-next.length);\r\n\t }\r\n\t return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\r\n\t },\r\n\tshowPosition:function () {\r\n\t var pre = this.pastInput();\r\n\t var c = new Array(pre.length + 1).join(\"-\");\r\n\t return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\r\n\t },\r\n\tnext:function () {\r\n\t if (this.done) {\r\n\t return this.EOF;\r\n\t }\r\n\t if (!this._input) this.done = true;\r\n\r\n\t var token,\r\n\t match,\r\n\t tempMatch,\r\n\t index,\r\n\t col,\r\n\t lines;\r\n\t if (!this._more) {\r\n\t this.yytext = '';\r\n\t this.match = '';\r\n\t }\r\n\t var rules = this._currentRules();\r\n\t for (var i=0;i < rules.length; i++) {\r\n\t tempMatch = this._input.match(this.rules[rules[i]]);\r\n\t if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\r\n\t match = tempMatch;\r\n\t index = i;\r\n\t if (!this.options.flex) break;\r\n\t }\r\n\t }\r\n\t if (match) {\r\n\t lines = match[0].match(/\\n.*/g);\r\n\t if (lines) this.yylineno += lines.length;\r\n\t this.yylloc = {first_line: this.yylloc.last_line,\r\n\t last_line: this.yylineno+1,\r\n\t first_column: this.yylloc.last_column,\r\n\t last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length}\r\n\t this.yytext += match[0];\r\n\t this.match += match[0];\r\n\t this.yyleng = this.yytext.length;\r\n\t this._more = false;\r\n\t this._input = this._input.slice(match[0].length);\r\n\t this.matched += match[0];\r\n\t token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\r\n\t if (this.done && this._input) this.done = false;\r\n\t if (token) return token;\r\n\t else return;\r\n\t }\r\n\t if (this._input === \"\") {\r\n\t return this.EOF;\r\n\t } else {\r\n\t this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(), \r\n\t {text: \"\", token: null, line: this.yylineno});\r\n\t }\r\n\t },\r\n\tlex:function lex() {\r\n\t var r = this.next();\r\n\t if (typeof r !== 'undefined') {\r\n\t return r;\r\n\t } else {\r\n\t return this.lex();\r\n\t }\r\n\t },\r\n\tbegin:function begin(condition) {\r\n\t this.conditionStack.push(condition);\r\n\t },\r\n\tpopState:function popState() {\r\n\t return this.conditionStack.pop();\r\n\t },\r\n\t_currentRules:function _currentRules() {\r\n\t return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\r\n\t },\r\n\ttopState:function () {\r\n\t return this.conditionStack[this.conditionStack.length-2];\r\n\t },\r\n\tpushState:function begin(condition) {\r\n\t this.begin(condition);\r\n\t }});\r\n\tlexer.options = {};\r\n\tlexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\r\n\r\n\tvar YYSTATE=YY_START\r\n\tswitch($avoiding_name_collisions) {\r\n\tcase 0:/* skip whitespace */\r\n\tbreak;\r\n\tcase 1:return 6\r\n\tbreak;\r\n\tcase 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4\r\n\tbreak;\r\n\tcase 3:return 17\r\n\tbreak;\r\n\tcase 4:return 18\r\n\tbreak;\r\n\tcase 5:return 23\r\n\tbreak;\r\n\tcase 6:return 24\r\n\tbreak;\r\n\tcase 7:return 22\r\n\tbreak;\r\n\tcase 8:return 21\r\n\tbreak;\r\n\tcase 9:return 10\r\n\tbreak;\r\n\tcase 10:return 11\r\n\tbreak;\r\n\tcase 11:return 8\r\n\tbreak;\r\n\tcase 12:return 14\r\n\tbreak;\r\n\tcase 13:return 'INVALID'\r\n\tbreak;\r\n\t}\r\n\t};\r\n\tlexer.rules = [/^(?:\\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\\.[0-9]+)?([eE][-+]?[0-9]+)?\\b)/,/^(?:\"(?:\\\\[\\\\\"bfnrt/]|\\\\u[a-fA-F0-9]{4}|[^\\\\\\0-\\x09\\x0a-\\x1f\"])*\")/,/^(?:\\{)/,/^(?:\\})/,/^(?:\\[)/,/^(?:\\])/,/^(?:,)/,/^(?::)/,/^(?:true\\b)/,/^(?:false\\b)/,/^(?:null\\b)/,/^(?:$)/,/^(?:.)/];\r\n\tlexer.conditions = {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],\"inclusive\":true}};\r\n\r\n\r\n\t;\r\n\treturn lexer;})()\r\n\tparser.lexer = lexer;\r\n\treturn parser;\r\n\t})();\r\n\tif (true) {\r\n\t exports.parser = jsonlint;\r\n\t exports.parse = jsonlint.parse.bind(jsonlint);\r\n\t}\r\n\r\n/***/ },\r\n/* 56 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @constructor SearchBox\r\n\t * Create a search box in given HTML container\r\n\t * @param {JSONEditor} editor The JSON Editor to attach to\r\n\t * @param {Element} container HTML container element of where to\r\n\t * create the search box\r\n\t */\r\n\tfunction SearchBox (editor, container) {\r\n\t var searchBox = this;\r\n\r\n\t this.editor = editor;\r\n\t this.timeout = undefined;\r\n\t this.delay = 200; // ms\r\n\t this.lastText = undefined;\r\n\r\n\t this.dom = {};\r\n\t this.dom.container = container;\r\n\r\n\t var table = document.createElement('table');\r\n\t this.dom.table = table;\r\n\t table.className = 'jsoneditor-search';\r\n\t container.appendChild(table);\r\n\t var tbody = document.createElement('tbody');\r\n\t this.dom.tbody = tbody;\r\n\t table.appendChild(tbody);\r\n\t var tr = document.createElement('tr');\r\n\t tbody.appendChild(tr);\r\n\r\n\t var td = document.createElement('td');\r\n\t tr.appendChild(td);\r\n\t var results = document.createElement('div');\r\n\t this.dom.results = results;\r\n\t results.className = 'jsoneditor-results';\r\n\t td.appendChild(results);\r\n\r\n\t td = document.createElement('td');\r\n\t tr.appendChild(td);\r\n\t var divInput = document.createElement('div');\r\n\t this.dom.input = divInput;\r\n\t divInput.className = 'jsoneditor-frame';\r\n\t divInput.title = 'Search fields and values';\r\n\t td.appendChild(divInput);\r\n\r\n\t // table to contain the text input and search button\r\n\t var tableInput = document.createElement('table');\r\n\t divInput.appendChild(tableInput);\r\n\t var tbodySearch = document.createElement('tbody');\r\n\t tableInput.appendChild(tbodySearch);\r\n\t tr = document.createElement('tr');\r\n\t tbodySearch.appendChild(tr);\r\n\r\n\t var refreshSearch = document.createElement('button');\r\n\t refreshSearch.type = 'button';\r\n\t refreshSearch.className = 'jsoneditor-refresh';\r\n\t td = document.createElement('td');\r\n\t td.appendChild(refreshSearch);\r\n\t tr.appendChild(td);\r\n\r\n\t var search = document.createElement('input');\r\n\t // search.type = 'button';\r\n\t this.dom.search = search;\r\n\t search.oninput = function (event) {\r\n\t searchBox._onDelayedSearch(event);\r\n\t };\r\n\t search.onchange = function (event) { // For IE 9\r\n\t searchBox._onSearch();\r\n\t };\r\n\t search.onkeydown = function (event) {\r\n\t searchBox._onKeyDown(event);\r\n\t };\r\n\t search.onkeyup = function (event) {\r\n\t searchBox._onKeyUp(event);\r\n\t };\r\n\t refreshSearch.onclick = function (event) {\r\n\t search.select();\r\n\t };\r\n\r\n\t // TODO: ESC in FF restores the last input, is a FF bug, https://bugzilla.mozilla.org/show_bug.cgi?id=598819\r\n\t td = document.createElement('td');\r\n\t td.appendChild(search);\r\n\t tr.appendChild(td);\r\n\r\n\t var searchNext = document.createElement('button');\r\n\t searchNext.type = 'button';\r\n\t searchNext.title = 'Next result (Enter)';\r\n\t searchNext.className = 'jsoneditor-next';\r\n\t searchNext.onclick = function () {\r\n\t searchBox.next();\r\n\t };\r\n\t td = document.createElement('td');\r\n\t td.appendChild(searchNext);\r\n\t tr.appendChild(td);\r\n\r\n\t var searchPrevious = document.createElement('button');\r\n\t searchPrevious.type = 'button';\r\n\t searchPrevious.title = 'Previous result (Shift+Enter)';\r\n\t searchPrevious.className = 'jsoneditor-previous';\r\n\t searchPrevious.onclick = function () {\r\n\t searchBox.previous();\r\n\t };\r\n\t td = document.createElement('td');\r\n\t td.appendChild(searchPrevious);\r\n\t tr.appendChild(td);\r\n\t}\r\n\r\n\t/**\r\n\t * Go to the next search result\r\n\t * @param {boolean} [focus] If true, focus will be set to the next result\r\n\t * focus is false by default.\r\n\t */\r\n\tSearchBox.prototype.next = function(focus) {\r\n\t if (this.results != undefined) {\r\n\t var index = (this.resultIndex != undefined) ? this.resultIndex + 1 : 0;\r\n\t if (index > this.results.length - 1) {\r\n\t index = 0;\r\n\t }\r\n\t this._setActiveResult(index, focus);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Go to the prevous search result\r\n\t * @param {boolean} [focus] If true, focus will be set to the next result\r\n\t * focus is false by default.\r\n\t */\r\n\tSearchBox.prototype.previous = function(focus) {\r\n\t if (this.results != undefined) {\r\n\t var max = this.results.length - 1;\r\n\t var index = (this.resultIndex != undefined) ? this.resultIndex - 1 : max;\r\n\t if (index < 0) {\r\n\t index = max;\r\n\t }\r\n\t this._setActiveResult(index, focus);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Set new value for the current active result\r\n\t * @param {Number} index\r\n\t * @param {boolean} [focus] If true, focus will be set to the next result.\r\n\t * focus is false by default.\r\n\t * @private\r\n\t */\r\n\tSearchBox.prototype._setActiveResult = function(index, focus) {\r\n\t // de-activate current active result\r\n\t if (this.activeResult) {\r\n\t var prevNode = this.activeResult.node;\r\n\t var prevElem = this.activeResult.elem;\r\n\t if (prevElem == 'field') {\r\n\t delete prevNode.searchFieldActive;\r\n\t }\r\n\t else {\r\n\t delete prevNode.searchValueActive;\r\n\t }\r\n\t prevNode.updateDom();\r\n\t }\r\n\r\n\t if (!this.results || !this.results[index]) {\r\n\t // out of range, set to undefined\r\n\t this.resultIndex = undefined;\r\n\t this.activeResult = undefined;\r\n\t return;\r\n\t }\r\n\r\n\t this.resultIndex = index;\r\n\r\n\t // set new node active\r\n\t var node = this.results[this.resultIndex].node;\r\n\t var elem = this.results[this.resultIndex].elem;\r\n\t if (elem == 'field') {\r\n\t node.searchFieldActive = true;\r\n\t }\r\n\t else {\r\n\t node.searchValueActive = true;\r\n\t }\r\n\t this.activeResult = this.results[this.resultIndex];\r\n\t node.updateDom();\r\n\r\n\t // TODO: not so nice that the focus is only set after the animation is finished\r\n\t node.scrollTo(function () {\r\n\t if (focus) {\r\n\t node.focus(elem);\r\n\t }\r\n\t });\r\n\t};\r\n\r\n\t/**\r\n\t * Cancel any running onDelayedSearch.\r\n\t * @private\r\n\t */\r\n\tSearchBox.prototype._clearDelay = function() {\r\n\t if (this.timeout != undefined) {\r\n\t clearTimeout(this.timeout);\r\n\t delete this.timeout;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Start a timer to execute a search after a short delay.\r\n\t * Used for reducing the number of searches while typing.\r\n\t * @param {Event} event\r\n\t * @private\r\n\t */\r\n\tSearchBox.prototype._onDelayedSearch = function (event) {\r\n\t // execute the search after a short delay (reduces the number of\r\n\t // search actions while typing in the search text box)\r\n\t this._clearDelay();\r\n\t var searchBox = this;\r\n\t this.timeout = setTimeout(function (event) {\r\n\t searchBox._onSearch();\r\n\t },\r\n\t this.delay);\r\n\t};\r\n\r\n\t/**\r\n\t * Handle onSearch event\r\n\t * @param {boolean} [forceSearch] If true, search will be executed again even\r\n\t * when the search text is not changed.\r\n\t * Default is false.\r\n\t * @private\r\n\t */\r\n\tSearchBox.prototype._onSearch = function (forceSearch) {\r\n\t this._clearDelay();\r\n\r\n\t var value = this.dom.search.value;\r\n\t var text = (value.length > 0) ? value : undefined;\r\n\t if (text != this.lastText || forceSearch) {\r\n\t // only search again when changed\r\n\t this.lastText = text;\r\n\t this.results = this.editor.search(text);\r\n\t this._setActiveResult(undefined);\r\n\r\n\t // display search results\r\n\t if (text != undefined) {\r\n\t var resultCount = this.results.length;\r\n\t switch (resultCount) {\r\n\t case 0: this.dom.results.innerHTML = 'no results'; break;\r\n\t case 1: this.dom.results.innerHTML = '1 result'; break;\r\n\t default: this.dom.results.innerHTML = resultCount + ' results'; break;\r\n\t }\r\n\t }\r\n\t else {\r\n\t this.dom.results.innerHTML = '';\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Handle onKeyDown event in the input box\r\n\t * @param {Event} event\r\n\t * @private\r\n\t */\r\n\tSearchBox.prototype._onKeyDown = function (event) {\r\n\t var keynum = event.which;\r\n\t if (keynum == 27) { // ESC\r\n\t this.dom.search.value = ''; // clear search\r\n\t this._onSearch();\r\n\t event.preventDefault();\r\n\t event.stopPropagation();\r\n\t }\r\n\t else if (keynum == 13) { // Enter\r\n\t if (event.ctrlKey) {\r\n\t // force to search again\r\n\t this._onSearch(true);\r\n\t }\r\n\t else if (event.shiftKey) {\r\n\t // move to the previous search result\r\n\t this.previous();\r\n\t }\r\n\t else {\r\n\t // move to the next search result\r\n\t this.next();\r\n\t }\r\n\t event.preventDefault();\r\n\t event.stopPropagation();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Handle onKeyUp event in the input box\r\n\t * @param {Event} event\r\n\t * @private\r\n\t */\r\n\tSearchBox.prototype._onKeyUp = function (event) {\r\n\t var keynum = event.keyCode;\r\n\t if (keynum != 27 && keynum != 13) { // !show and !Enter\r\n\t this._onDelayedSearch(event); // For IE 9\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Clear the search results\r\n\t */\r\n\tSearchBox.prototype.clear = function () {\r\n\t this.dom.search.value = '';\r\n\t this._onSearch();\r\n\t};\r\n\r\n\t/**\r\n\t * Destroy the search box\r\n\t */\r\n\tSearchBox.prototype.destroy = function () {\r\n\t this.editor = null;\r\n\t this.dom.container.removeChild(this.dom.table);\r\n\t this.dom = null;\r\n\r\n\t this.results = null;\r\n\t this.activeResult = null;\r\n\r\n\t this._clearDelay();\r\n\r\n\t};\r\n\r\n\tmodule.exports = SearchBox;\r\n\r\n\r\n/***/ },\r\n/* 57 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar util = __webpack_require__(54);\r\n\r\n\t/**\r\n\t * A context menu\r\n\t * @param {Object[]} items Array containing the menu structure\r\n\t * TODO: describe structure\r\n\t * @param {Object} [options] Object with options. Available options:\r\n\t * {function} close Callback called when the\r\n\t * context menu is being closed.\r\n\t * @constructor\r\n\t */\r\n\tfunction ContextMenu (items, options) {\r\n\t this.dom = {};\r\n\r\n\t var me = this;\r\n\t var dom = this.dom;\r\n\t this.anchor = undefined;\r\n\t this.items = items;\r\n\t this.eventListeners = {};\r\n\t this.selection = undefined; // holds the selection before the menu was opened\r\n\t this.onClose = options ? options.close : undefined;\r\n\r\n\t // create root element\r\n\t var root = document.createElement('div');\r\n\t root.className = 'jsoneditor-contextmenu-root';\r\n\t dom.root = root;\r\n\r\n\t // create a container element\r\n\t var menu = document.createElement('div');\r\n\t menu.className = 'jsoneditor-contextmenu';\r\n\t dom.menu = menu;\r\n\t root.appendChild(menu);\r\n\r\n\t // create a list to hold the menu items\r\n\t var list = document.createElement('ul');\r\n\t list.className = 'jsoneditor-menu';\r\n\t menu.appendChild(list);\r\n\t dom.list = list;\r\n\t dom.items = []; // list with all buttons\r\n\r\n\t // create a (non-visible) button to set the focus to the menu\r\n\t var focusButton = document.createElement('button');\r\n\t focusButton.type = 'button';\r\n\t dom.focusButton = focusButton;\r\n\t var li = document.createElement('li');\r\n\t li.style.overflow = 'hidden';\r\n\t li.style.height = '0';\r\n\t li.appendChild(focusButton);\r\n\t list.appendChild(li);\r\n\r\n\t function createMenuItems (list, domItems, items) {\r\n\t items.forEach(function (item) {\r\n\t if (item.type == 'separator') {\r\n\t // create a separator\r\n\t var separator = document.createElement('div');\r\n\t separator.className = 'jsoneditor-separator';\r\n\t li = document.createElement('li');\r\n\t li.appendChild(separator);\r\n\t list.appendChild(li);\r\n\t }\r\n\t else {\r\n\t var domItem = {};\r\n\r\n\t // create a menu item\r\n\t var li = document.createElement('li');\r\n\t list.appendChild(li);\r\n\r\n\t // create a button in the menu item\r\n\t var button = document.createElement('button');\r\n\t button.type = 'button';\r\n\t button.className = item.className;\r\n\t domItem.button = button;\r\n\t if (item.title) {\r\n\t button.title = item.title;\r\n\t }\r\n\t if (item.click) {\r\n\t button.onclick = function (event) {\r\n\t event.preventDefault();\r\n\t me.hide();\r\n\t item.click();\r\n\t };\r\n\t }\r\n\t li.appendChild(button);\r\n\r\n\t // create the contents of the button\r\n\t if (item.submenu) {\r\n\t // add the icon to the button\r\n\t var divIcon = document.createElement('div');\r\n\t divIcon.className = 'jsoneditor-icon';\r\n\t button.appendChild(divIcon);\r\n\t button.appendChild(document.createTextNode(item.text));\r\n\r\n\t var buttonSubmenu;\r\n\t if (item.click) {\r\n\t // submenu and a button with a click handler\r\n\t button.className += ' jsoneditor-default';\r\n\r\n\t var buttonExpand = document.createElement('button');\r\n\t buttonExpand.type = 'button';\r\n\t domItem.buttonExpand = buttonExpand;\r\n\t buttonExpand.className = 'jsoneditor-expand';\r\n\t buttonExpand.innerHTML = '
';\r\n\t li.appendChild(buttonExpand);\r\n\t if (item.submenuTitle) {\r\n\t buttonExpand.title = item.submenuTitle;\r\n\t }\r\n\r\n\t buttonSubmenu = buttonExpand;\r\n\t }\r\n\t else {\r\n\t // submenu and a button without a click handler\r\n\t var divExpand = document.createElement('div');\r\n\t divExpand.className = 'jsoneditor-expand';\r\n\t button.appendChild(divExpand);\r\n\r\n\t buttonSubmenu = button;\r\n\t }\r\n\r\n\t // attach a handler to expand/collapse the submenu\r\n\t buttonSubmenu.onclick = function (event) {\r\n\t event.preventDefault();\r\n\t me._onExpandItem(domItem);\r\n\t buttonSubmenu.focus();\r\n\t };\r\n\r\n\t // create the submenu\r\n\t var domSubItems = [];\r\n\t domItem.subItems = domSubItems;\r\n\t var ul = document.createElement('ul');\r\n\t domItem.ul = ul;\r\n\t ul.className = 'jsoneditor-menu';\r\n\t ul.style.height = '0';\r\n\t li.appendChild(ul);\r\n\t createMenuItems(ul, domSubItems, item.submenu);\r\n\t }\r\n\t else {\r\n\t // no submenu, just a button with clickhandler\r\n\t button.innerHTML = '' + item.text;\r\n\t }\r\n\r\n\t domItems.push(domItem);\r\n\t }\r\n\t });\r\n\t }\r\n\t createMenuItems(list, this.dom.items, items);\r\n\r\n\t // TODO: when the editor is small, show the submenu on the right instead of inline?\r\n\r\n\t // calculate the max height of the menu with one submenu expanded\r\n\t this.maxHeight = 0; // height in pixels\r\n\t items.forEach(function (item) {\r\n\t var height = (items.length + (item.submenu ? item.submenu.length : 0)) * 24;\r\n\t me.maxHeight = Math.max(me.maxHeight, height);\r\n\t });\r\n\t}\r\n\r\n\t/**\r\n\t * Get the currently visible buttons\r\n\t * @return {Array.} buttons\r\n\t * @private\r\n\t */\r\n\tContextMenu.prototype._getVisibleButtons = function () {\r\n\t var buttons = [];\r\n\t var me = this;\r\n\t this.dom.items.forEach(function (item) {\r\n\t buttons.push(item.button);\r\n\t if (item.buttonExpand) {\r\n\t buttons.push(item.buttonExpand);\r\n\t }\r\n\t if (item.subItems && item == me.expandedItem) {\r\n\t item.subItems.forEach(function (subItem) {\r\n\t buttons.push(subItem.button);\r\n\t if (subItem.buttonExpand) {\r\n\t buttons.push(subItem.buttonExpand);\r\n\t }\r\n\t // TODO: change to fully recursive method\r\n\t });\r\n\t }\r\n\t });\r\n\r\n\t return buttons;\r\n\t};\r\n\r\n\t// currently displayed context menu, a singleton. We may only have one visible context menu\r\n\tContextMenu.visibleMenu = undefined;\r\n\r\n\t/**\r\n\t * Attach the menu to an anchor\r\n\t * @param {HTMLElement} anchor Anchor where the menu will be attached\r\n\t * as sibling.\r\n\t * @param {HTMLElement} [contentWindow] The DIV with with the (scrollable) contents\r\n\t */\r\n\tContextMenu.prototype.show = function (anchor, contentWindow) {\r\n\t this.hide();\r\n\r\n\t // determine whether to display the menu below or above the anchor\r\n\t var showBelow = true;\r\n\t if (contentWindow) {\r\n\t var anchorRect = anchor.getBoundingClientRect();\r\n\t var contentRect = contentWindow.getBoundingClientRect();\r\n\r\n\t if (anchorRect.bottom + this.maxHeight < contentRect.bottom) {\r\n\t // fits below -> show below\r\n\t }\r\n\t else if (anchorRect.top - this.maxHeight > contentRect.top) {\r\n\t // fits above -> show above\r\n\t showBelow = false;\r\n\t }\r\n\t else {\r\n\t // doesn't fit above nor below -> show below\r\n\t }\r\n\t }\r\n\r\n\t // position the menu\r\n\t if (showBelow) {\r\n\t // display the menu below the anchor\r\n\t var anchorHeight = anchor.offsetHeight;\r\n\t this.dom.menu.style.left = '0px';\r\n\t this.dom.menu.style.top = anchorHeight + 'px';\r\n\t this.dom.menu.style.bottom = '';\r\n\t }\r\n\t else {\r\n\t // display the menu above the anchor\r\n\t this.dom.menu.style.left = '0px';\r\n\t this.dom.menu.style.top = '';\r\n\t this.dom.menu.style.bottom = '0px';\r\n\t }\r\n\r\n\t // attach the menu to the parent of the anchor\r\n\t var parent = anchor.parentNode;\r\n\t parent.insertBefore(this.dom.root, parent.firstChild);\r\n\r\n\t // create and attach event listeners\r\n\t var me = this;\r\n\t var list = this.dom.list;\r\n\t this.eventListeners.mousedown = util.addEventListener(window, 'mousedown', function (event) {\r\n\t // hide menu on click outside of the menu\r\n\t var target = event.target;\r\n\t if ((target != list) && !me._isChildOf(target, list)) {\r\n\t me.hide();\r\n\t event.stopPropagation();\r\n\t event.preventDefault();\r\n\t }\r\n\t });\r\n\t this.eventListeners.keydown = util.addEventListener(window, 'keydown', function (event) {\r\n\t me._onKeyDown(event);\r\n\t });\r\n\r\n\t // move focus to the first button in the context menu\r\n\t this.selection = util.getSelection();\r\n\t this.anchor = anchor;\r\n\t setTimeout(function () {\r\n\t me.dom.focusButton.focus();\r\n\t }, 0);\r\n\r\n\t if (ContextMenu.visibleMenu) {\r\n\t ContextMenu.visibleMenu.hide();\r\n\t }\r\n\t ContextMenu.visibleMenu = this;\r\n\t};\r\n\r\n\t/**\r\n\t * Hide the context menu if visible\r\n\t */\r\n\tContextMenu.prototype.hide = function () {\r\n\t // remove the menu from the DOM\r\n\t if (this.dom.root.parentNode) {\r\n\t this.dom.root.parentNode.removeChild(this.dom.root);\r\n\t if (this.onClose) {\r\n\t this.onClose();\r\n\t }\r\n\t }\r\n\r\n\t // remove all event listeners\r\n\t // all event listeners are supposed to be attached to document.\r\n\t for (var name in this.eventListeners) {\r\n\t if (this.eventListeners.hasOwnProperty(name)) {\r\n\t var fn = this.eventListeners[name];\r\n\t if (fn) {\r\n\t util.removeEventListener(window, name, fn);\r\n\t }\r\n\t delete this.eventListeners[name];\r\n\t }\r\n\t }\r\n\r\n\t if (ContextMenu.visibleMenu == this) {\r\n\t ContextMenu.visibleMenu = undefined;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Expand a submenu\r\n\t * Any currently expanded submenu will be hided.\r\n\t * @param {Object} domItem\r\n\t * @private\r\n\t */\r\n\tContextMenu.prototype._onExpandItem = function (domItem) {\r\n\t var me = this;\r\n\t var alreadyVisible = (domItem == this.expandedItem);\r\n\r\n\t // hide the currently visible submenu\r\n\t var expandedItem = this.expandedItem;\r\n\t if (expandedItem) {\r\n\t //var ul = expandedItem.ul;\r\n\t expandedItem.ul.style.height = '0';\r\n\t expandedItem.ul.style.padding = '';\r\n\t setTimeout(function () {\r\n\t if (me.expandedItem != expandedItem) {\r\n\t expandedItem.ul.style.display = '';\r\n\t util.removeClassName(expandedItem.ul.parentNode, 'jsoneditor-selected');\r\n\t }\r\n\t }, 300); // timeout duration must match the css transition duration\r\n\t this.expandedItem = undefined;\r\n\t }\r\n\r\n\t if (!alreadyVisible) {\r\n\t var ul = domItem.ul;\r\n\t ul.style.display = 'block';\r\n\t var height = ul.clientHeight; // force a reflow in Firefox\r\n\t setTimeout(function () {\r\n\t if (me.expandedItem == domItem) {\r\n\t ul.style.height = (ul.childNodes.length * 24) + 'px';\r\n\t ul.style.padding = '5px 10px';\r\n\t }\r\n\t }, 0);\r\n\t util.addClassName(ul.parentNode, 'jsoneditor-selected');\r\n\t this.expandedItem = domItem;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Handle onkeydown event\r\n\t * @param {Event} event\r\n\t * @private\r\n\t */\r\n\tContextMenu.prototype._onKeyDown = function (event) {\r\n\t var target = event.target;\r\n\t var keynum = event.which;\r\n\t var handled = false;\r\n\t var buttons, targetIndex, prevButton, nextButton;\r\n\r\n\t if (keynum == 27) { // ESC\r\n\t // hide the menu on ESC key\r\n\r\n\t // restore previous selection and focus\r\n\t if (this.selection) {\r\n\t util.setSelection(this.selection);\r\n\t }\r\n\t if (this.anchor) {\r\n\t this.anchor.focus();\r\n\t }\r\n\r\n\t this.hide();\r\n\r\n\t handled = true;\r\n\t }\r\n\t else if (keynum == 9) { // Tab\r\n\t if (!event.shiftKey) { // Tab\r\n\t buttons = this._getVisibleButtons();\r\n\t targetIndex = buttons.indexOf(target);\r\n\t if (targetIndex == buttons.length - 1) {\r\n\t // move to first button\r\n\t buttons[0].focus();\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else { // Shift+Tab\r\n\t buttons = this._getVisibleButtons();\r\n\t targetIndex = buttons.indexOf(target);\r\n\t if (targetIndex == 0) {\r\n\t // move to last button\r\n\t buttons[buttons.length - 1].focus();\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t }\r\n\t else if (keynum == 37) { // Arrow Left\r\n\t if (target.className == 'jsoneditor-expand') {\r\n\t buttons = this._getVisibleButtons();\r\n\t targetIndex = buttons.indexOf(target);\r\n\t prevButton = buttons[targetIndex - 1];\r\n\t if (prevButton) {\r\n\t prevButton.focus();\r\n\t }\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (keynum == 38) { // Arrow Up\r\n\t buttons = this._getVisibleButtons();\r\n\t targetIndex = buttons.indexOf(target);\r\n\t prevButton = buttons[targetIndex - 1];\r\n\t if (prevButton && prevButton.className == 'jsoneditor-expand') {\r\n\t // skip expand button\r\n\t prevButton = buttons[targetIndex - 2];\r\n\t }\r\n\t if (!prevButton) {\r\n\t // move to last button\r\n\t prevButton = buttons[buttons.length - 1];\r\n\t }\r\n\t if (prevButton) {\r\n\t prevButton.focus();\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (keynum == 39) { // Arrow Right\r\n\t buttons = this._getVisibleButtons();\r\n\t targetIndex = buttons.indexOf(target);\r\n\t nextButton = buttons[targetIndex + 1];\r\n\t if (nextButton && nextButton.className == 'jsoneditor-expand') {\r\n\t nextButton.focus();\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (keynum == 40) { // Arrow Down\r\n\t buttons = this._getVisibleButtons();\r\n\t targetIndex = buttons.indexOf(target);\r\n\t nextButton = buttons[targetIndex + 1];\r\n\t if (nextButton && nextButton.className == 'jsoneditor-expand') {\r\n\t // skip expand button\r\n\t nextButton = buttons[targetIndex + 2];\r\n\t }\r\n\t if (!nextButton) {\r\n\t // move to first button\r\n\t nextButton = buttons[0];\r\n\t }\r\n\t if (nextButton) {\r\n\t nextButton.focus();\r\n\t handled = true;\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t // TODO: arrow left and right\r\n\r\n\t if (handled) {\r\n\t event.stopPropagation();\r\n\t event.preventDefault();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Test if an element is a child of a parent element.\r\n\t * @param {Element} child\r\n\t * @param {Element} parent\r\n\t * @return {boolean} isChild\r\n\t */\r\n\tContextMenu.prototype._isChildOf = function (child, parent) {\r\n\t var e = child.parentNode;\r\n\t while (e) {\r\n\t if (e == parent) {\r\n\t return true;\r\n\t }\r\n\t e = e.parentNode;\r\n\t }\r\n\r\n\t return false;\r\n\t};\r\n\r\n\tmodule.exports = ContextMenu;\r\n\r\n\r\n/***/ },\r\n/* 58 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar naturalSort = __webpack_require__(59);\r\n\tvar ContextMenu = __webpack_require__(57);\r\n\tvar appendNodeFactory = __webpack_require__(60);\r\n\tvar util = __webpack_require__(54);\r\n\r\n\t/**\r\n\t * @constructor Node\r\n\t * Create a new Node\r\n\t * @param {./treemode} editor\r\n\t * @param {Object} [params] Can contain parameters:\r\n\t * {string} field\r\n\t * {boolean} fieldEditable\r\n\t * {*} value\r\n\t * {String} type Can have values 'auto', 'array',\r\n\t * 'object', or 'string'.\r\n\t */\r\n\tfunction Node (editor, params) {\r\n\t /** @type {./treemode} */\r\n\t this.editor = editor;\r\n\t this.dom = {};\r\n\t this.expanded = false;\r\n\r\n\t if(params && (params instanceof Object)) {\r\n\t this.setField(params.field, params.fieldEditable);\r\n\t this.setValue(params.value, params.type);\r\n\t }\r\n\t else {\r\n\t this.setField('');\r\n\t this.setValue(null);\r\n\t }\r\n\r\n\t this._debouncedOnChangeValue = util.debounce(this._onChangeValue.bind(this), Node.prototype.DEBOUNCE_INTERVAL);\r\n\t this._debouncedOnChangeField = util.debounce(this._onChangeField.bind(this), Node.prototype.DEBOUNCE_INTERVAL);\r\n\t}\r\n\r\n\t// debounce interval for keyboard input in milliseconds\r\n\tNode.prototype.DEBOUNCE_INTERVAL = 150;\r\n\r\n\t/**\r\n\t * Determine whether the field and/or value of this node are editable\r\n\t * @private\r\n\t */\r\n\tNode.prototype._updateEditability = function () {\r\n\t this.editable = {\r\n\t field: true,\r\n\t value: true\r\n\t };\r\n\r\n\t if (this.editor) {\r\n\t this.editable.field = this.editor.options.mode === 'tree';\r\n\t this.editable.value = this.editor.options.mode !== 'view';\r\n\r\n\t if ((this.editor.options.mode === 'tree' || this.editor.options.mode === 'form') &&\r\n\t (typeof this.editor.options.onEditable === 'function')) {\r\n\t var editable = this.editor.options.onEditable({\r\n\t field: this.field,\r\n\t value: this.value,\r\n\t path: this.getPath()\r\n\t });\r\n\r\n\t if (typeof editable === 'boolean') {\r\n\t this.editable.field = editable;\r\n\t this.editable.value = editable;\r\n\t }\r\n\t else {\r\n\t if (typeof editable.field === 'boolean') this.editable.field = editable.field;\r\n\t if (typeof editable.value === 'boolean') this.editable.value = editable.value;\r\n\t }\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the path of this node\r\n\t * @return {String[]} Array containing the path to this node\r\n\t */\r\n\tNode.prototype.getPath = function () {\r\n\t var node = this;\r\n\t var path = [];\r\n\t while (node) {\r\n\t var field = !node.parent\r\n\t ? undefined // do not add an (optional) field name of the root node\r\n\t : (node.parent.type != 'array')\r\n\t ? node.field\r\n\t : node.index;\r\n\r\n\t if (field !== undefined) {\r\n\t path.unshift(field);\r\n\t }\r\n\t node = node.parent;\r\n\t }\r\n\t return path;\r\n\t};\r\n\r\n\t/**\r\n\t * Find a Node from a JSON path like '.items[3].name'\r\n\t * @param {string} jsonPath\r\n\t * @return {Node | null} Returns the Node when found, returns null if not found\r\n\t */\r\n\tNode.prototype.findNode = function (jsonPath) {\r\n\t var path = util.parsePath(jsonPath);\r\n\t var node = this;\r\n\t while (node && path.length > 0) {\r\n\t var prop = path.shift();\r\n\t if (typeof prop === 'number') {\r\n\t if (node.type !== 'array') {\r\n\t throw new Error('Cannot get child node at index ' + prop + ': node is no array');\r\n\t }\r\n\t node = node.childs[prop];\r\n\t }\r\n\t else { // string\r\n\t if (node.type !== 'object') {\r\n\t throw new Error('Cannot get child node ' + prop + ': node is no object');\r\n\t }\r\n\t node = node.childs.filter(function (child) {\r\n\t return child.field === prop;\r\n\t })[0];\r\n\t }\r\n\t }\r\n\r\n\t return node;\r\n\t};\r\n\r\n\t/**\r\n\t * Find all parents of this node. The parents are ordered from root node towards\r\n\t * the original node.\r\n\t * @return {Array.}\r\n\t */\r\n\tNode.prototype.findParents = function () {\r\n\t var parents = [];\r\n\t var parent = this.parent;\r\n\t while (parent) {\r\n\t parents.unshift(parent);\r\n\t parent = parent.parent;\r\n\t }\r\n\t return parents;\r\n\t};\r\n\r\n\t/**\r\n\t *\r\n\t * @param {{dataPath: string, keyword: string, message: string, params: Object, schemaPath: string} | null} error\r\n\t * @param {Node} [child] When this is the error of a parent node, pointing\r\n\t * to an invalid child node, the child node itself\r\n\t * can be provided. If provided, clicking the error\r\n\t * icon will set focus to the invalid child node.\r\n\t */\r\n\tNode.prototype.setError = function (error, child) {\r\n\t // ensure the dom exists\r\n\t this.getDom();\r\n\r\n\t this.error = error;\r\n\t var tdError = this.dom.tdError;\r\n\t if (error) {\r\n\t if (!tdError) {\r\n\t tdError = document.createElement('td');\r\n\t this.dom.tdError = tdError;\r\n\t this.dom.tdValue.parentNode.appendChild(tdError);\r\n\t }\r\n\r\n\t var popover = document.createElement('div');\r\n\t popover.className = 'jsoneditor-popover jsoneditor-right';\r\n\t popover.appendChild(document.createTextNode(error.message));\r\n\r\n\t var button = document.createElement('button');\r\n\t button.type = 'button';\r\n\t button.className = 'jsoneditor-schema-error';\r\n\t button.appendChild(popover);\r\n\r\n\t // update the direction of the popover\r\n\t button.onmouseover = button.onfocus = function updateDirection() {\r\n\t var directions = ['right', 'above', 'below', 'left'];\r\n\t for (var i = 0; i < directions.length; i++) {\r\n\t var direction = directions[i];\r\n\t popover.className = 'jsoneditor-popover jsoneditor-' + direction;\r\n\r\n\t var contentRect = this.editor.content.getBoundingClientRect();\r\n\t var popoverRect = popover.getBoundingClientRect();\r\n\t var margin = 20; // account for a scroll bar\r\n\t var fit = util.insideRect(contentRect, popoverRect, margin);\r\n\r\n\t if (fit) {\r\n\t break;\r\n\t }\r\n\t }\r\n\t }.bind(this);\r\n\r\n\t // when clicking the error icon, expand all nodes towards the invalid\r\n\t // child node, and set focus to the child node\r\n\t if (child) {\r\n\t button.onclick = function showInvalidNode() {\r\n\t child.findParents().forEach(function (parent) {\r\n\t parent.expand(false);\r\n\t });\r\n\r\n\t child.scrollTo(function () {\r\n\t child.focus();\r\n\t });\r\n\t };\r\n\t }\r\n\r\n\t // apply the error message to the node\r\n\t while (tdError.firstChild) {\r\n\t tdError.removeChild(tdError.firstChild);\r\n\t }\r\n\t tdError.appendChild(button);\r\n\t }\r\n\t else {\r\n\t if (tdError) {\r\n\t this.dom.tdError.parentNode.removeChild(this.dom.tdError);\r\n\t delete this.dom.tdError;\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the index of this node: the index in the list of childs where this\r\n\t * node is part of\r\n\t * @return {number} Returns the index, or -1 if this is the root node\r\n\t */\r\n\tNode.prototype.getIndex = function () {\r\n\t return this.parent ? this.parent.childs.indexOf(this) : -1;\r\n\t};\r\n\r\n\t/**\r\n\t * Set parent node\r\n\t * @param {Node} parent\r\n\t */\r\n\tNode.prototype.setParent = function(parent) {\r\n\t this.parent = parent;\r\n\t};\r\n\r\n\t/**\r\n\t * Set field\r\n\t * @param {String} field\r\n\t * @param {boolean} [fieldEditable]\r\n\t */\r\n\tNode.prototype.setField = function(field, fieldEditable) {\r\n\t this.field = field;\r\n\t this.previousField = field;\r\n\t this.fieldEditable = (fieldEditable === true);\r\n\t};\r\n\r\n\t/**\r\n\t * Get field\r\n\t * @return {String}\r\n\t */\r\n\tNode.prototype.getField = function() {\r\n\t if (this.field === undefined) {\r\n\t this._getDomField();\r\n\t }\r\n\r\n\t return this.field;\r\n\t};\r\n\r\n\t/**\r\n\t * Set value. Value is a JSON structure or an element String, Boolean, etc.\r\n\t * @param {*} value\r\n\t * @param {String} [type] Specify the type of the value. Can be 'auto',\r\n\t * 'array', 'object', or 'string'\r\n\t */\r\n\tNode.prototype.setValue = function(value, type) {\r\n\t var childValue, child;\r\n\r\n\t // first clear all current childs (if any)\r\n\t var childs = this.childs;\r\n\t if (childs) {\r\n\t while (childs.length) {\r\n\t this.removeChild(childs[0]);\r\n\t }\r\n\t }\r\n\r\n\t // TODO: remove the DOM of this Node\r\n\r\n\t this.type = this._getType(value);\r\n\r\n\t // check if type corresponds with the provided type\r\n\t if (type && type != this.type) {\r\n\t if (type == 'string' && this.type == 'auto') {\r\n\t this.type = type;\r\n\t }\r\n\t else {\r\n\t throw new Error('Type mismatch: ' +\r\n\t 'cannot cast value of type \"' + this.type +\r\n\t ' to the specified type \"' + type + '\"');\r\n\t }\r\n\t }\r\n\r\n\t if (this.type == 'array') {\r\n\t // array\r\n\t this.childs = [];\r\n\t for (var i = 0, iMax = value.length; i < iMax; i++) {\r\n\t childValue = value[i];\r\n\t if (childValue !== undefined && !(childValue instanceof Function)) {\r\n\t // ignore undefined and functions\r\n\t child = new Node(this.editor, {\r\n\t value: childValue\r\n\t });\r\n\t this.appendChild(child);\r\n\t }\r\n\t }\r\n\t this.value = '';\r\n\t }\r\n\t else if (this.type == 'object') {\r\n\t // object\r\n\t this.childs = [];\r\n\t for (var childField in value) {\r\n\t if (value.hasOwnProperty(childField)) {\r\n\t childValue = value[childField];\r\n\t if (childValue !== undefined && !(childValue instanceof Function)) {\r\n\t // ignore undefined and functions\r\n\t child = new Node(this.editor, {\r\n\t field: childField,\r\n\t value: childValue\r\n\t });\r\n\t this.appendChild(child);\r\n\t }\r\n\t }\r\n\t }\r\n\t this.value = '';\r\n\r\n\t // sort object keys\r\n\t if (this.editor.options.sortObjectKeys === true) {\r\n\t this.sort('asc');\r\n\t }\r\n\t }\r\n\t else {\r\n\t // value\r\n\t this.childs = undefined;\r\n\t this.value = value;\r\n\t }\r\n\r\n\t this.previousValue = this.value;\r\n\t};\r\n\r\n\t/**\r\n\t * Get value. Value is a JSON structure\r\n\t * @return {*} value\r\n\t */\r\n\tNode.prototype.getValue = function() {\r\n\t //var childs, i, iMax;\r\n\r\n\t if (this.type == 'array') {\r\n\t var arr = [];\r\n\t this.childs.forEach (function (child) {\r\n\t arr.push(child.getValue());\r\n\t });\r\n\t return arr;\r\n\t }\r\n\t else if (this.type == 'object') {\r\n\t var obj = {};\r\n\t this.childs.forEach (function (child) {\r\n\t obj[child.getField()] = child.getValue();\r\n\t });\r\n\t return obj;\r\n\t }\r\n\t else {\r\n\t if (this.value === undefined) {\r\n\t this._getDomValue();\r\n\t }\r\n\r\n\t return this.value;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the nesting level of this node\r\n\t * @return {Number} level\r\n\t */\r\n\tNode.prototype.getLevel = function() {\r\n\t return (this.parent ? this.parent.getLevel() + 1 : 0);\r\n\t};\r\n\r\n\t/**\r\n\t * Get path of the root node till the current node\r\n\t * @return {Node[]} Returns an array with nodes\r\n\t */\r\n\tNode.prototype.getNodePath = function() {\r\n\t var path = this.parent ? this.parent.getNodePath() : [];\r\n\t path.push(this);\r\n\t return path;\r\n\t};\r\n\r\n\t/**\r\n\t * Create a clone of a node\r\n\t * The complete state of a clone is copied, including whether it is expanded or\r\n\t * not. The DOM elements are not cloned.\r\n\t * @return {Node} clone\r\n\t */\r\n\tNode.prototype.clone = function() {\r\n\t var clone = new Node(this.editor);\r\n\t clone.type = this.type;\r\n\t clone.field = this.field;\r\n\t clone.fieldInnerText = this.fieldInnerText;\r\n\t clone.fieldEditable = this.fieldEditable;\r\n\t clone.value = this.value;\r\n\t clone.valueInnerText = this.valueInnerText;\r\n\t clone.expanded = this.expanded;\r\n\r\n\t if (this.childs) {\r\n\t // an object or array\r\n\t var cloneChilds = [];\r\n\t this.childs.forEach(function (child) {\r\n\t var childClone = child.clone();\r\n\t childClone.setParent(clone);\r\n\t cloneChilds.push(childClone);\r\n\t });\r\n\t clone.childs = cloneChilds;\r\n\t }\r\n\t else {\r\n\t // a value\r\n\t clone.childs = undefined;\r\n\t }\r\n\r\n\t return clone;\r\n\t};\r\n\r\n\t/**\r\n\t * Expand this node and optionally its childs.\r\n\t * @param {boolean} [recurse] Optional recursion, true by default. When\r\n\t * true, all childs will be expanded recursively\r\n\t */\r\n\tNode.prototype.expand = function(recurse) {\r\n\t if (!this.childs) {\r\n\t return;\r\n\t }\r\n\r\n\t // set this node expanded\r\n\t this.expanded = true;\r\n\t if (this.dom.expand) {\r\n\t this.dom.expand.className = 'jsoneditor-expanded';\r\n\t }\r\n\r\n\t this.showChilds();\r\n\r\n\t if (recurse !== false) {\r\n\t this.childs.forEach(function (child) {\r\n\t child.expand(recurse);\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Collapse this node and optionally its childs.\r\n\t * @param {boolean} [recurse] Optional recursion, true by default. When\r\n\t * true, all childs will be collapsed recursively\r\n\t */\r\n\tNode.prototype.collapse = function(recurse) {\r\n\t if (!this.childs) {\r\n\t return;\r\n\t }\r\n\r\n\t this.hideChilds();\r\n\r\n\t // collapse childs in case of recurse\r\n\t if (recurse !== false) {\r\n\t this.childs.forEach(function (child) {\r\n\t child.collapse(recurse);\r\n\t });\r\n\r\n\t }\r\n\r\n\t // make this node collapsed\r\n\t if (this.dom.expand) {\r\n\t this.dom.expand.className = 'jsoneditor-collapsed';\r\n\t }\r\n\t this.expanded = false;\r\n\t};\r\n\r\n\t/**\r\n\t * Recursively show all childs when they are expanded\r\n\t */\r\n\tNode.prototype.showChilds = function() {\r\n\t var childs = this.childs;\r\n\t if (!childs) {\r\n\t return;\r\n\t }\r\n\t if (!this.expanded) {\r\n\t return;\r\n\t }\r\n\r\n\t var tr = this.dom.tr;\r\n\t var table = tr ? tr.parentNode : undefined;\r\n\t if (table) {\r\n\t // show row with append button\r\n\t var append = this.getAppend();\r\n\t var nextTr = tr.nextSibling;\r\n\t if (nextTr) {\r\n\t table.insertBefore(append, nextTr);\r\n\t }\r\n\t else {\r\n\t table.appendChild(append);\r\n\t }\r\n\r\n\t // show childs\r\n\t this.childs.forEach(function (child) {\r\n\t table.insertBefore(child.getDom(), append);\r\n\t child.showChilds();\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Hide the node with all its childs\r\n\t */\r\n\tNode.prototype.hide = function() {\r\n\t var tr = this.dom.tr;\r\n\t var table = tr ? tr.parentNode : undefined;\r\n\t if (table) {\r\n\t table.removeChild(tr);\r\n\t }\r\n\t this.hideChilds();\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Recursively hide all childs\r\n\t */\r\n\tNode.prototype.hideChilds = function() {\r\n\t var childs = this.childs;\r\n\t if (!childs) {\r\n\t return;\r\n\t }\r\n\t if (!this.expanded) {\r\n\t return;\r\n\t }\r\n\r\n\t // hide append row\r\n\t var append = this.getAppend();\r\n\t if (append.parentNode) {\r\n\t append.parentNode.removeChild(append);\r\n\t }\r\n\r\n\t // hide childs\r\n\t this.childs.forEach(function (child) {\r\n\t child.hide();\r\n\t });\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Add a new child to the node.\r\n\t * Only applicable when Node value is of type array or object\r\n\t * @param {Node} node\r\n\t */\r\n\tNode.prototype.appendChild = function(node) {\r\n\t if (this._hasChilds()) {\r\n\t // adjust the link to the parent\r\n\t node.setParent(this);\r\n\t node.fieldEditable = (this.type == 'object');\r\n\t if (this.type == 'array') {\r\n\t node.index = this.childs.length;\r\n\t }\r\n\t this.childs.push(node);\r\n\r\n\t if (this.expanded) {\r\n\t // insert into the DOM, before the appendRow\r\n\t var newTr = node.getDom();\r\n\t var appendTr = this.getAppend();\r\n\t var table = appendTr ? appendTr.parentNode : undefined;\r\n\t if (appendTr && table) {\r\n\t table.insertBefore(newTr, appendTr);\r\n\t }\r\n\r\n\t node.showChilds();\r\n\t }\r\n\r\n\t this.updateDom({'updateIndexes': true});\r\n\t node.updateDom({'recurse': true});\r\n\t }\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Move a node from its current parent to this node\r\n\t * Only applicable when Node value is of type array or object\r\n\t * @param {Node} node\r\n\t * @param {Node} beforeNode\r\n\t */\r\n\tNode.prototype.moveBefore = function(node, beforeNode) {\r\n\t if (this._hasChilds()) {\r\n\t // create a temporary row, to prevent the scroll position from jumping\r\n\t // when removing the node\r\n\t var tbody = (this.dom.tr) ? this.dom.tr.parentNode : undefined;\r\n\t if (tbody) {\r\n\t var trTemp = document.createElement('tr');\r\n\t trTemp.style.height = tbody.clientHeight + 'px';\r\n\t tbody.appendChild(trTemp);\r\n\t }\r\n\r\n\t if (node.parent) {\r\n\t node.parent.removeChild(node);\r\n\t }\r\n\r\n\t if (beforeNode instanceof AppendNode) {\r\n\t this.appendChild(node);\r\n\t }\r\n\t else {\r\n\t this.insertBefore(node, beforeNode);\r\n\t }\r\n\r\n\t if (tbody) {\r\n\t tbody.removeChild(trTemp);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Move a node from its current parent to this node\r\n\t * Only applicable when Node value is of type array or object.\r\n\t * If index is out of range, the node will be appended to the end\r\n\t * @param {Node} node\r\n\t * @param {Number} index\r\n\t */\r\n\tNode.prototype.moveTo = function (node, index) {\r\n\t if (node.parent == this) {\r\n\t // same parent\r\n\t var currentIndex = this.childs.indexOf(node);\r\n\t if (currentIndex < index) {\r\n\t // compensate the index for removal of the node itself\r\n\t index++;\r\n\t }\r\n\t }\r\n\r\n\t var beforeNode = this.childs[index] || this.append;\r\n\t this.moveBefore(node, beforeNode);\r\n\t};\r\n\r\n\t/**\r\n\t * Insert a new child before a given node\r\n\t * Only applicable when Node value is of type array or object\r\n\t * @param {Node} node\r\n\t * @param {Node} beforeNode\r\n\t */\r\n\tNode.prototype.insertBefore = function(node, beforeNode) {\r\n\t if (this._hasChilds()) {\r\n\t if (beforeNode == this.append) {\r\n\t // append to the child nodes\r\n\r\n\t // adjust the link to the parent\r\n\t node.setParent(this);\r\n\t node.fieldEditable = (this.type == 'object');\r\n\t this.childs.push(node);\r\n\t }\r\n\t else {\r\n\t // insert before a child node\r\n\t var index = this.childs.indexOf(beforeNode);\r\n\t if (index == -1) {\r\n\t throw new Error('Node not found');\r\n\t }\r\n\r\n\t // adjust the link to the parent\r\n\t node.setParent(this);\r\n\t node.fieldEditable = (this.type == 'object');\r\n\t this.childs.splice(index, 0, node);\r\n\t }\r\n\r\n\t if (this.expanded) {\r\n\t // insert into the DOM\r\n\t var newTr = node.getDom();\r\n\t var nextTr = beforeNode.getDom();\r\n\t var table = nextTr ? nextTr.parentNode : undefined;\r\n\t if (nextTr && table) {\r\n\t table.insertBefore(newTr, nextTr);\r\n\t }\r\n\r\n\t node.showChilds();\r\n\t }\r\n\r\n\t this.updateDom({'updateIndexes': true});\r\n\t node.updateDom({'recurse': true});\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Insert a new child before a given node\r\n\t * Only applicable when Node value is of type array or object\r\n\t * @param {Node} node\r\n\t * @param {Node} afterNode\r\n\t */\r\n\tNode.prototype.insertAfter = function(node, afterNode) {\r\n\t if (this._hasChilds()) {\r\n\t var index = this.childs.indexOf(afterNode);\r\n\t var beforeNode = this.childs[index + 1];\r\n\t if (beforeNode) {\r\n\t this.insertBefore(node, beforeNode);\r\n\t }\r\n\t else {\r\n\t this.appendChild(node);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Search in this node\r\n\t * The node will be expanded when the text is found one of its childs, else\r\n\t * it will be collapsed. Searches are case insensitive.\r\n\t * @param {String} text\r\n\t * @return {Node[]} results Array with nodes containing the search text\r\n\t */\r\n\tNode.prototype.search = function(text) {\r\n\t var results = [];\r\n\t var index;\r\n\t var search = text ? text.toLowerCase() : undefined;\r\n\r\n\t // delete old search data\r\n\t delete this.searchField;\r\n\t delete this.searchValue;\r\n\r\n\t // search in field\r\n\t if (this.field != undefined) {\r\n\t var field = String(this.field).toLowerCase();\r\n\t index = field.indexOf(search);\r\n\t if (index != -1) {\r\n\t this.searchField = true;\r\n\t results.push({\r\n\t 'node': this,\r\n\t 'elem': 'field'\r\n\t });\r\n\t }\r\n\r\n\t // update dom\r\n\t this._updateDomField();\r\n\t }\r\n\r\n\t // search in value\r\n\t if (this._hasChilds()) {\r\n\t // array, object\r\n\r\n\t // search the nodes childs\r\n\t if (this.childs) {\r\n\t var childResults = [];\r\n\t this.childs.forEach(function (child) {\r\n\t childResults = childResults.concat(child.search(text));\r\n\t });\r\n\t results = results.concat(childResults);\r\n\t }\r\n\r\n\t // update dom\r\n\t if (search != undefined) {\r\n\t var recurse = false;\r\n\t if (childResults.length == 0) {\r\n\t this.collapse(recurse);\r\n\t }\r\n\t else {\r\n\t this.expand(recurse);\r\n\t }\r\n\t }\r\n\t }\r\n\t else {\r\n\t // string, auto\r\n\t if (this.value != undefined ) {\r\n\t var value = String(this.value).toLowerCase();\r\n\t index = value.indexOf(search);\r\n\t if (index != -1) {\r\n\t this.searchValue = true;\r\n\t results.push({\r\n\t 'node': this,\r\n\t 'elem': 'value'\r\n\t });\r\n\t }\r\n\t }\r\n\r\n\t // update dom\r\n\t this._updateDomValue();\r\n\t }\r\n\r\n\t return results;\r\n\t};\r\n\r\n\t/**\r\n\t * Move the scroll position such that this node is in the visible area.\r\n\t * The node will not get the focus\r\n\t * @param {function(boolean)} [callback]\r\n\t */\r\n\tNode.prototype.scrollTo = function(callback) {\r\n\t if (!this.dom.tr || !this.dom.tr.parentNode) {\r\n\t // if the node is not visible, expand its parents\r\n\t var parent = this.parent;\r\n\t var recurse = false;\r\n\t while (parent) {\r\n\t parent.expand(recurse);\r\n\t parent = parent.parent;\r\n\t }\r\n\t }\r\n\r\n\t if (this.dom.tr && this.dom.tr.parentNode) {\r\n\t this.editor.scrollTo(this.dom.tr.offsetTop, callback);\r\n\t }\r\n\t};\r\n\r\n\r\n\t// stores the element name currently having the focus\r\n\tNode.focusElement = undefined;\r\n\r\n\t/**\r\n\t * Set focus to this node\r\n\t * @param {String} [elementName] The field name of the element to get the\r\n\t * focus available values: 'drag', 'menu',\r\n\t * 'expand', 'field', 'value' (default)\r\n\t */\r\n\tNode.prototype.focus = function(elementName) {\r\n\t Node.focusElement = elementName;\r\n\r\n\t if (this.dom.tr && this.dom.tr.parentNode) {\r\n\t var dom = this.dom;\r\n\r\n\t switch (elementName) {\r\n\t case 'drag':\r\n\t if (dom.drag) {\r\n\t dom.drag.focus();\r\n\t }\r\n\t else {\r\n\t dom.menu.focus();\r\n\t }\r\n\t break;\r\n\r\n\t case 'menu':\r\n\t dom.menu.focus();\r\n\t break;\r\n\r\n\t case 'expand':\r\n\t if (this._hasChilds()) {\r\n\t dom.expand.focus();\r\n\t }\r\n\t else if (dom.field && this.fieldEditable) {\r\n\t dom.field.focus();\r\n\t util.selectContentEditable(dom.field);\r\n\t }\r\n\t else if (dom.value && !this._hasChilds()) {\r\n\t dom.value.focus();\r\n\t util.selectContentEditable(dom.value);\r\n\t }\r\n\t else {\r\n\t dom.menu.focus();\r\n\t }\r\n\t break;\r\n\r\n\t case 'field':\r\n\t if (dom.field && this.fieldEditable) {\r\n\t dom.field.focus();\r\n\t util.selectContentEditable(dom.field);\r\n\t }\r\n\t else if (dom.value && !this._hasChilds()) {\r\n\t dom.value.focus();\r\n\t util.selectContentEditable(dom.value);\r\n\t }\r\n\t else if (this._hasChilds()) {\r\n\t dom.expand.focus();\r\n\t }\r\n\t else {\r\n\t dom.menu.focus();\r\n\t }\r\n\t break;\r\n\r\n\t case 'value':\r\n\t default:\r\n\t if (dom.value && !this._hasChilds()) {\r\n\t dom.value.focus();\r\n\t util.selectContentEditable(dom.value);\r\n\t }\r\n\t else if (dom.field && this.fieldEditable) {\r\n\t dom.field.focus();\r\n\t util.selectContentEditable(dom.field);\r\n\t }\r\n\t else if (this._hasChilds()) {\r\n\t dom.expand.focus();\r\n\t }\r\n\t else {\r\n\t dom.menu.focus();\r\n\t }\r\n\t break;\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Select all text in an editable div after a delay of 0 ms\r\n\t * @param {Element} editableDiv\r\n\t */\r\n\tNode.select = function(editableDiv) {\r\n\t setTimeout(function () {\r\n\t util.selectContentEditable(editableDiv);\r\n\t }, 0);\r\n\t};\r\n\r\n\t/**\r\n\t * Update the values from the DOM field and value of this node\r\n\t */\r\n\tNode.prototype.blur = function() {\r\n\t // retrieve the actual field and value from the DOM.\r\n\t this._getDomValue(false);\r\n\t this._getDomField(false);\r\n\t};\r\n\r\n\t/**\r\n\t * Check if given node is a child. The method will check recursively to find\r\n\t * this node.\r\n\t * @param {Node} node\r\n\t * @return {boolean} containsNode\r\n\t */\r\n\tNode.prototype.containsNode = function(node) {\r\n\t if (this == node) {\r\n\t return true;\r\n\t }\r\n\r\n\t var childs = this.childs;\r\n\t if (childs) {\r\n\t // TODO: use the js5 Array.some() here?\r\n\t for (var i = 0, iMax = childs.length; i < iMax; i++) {\r\n\t if (childs[i].containsNode(node)) {\r\n\t return true;\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t return false;\r\n\t};\r\n\r\n\t/**\r\n\t * Move given node into this node\r\n\t * @param {Node} node the childNode to be moved\r\n\t * @param {Node} beforeNode node will be inserted before given\r\n\t * node. If no beforeNode is given,\r\n\t * the node is appended at the end\r\n\t * @private\r\n\t */\r\n\tNode.prototype._move = function(node, beforeNode) {\r\n\t if (node == beforeNode) {\r\n\t // nothing to do...\r\n\t return;\r\n\t }\r\n\r\n\t // check if this node is not a child of the node to be moved here\r\n\t if (node.containsNode(this)) {\r\n\t throw new Error('Cannot move a field into a child of itself');\r\n\t }\r\n\r\n\t // remove the original node\r\n\t if (node.parent) {\r\n\t node.parent.removeChild(node);\r\n\t }\r\n\r\n\t // create a clone of the node\r\n\t var clone = node.clone();\r\n\t node.clearDom();\r\n\r\n\t // insert or append the node\r\n\t if (beforeNode) {\r\n\t this.insertBefore(clone, beforeNode);\r\n\t }\r\n\t else {\r\n\t this.appendChild(clone);\r\n\t }\r\n\r\n\t /* TODO: adjust the field name (to prevent equal field names)\r\n\t if (this.type == 'object') {\r\n\t }\r\n\t */\r\n\t};\r\n\r\n\t/**\r\n\t * Remove a child from the node.\r\n\t * Only applicable when Node value is of type array or object\r\n\t * @param {Node} node The child node to be removed;\r\n\t * @return {Node | undefined} node The removed node on success,\r\n\t * else undefined\r\n\t */\r\n\tNode.prototype.removeChild = function(node) {\r\n\t if (this.childs) {\r\n\t var index = this.childs.indexOf(node);\r\n\r\n\t if (index != -1) {\r\n\t node.hide();\r\n\r\n\t // delete old search results\r\n\t delete node.searchField;\r\n\t delete node.searchValue;\r\n\r\n\t var removedNode = this.childs.splice(index, 1)[0];\r\n\t removedNode.parent = null;\r\n\r\n\t this.updateDom({'updateIndexes': true});\r\n\r\n\t return removedNode;\r\n\t }\r\n\t }\r\n\r\n\t return undefined;\r\n\t};\r\n\r\n\t/**\r\n\t * Remove a child node node from this node\r\n\t * This method is equal to Node.removeChild, except that _remove fire an\r\n\t * onChange event.\r\n\t * @param {Node} node\r\n\t * @private\r\n\t */\r\n\tNode.prototype._remove = function (node) {\r\n\t this.removeChild(node);\r\n\t};\r\n\r\n\t/**\r\n\t * Change the type of the value of this Node\r\n\t * @param {String} newType\r\n\t */\r\n\tNode.prototype.changeType = function (newType) {\r\n\t var oldType = this.type;\r\n\r\n\t if (oldType == newType) {\r\n\t // type is not changed\r\n\t return;\r\n\t }\r\n\r\n\t if ((newType == 'string' || newType == 'auto') &&\r\n\t (oldType == 'string' || oldType == 'auto')) {\r\n\t // this is an easy change\r\n\t this.type = newType;\r\n\t }\r\n\t else {\r\n\t // change from array to object, or from string/auto to object/array\r\n\t var table = this.dom.tr ? this.dom.tr.parentNode : undefined;\r\n\t var lastTr;\r\n\t if (this.expanded) {\r\n\t lastTr = this.getAppend();\r\n\t }\r\n\t else {\r\n\t lastTr = this.getDom();\r\n\t }\r\n\t var nextTr = (lastTr && lastTr.parentNode) ? lastTr.nextSibling : undefined;\r\n\r\n\t // hide current field and all its childs\r\n\t this.hide();\r\n\t this.clearDom();\r\n\r\n\t // adjust the field and the value\r\n\t this.type = newType;\r\n\r\n\t // adjust childs\r\n\t if (newType == 'object') {\r\n\t if (!this.childs) {\r\n\t this.childs = [];\r\n\t }\r\n\r\n\t this.childs.forEach(function (child, index) {\r\n\t child.clearDom();\r\n\t delete child.index;\r\n\t child.fieldEditable = true;\r\n\t if (child.field == undefined) {\r\n\t child.field = '';\r\n\t }\r\n\t });\r\n\r\n\t if (oldType == 'string' || oldType == 'auto') {\r\n\t this.expanded = true;\r\n\t }\r\n\t }\r\n\t else if (newType == 'array') {\r\n\t if (!this.childs) {\r\n\t this.childs = [];\r\n\t }\r\n\r\n\t this.childs.forEach(function (child, index) {\r\n\t child.clearDom();\r\n\t child.fieldEditable = false;\r\n\t child.index = index;\r\n\t });\r\n\r\n\t if (oldType == 'string' || oldType == 'auto') {\r\n\t this.expanded = true;\r\n\t }\r\n\t }\r\n\t else {\r\n\t this.expanded = false;\r\n\t }\r\n\r\n\t // create new DOM\r\n\t if (table) {\r\n\t if (nextTr) {\r\n\t table.insertBefore(this.getDom(), nextTr);\r\n\t }\r\n\t else {\r\n\t table.appendChild(this.getDom());\r\n\t }\r\n\t }\r\n\t this.showChilds();\r\n\t }\r\n\r\n\t if (newType == 'auto' || newType == 'string') {\r\n\t // cast value to the correct type\r\n\t if (newType == 'string') {\r\n\t this.value = String(this.value);\r\n\t }\r\n\t else {\r\n\t this.value = this._stringCast(String(this.value));\r\n\t }\r\n\r\n\t this.focus();\r\n\t }\r\n\r\n\t this.updateDom({'updateIndexes': true});\r\n\t};\r\n\r\n\t/**\r\n\t * Retrieve value from DOM\r\n\t * @param {boolean} [silent] If true (default), no errors will be thrown in\r\n\t * case of invalid data\r\n\t * @private\r\n\t */\r\n\tNode.prototype._getDomValue = function(silent) {\r\n\t if (this.dom.value && this.type != 'array' && this.type != 'object') {\r\n\t this.valueInnerText = util.getInnerText(this.dom.value);\r\n\t }\r\n\r\n\t if (this.valueInnerText != undefined) {\r\n\t try {\r\n\t // retrieve the value\r\n\t var value;\r\n\t if (this.type == 'string') {\r\n\t value = this._unescapeHTML(this.valueInnerText);\r\n\t }\r\n\t else {\r\n\t var str = this._unescapeHTML(this.valueInnerText);\r\n\t value = this._stringCast(str);\r\n\t }\r\n\t if (value !== this.value) {\r\n\t this.value = value;\r\n\t this._debouncedOnChangeValue();\r\n\t }\r\n\t }\r\n\t catch (err) {\r\n\t this.value = undefined;\r\n\t // TODO: sent an action with the new, invalid value?\r\n\t if (silent !== true) {\r\n\t throw err;\r\n\t }\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Handle a changed value\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onChangeValue = function () {\r\n\t // get current selection, then override the range such that we can select\r\n\t // the added/removed text on undo/redo\r\n\t var oldSelection = this.editor.getSelection();\r\n\t if (oldSelection.range) {\r\n\t var undoDiff = util.textDiff(String(this.value), String(this.previousValue));\r\n\t oldSelection.range.startOffset = undoDiff.start;\r\n\t oldSelection.range.endOffset = undoDiff.end;\r\n\t }\r\n\t var newSelection = this.editor.getSelection();\r\n\t if (newSelection.range) {\r\n\t var redoDiff = util.textDiff(String(this.previousValue), String(this.value));\r\n\t newSelection.range.startOffset = redoDiff.start;\r\n\t newSelection.range.endOffset = redoDiff.end;\r\n\t }\r\n\r\n\t this.editor._onAction('editValue', {\r\n\t node: this,\r\n\t oldValue: this.previousValue,\r\n\t newValue: this.value,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\r\n\t this.previousValue = this.value;\r\n\t};\r\n\r\n\t/**\r\n\t * Handle a changed field\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onChangeField = function () {\r\n\t // get current selection, then override the range such that we can select\r\n\t // the added/removed text on undo/redo\r\n\t var oldSelection = this.editor.getSelection();\r\n\t if (oldSelection.range) {\r\n\t var undoDiff = util.textDiff(this.field, this.previousField);\r\n\t oldSelection.range.startOffset = undoDiff.start;\r\n\t oldSelection.range.endOffset = undoDiff.end;\r\n\t }\r\n\t var newSelection = this.editor.getSelection();\r\n\t if (newSelection.range) {\r\n\t var redoDiff = util.textDiff(this.previousField, this.field);\r\n\t newSelection.range.startOffset = redoDiff.start;\r\n\t newSelection.range.endOffset = redoDiff.end;\r\n\t }\r\n\r\n\t this.editor._onAction('editField', {\r\n\t node: this,\r\n\t oldValue: this.previousField,\r\n\t newValue: this.field,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\r\n\t this.previousField = this.field;\r\n\t};\r\n\r\n\t/**\r\n\t * Update dom value:\r\n\t * - the text color of the value, depending on the type of the value\r\n\t * - the height of the field, depending on the width\r\n\t * - background color in case it is empty\r\n\t * @private\r\n\t */\r\n\tNode.prototype._updateDomValue = function () {\r\n\t var domValue = this.dom.value;\r\n\t if (domValue) {\r\n\t var classNames = ['jsoneditor-value'];\r\n\r\n\r\n\t // set text color depending on value type\r\n\t var value = this.value;\r\n\t var type = (this.type == 'auto') ? util.type(value) : this.type;\r\n\t var isUrl = type == 'string' && util.isUrl(value);\r\n\t classNames.push('jsoneditor-' + type);\r\n\t if (isUrl) {\r\n\t classNames.push('jsoneditor-url');\r\n\t }\r\n\r\n\t // visual styling when empty\r\n\t var isEmpty = (String(this.value) == '' && this.type != 'array' && this.type != 'object');\r\n\t if (isEmpty) {\r\n\t classNames.push('jsoneditor-empty');\r\n\t }\r\n\r\n\t // highlight when there is a search result\r\n\t if (this.searchValueActive) {\r\n\t classNames.push('jsoneditor-highlight-active');\r\n\t }\r\n\t if (this.searchValue) {\r\n\t classNames.push('jsoneditor-highlight');\r\n\t }\r\n\r\n\t domValue.className = classNames.join(' ');\r\n\r\n\t // update title\r\n\t if (type == 'array' || type == 'object') {\r\n\t var count = this.childs ? this.childs.length : 0;\r\n\t domValue.title = this.type + ' containing ' + count + ' items';\r\n\t }\r\n\t else if (isUrl && this.editable.value) {\r\n\t domValue.title = 'Ctrl+Click or Ctrl+Enter to open url in new window';\r\n\t }\r\n\t else {\r\n\t domValue.title = '';\r\n\t }\r\n\r\n\t // show checkbox when the value is a boolean\r\n\t if (type === 'boolean' && this.editable.value) {\r\n\t if (!this.dom.checkbox) {\r\n\t this.dom.checkbox = document.createElement('input');\r\n\t this.dom.checkbox.type = 'checkbox';\r\n\t this.dom.tdCheckbox = document.createElement('td');\r\n\t this.dom.tdCheckbox.className = 'jsoneditor-tree';\r\n\t this.dom.tdCheckbox.appendChild(this.dom.checkbox);\r\n\r\n\t this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox, this.dom.tdValue);\r\n\t }\r\n\r\n\t this.dom.checkbox.checked = this.value;\r\n\t }\r\n\t else {\r\n\t // cleanup checkbox when displayed\r\n\t if (this.dom.tdCheckbox) {\r\n\t this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox);\r\n\t delete this.dom.tdCheckbox;\r\n\t delete this.dom.checkbox;\r\n\t }\r\n\t }\r\n\r\n\t if (this.enum && this.editable.value) {\r\n\t // create select box when this node has an enum object\r\n\t if (!this.dom.select) {\r\n\t this.dom.select = document.createElement('select');\r\n\t this.id = this.field + \"_\" + new Date().getUTCMilliseconds();\r\n\t this.dom.select.id = this.id;\r\n\t this.dom.select.name = this.dom.select.id;\r\n\r\n\t //Create the default empty option\r\n\t this.dom.select.option = document.createElement('option');\r\n\t this.dom.select.option.value = '';\r\n\t this.dom.select.option.innerHTML = '--';\r\n\t this.dom.select.appendChild(this.dom.select.option);\r\n\r\n\t //Iterate all enum values and add them as options\r\n\t for(var i = 0; i < this.enum.length; i++) {\r\n\t this.dom.select.option = document.createElement('option');\r\n\t this.dom.select.option.value = this.enum[i];\r\n\t this.dom.select.option.innerHTML = this.enum[i];\r\n\t if(this.dom.select.option.value == this.value){\r\n\t this.dom.select.option.selected = true;\r\n\t }\r\n\t this.dom.select.appendChild(this.dom.select.option);\r\n\t }\r\n\r\n\t this.dom.tdSelect = document.createElement('td');\r\n\t this.dom.tdSelect.className = 'jsoneditor-tree';\r\n\t this.dom.tdSelect.appendChild(this.dom.select);\r\n\t this.dom.tdValue.parentNode.insertBefore(this.dom.tdSelect, this.dom.tdValue);\r\n\t }\r\n\r\n\t // If the enum is inside a composite type display\r\n\t // both the simple input and the dropdown field\r\n\t if(this.schema && (\r\n\t !this.schema.hasOwnProperty(\"oneOf\") &&\r\n\t !this.schema.hasOwnProperty(\"anyOf\") &&\r\n\t !this.schema.hasOwnProperty(\"allOf\"))\r\n\t ) {\r\n\t this.valueFieldHTML = this.dom.tdValue.innerHTML;\r\n\t this.dom.tdValue.style.visibility = 'hidden';\r\n\t this.dom.tdValue.innerHTML = '';\r\n\t } else {\r\n\t delete this.valueFieldHTML;\r\n\t }\r\n\t }\r\n\t else {\r\n\t // cleanup select box when displayed\r\n\t if (this.dom.tdSelect) {\r\n\t this.dom.tdSelect.parentNode.removeChild(this.dom.tdSelect);\r\n\t delete this.dom.tdSelect;\r\n\t delete this.dom.select;\r\n\t this.dom.tdValue.innerHTML = this.valueFieldHTML;\r\n\t this.dom.tdValue.style.visibility = '';\r\n\t delete this.valueFieldHTML;\r\n\t }\r\n\t }\r\n\r\n\t // strip formatting from the contents of the editable div\r\n\t util.stripFormatting(domValue);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Update dom field:\r\n\t * - the text color of the field, depending on the text\r\n\t * - the height of the field, depending on the width\r\n\t * - background color in case it is empty\r\n\t * @private\r\n\t */\r\n\tNode.prototype._updateDomField = function () {\r\n\t var domField = this.dom.field;\r\n\t if (domField) {\r\n\t // make backgound color lightgray when empty\r\n\t var isEmpty = (String(this.field) == '' && this.parent.type != 'array');\r\n\t if (isEmpty) {\r\n\t util.addClassName(domField, 'jsoneditor-empty');\r\n\t }\r\n\t else {\r\n\t util.removeClassName(domField, 'jsoneditor-empty');\r\n\t }\r\n\r\n\t // highlight when there is a search result\r\n\t if (this.searchFieldActive) {\r\n\t util.addClassName(domField, 'jsoneditor-highlight-active');\r\n\t }\r\n\t else {\r\n\t util.removeClassName(domField, 'jsoneditor-highlight-active');\r\n\t }\r\n\t if (this.searchField) {\r\n\t util.addClassName(domField, 'jsoneditor-highlight');\r\n\t }\r\n\t else {\r\n\t util.removeClassName(domField, 'jsoneditor-highlight');\r\n\t }\r\n\r\n\t // strip formatting from the contents of the editable div\r\n\t util.stripFormatting(domField);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Retrieve field from DOM\r\n\t * @param {boolean} [silent] If true (default), no errors will be thrown in\r\n\t * case of invalid data\r\n\t * @private\r\n\t */\r\n\tNode.prototype._getDomField = function(silent) {\r\n\t if (this.dom.field && this.fieldEditable) {\r\n\t this.fieldInnerText = util.getInnerText(this.dom.field);\r\n\t }\r\n\r\n\t if (this.fieldInnerText != undefined) {\r\n\t try {\r\n\t var field = this._unescapeHTML(this.fieldInnerText);\r\n\r\n\t if (field !== this.field) {\r\n\t this.field = field;\r\n\t this._debouncedOnChangeField();\r\n\t }\r\n\t }\r\n\t catch (err) {\r\n\t this.field = undefined;\r\n\t // TODO: sent an action here, with the new, invalid value?\r\n\t if (silent !== true) {\r\n\t throw err;\r\n\t }\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Validate this node and all it's childs\r\n\t * @return {Array.<{node: Node, error: {message: string}}>} Returns a list with duplicates\r\n\t */\r\n\tNode.prototype.validate = function () {\r\n\t var errors = [];\r\n\r\n\t // find duplicate keys\r\n\t if (this.type === 'object') {\r\n\t var keys = {};\r\n\t var duplicateKeys = [];\r\n\t for (var i = 0; i < this.childs.length; i++) {\r\n\t var child = this.childs[i];\r\n\t if (keys.hasOwnProperty(child.field)) {\r\n\t duplicateKeys.push(child.field);\r\n\t }\r\n\t keys[child.field] = true;\r\n\t }\r\n\r\n\t if (duplicateKeys.length > 0) {\r\n\t errors = this.childs\r\n\t .filter(function (node) {\r\n\t return duplicateKeys.indexOf(node.field) !== -1;\r\n\t })\r\n\t .map(function (node) {\r\n\t return {\r\n\t node: node,\r\n\t error: {\r\n\t message: 'duplicate key \"' + node.field + '\"'\r\n\t }\r\n\t }\r\n\t });\r\n\t }\r\n\t }\r\n\r\n\t // recurse over the childs\r\n\t if (this.childs) {\r\n\t for (var i = 0; i < this.childs.length; i++) {\r\n\t var e = this.childs[i].validate();\r\n\t if (e.length > 0) {\r\n\t errors = errors.concat(e);\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t return errors;\r\n\t};\r\n\r\n\t/**\r\n\t * Clear the dom of the node\r\n\t */\r\n\tNode.prototype.clearDom = function() {\r\n\t // TODO: hide the node first?\r\n\t //this.hide();\r\n\t // TODO: recursively clear dom?\r\n\r\n\t this.dom = {};\r\n\t};\r\n\r\n\t/**\r\n\t * Get the HTML DOM TR element of the node.\r\n\t * The dom will be generated when not yet created\r\n\t * @return {Element} tr HTML DOM TR Element\r\n\t */\r\n\tNode.prototype.getDom = function() {\r\n\t var dom = this.dom;\r\n\t if (dom.tr) {\r\n\t return dom.tr;\r\n\t }\r\n\r\n\t this._updateEditability();\r\n\r\n\t // create row\r\n\t dom.tr = document.createElement('tr');\r\n\t dom.tr.node = this;\r\n\r\n\t if (this.editor.options.mode === 'tree') { // note: we take here the global setting\r\n\t var tdDrag = document.createElement('td');\r\n\t if (this.editable.field) {\r\n\t // create draggable area\r\n\t if (this.parent) {\r\n\t var domDrag = document.createElement('button');\r\n\t domDrag.type = 'button';\r\n\t dom.drag = domDrag;\r\n\t domDrag.className = 'jsoneditor-dragarea';\r\n\t domDrag.title = 'Drag to move this field (Alt+Shift+Arrows)';\r\n\t tdDrag.appendChild(domDrag);\r\n\t }\r\n\t }\r\n\t dom.tr.appendChild(tdDrag);\r\n\r\n\t // create context menu\r\n\t var tdMenu = document.createElement('td');\r\n\t var menu = document.createElement('button');\r\n\t menu.type = 'button';\r\n\t dom.menu = menu;\r\n\t menu.className = 'jsoneditor-contextmenu';\r\n\t menu.title = 'Click to open the actions menu (Ctrl+M)';\r\n\t tdMenu.appendChild(dom.menu);\r\n\t dom.tr.appendChild(tdMenu);\r\n\t }\r\n\r\n\t // create tree and field\r\n\t var tdField = document.createElement('td');\r\n\t dom.tr.appendChild(tdField);\r\n\t dom.tree = this._createDomTree();\r\n\t tdField.appendChild(dom.tree);\r\n\r\n\t this.updateDom({'updateIndexes': true});\r\n\r\n\t return dom.tr;\r\n\t};\r\n\r\n\t/**\r\n\t * DragStart event, fired on mousedown on the dragarea at the left side of a Node\r\n\t * @param {Node[] | Node} nodes\r\n\t * @param {Event} event\r\n\t */\r\n\tNode.onDragStart = function (nodes, event) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t return Node.onDragStart([nodes], event);\r\n\t }\r\n\t if (nodes.length === 0) {\r\n\t return;\r\n\t }\r\n\r\n\t var firstNode = nodes[0];\r\n\t var lastNode = nodes[nodes.length - 1];\r\n\t var draggedNode = Node.getNodeFromTarget(event.target);\r\n\t var beforeNode = lastNode._nextSibling();\r\n\t var editor = firstNode.editor;\r\n\r\n\t // in case of multiple selected nodes, offsetY prevents the selection from\r\n\t // jumping when you start dragging one of the lower down nodes in the selection\r\n\t var offsetY = util.getAbsoluteTop(draggedNode.dom.tr) - util.getAbsoluteTop(firstNode.dom.tr);\r\n\r\n\t if (!editor.mousemove) {\r\n\t editor.mousemove = util.addEventListener(window, 'mousemove', function (event) {\r\n\t Node.onDrag(nodes, event);\r\n\t });\r\n\t }\r\n\r\n\t if (!editor.mouseup) {\r\n\t editor.mouseup = util.addEventListener(window, 'mouseup',function (event ) {\r\n\t Node.onDragEnd(nodes, event);\r\n\t });\r\n\t }\r\n\r\n\t editor.highlighter.lock();\r\n\t editor.drag = {\r\n\t oldCursor: document.body.style.cursor,\r\n\t oldSelection: editor.getSelection(),\r\n\t oldBeforeNode: beforeNode,\r\n\t mouseX: event.pageX,\r\n\t offsetY: offsetY,\r\n\t level: firstNode.getLevel()\r\n\t };\r\n\t document.body.style.cursor = 'move';\r\n\r\n\t event.preventDefault();\r\n\t};\r\n\r\n\t/**\r\n\t * Drag event, fired when moving the mouse while dragging a Node\r\n\t * @param {Node[] | Node} nodes\r\n\t * @param {Event} event\r\n\t */\r\n\tNode.onDrag = function (nodes, event) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t return Node.onDrag([nodes], event);\r\n\t }\r\n\t if (nodes.length === 0) {\r\n\t return;\r\n\t }\r\n\r\n\t // TODO: this method has grown too large. Split it in a number of methods\r\n\t var editor = nodes[0].editor;\r\n\t var mouseY = event.pageY - editor.drag.offsetY;\r\n\t var mouseX = event.pageX;\r\n\t var trThis, trPrev, trNext, trFirst, trLast, trRoot;\r\n\t var nodePrev, nodeNext;\r\n\t var topThis, topPrev, topFirst, heightThis, bottomNext, heightNext;\r\n\t var moved = false;\r\n\r\n\t // TODO: add an ESC option, which resets to the original position\r\n\r\n\t // move up/down\r\n\t var firstNode = nodes[0];\r\n\t trThis = firstNode.dom.tr;\r\n\t topThis = util.getAbsoluteTop(trThis);\r\n\t heightThis = trThis.offsetHeight;\r\n\t if (mouseY < topThis) {\r\n\t // move up\r\n\t trPrev = trThis;\r\n\t do {\r\n\t trPrev = trPrev.previousSibling;\r\n\t nodePrev = Node.getNodeFromTarget(trPrev);\r\n\t topPrev = trPrev ? util.getAbsoluteTop(trPrev) : 0;\r\n\t }\r\n\t while (trPrev && mouseY < topPrev);\r\n\r\n\t if (nodePrev && !nodePrev.parent) {\r\n\t nodePrev = undefined;\r\n\t }\r\n\r\n\t if (!nodePrev) {\r\n\t // move to the first node\r\n\t trRoot = trThis.parentNode.firstChild;\r\n\t trPrev = trRoot ? trRoot.nextSibling : undefined;\r\n\t nodePrev = Node.getNodeFromTarget(trPrev);\r\n\t if (nodePrev == firstNode) {\r\n\t nodePrev = undefined;\r\n\t }\r\n\t }\r\n\r\n\t if (nodePrev) {\r\n\t // check if mouseY is really inside the found node\r\n\t trPrev = nodePrev.dom.tr;\r\n\t topPrev = trPrev ? util.getAbsoluteTop(trPrev) : 0;\r\n\t if (mouseY > topPrev + heightThis) {\r\n\t nodePrev = undefined;\r\n\t }\r\n\t }\r\n\r\n\t if (nodePrev) {\r\n\t nodes.forEach(function (node) {\r\n\t nodePrev.parent.moveBefore(node, nodePrev);\r\n\t });\r\n\t moved = true;\r\n\t }\r\n\t }\r\n\t else {\r\n\t // move down\r\n\t var lastNode = nodes[nodes.length - 1];\r\n\t trLast = (lastNode.expanded && lastNode.append) ? lastNode.append.getDom() : lastNode.dom.tr;\r\n\t trFirst = trLast ? trLast.nextSibling : undefined;\r\n\t if (trFirst) {\r\n\t topFirst = util.getAbsoluteTop(trFirst);\r\n\t trNext = trFirst;\r\n\t do {\r\n\t nodeNext = Node.getNodeFromTarget(trNext);\r\n\t if (trNext) {\r\n\t bottomNext = trNext.nextSibling ?\r\n\t util.getAbsoluteTop(trNext.nextSibling) : 0;\r\n\t heightNext = trNext ? (bottomNext - topFirst) : 0;\r\n\r\n\t if (nodeNext.parent.childs.length == nodes.length &&\r\n\t nodeNext.parent.childs[nodes.length - 1] == lastNode) {\r\n\t // We are about to remove the last child of this parent,\r\n\t // which will make the parents appendNode visible.\r\n\t topThis += 27;\r\n\t // TODO: dangerous to suppose the height of the appendNode a constant of 27 px.\r\n\t }\r\n\t }\r\n\r\n\t trNext = trNext.nextSibling;\r\n\t }\r\n\t while (trNext && mouseY > topThis + heightNext);\r\n\r\n\t if (nodeNext && nodeNext.parent) {\r\n\t // calculate the desired level\r\n\t var diffX = (mouseX - editor.drag.mouseX);\r\n\t var diffLevel = Math.round(diffX / 24 / 2);\r\n\t var level = editor.drag.level + diffLevel; // desired level\r\n\t var levelNext = nodeNext.getLevel(); // level to be\r\n\r\n\t // find the best fitting level (move upwards over the append nodes)\r\n\t trPrev = nodeNext.dom.tr.previousSibling;\r\n\t while (levelNext < level && trPrev) {\r\n\t nodePrev = Node.getNodeFromTarget(trPrev);\r\n\r\n\t var isDraggedNode = nodes.some(function (node) {\r\n\t return node === nodePrev || nodePrev._isChildOf(node);\r\n\t });\r\n\r\n\t if (isDraggedNode) {\r\n\t // neglect the dragged nodes themselves and their childs\r\n\t }\r\n\t else if (nodePrev instanceof AppendNode) {\r\n\t var childs = nodePrev.parent.childs;\r\n\t if (childs.length != nodes.length || childs[nodes.length - 1] != lastNode) {\r\n\t // non-visible append node of a list of childs\r\n\t // consisting of not only this node (else the\r\n\t // append node will change into a visible \"empty\"\r\n\t // text when removing this node).\r\n\t nodeNext = Node.getNodeFromTarget(trPrev);\r\n\t levelNext = nodeNext.getLevel();\r\n\t }\r\n\t else {\r\n\t break;\r\n\t }\r\n\t }\r\n\t else {\r\n\t break;\r\n\t }\r\n\r\n\t trPrev = trPrev.previousSibling;\r\n\t }\r\n\r\n\t // move the node when its position is changed\r\n\t if (trLast.nextSibling != nodeNext.dom.tr) {\r\n\t nodes.forEach(function (node) {\r\n\t nodeNext.parent.moveBefore(node, nodeNext);\r\n\t });\r\n\t moved = true;\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t if (moved) {\r\n\t // update the dragging parameters when moved\r\n\t editor.drag.mouseX = mouseX;\r\n\t editor.drag.level = firstNode.getLevel();\r\n\t }\r\n\r\n\t // auto scroll when hovering around the top of the editor\r\n\t editor.startAutoScroll(mouseY);\r\n\r\n\t event.preventDefault();\r\n\t};\r\n\r\n\t/**\r\n\t * Drag event, fired on mouseup after having dragged a node\r\n\t * @param {Node[] | Node} nodes\r\n\t * @param {Event} event\r\n\t */\r\n\tNode.onDragEnd = function (nodes, event) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t return Node.onDrag([nodes], event);\r\n\t }\r\n\t if (nodes.length === 0) {\r\n\t return;\r\n\t }\r\n\r\n\t var firstNode = nodes[0];\r\n\t var editor = firstNode.editor;\r\n\t var parent = firstNode.parent;\r\n\t var firstIndex = parent.childs.indexOf(firstNode);\r\n\t var beforeNode = parent.childs[firstIndex + nodes.length] || parent.append;\r\n\r\n\t // set focus to the context menu button of the first node\r\n\t if (nodes[0]) {\r\n\t nodes[0].dom.menu.focus();\r\n\t }\r\n\r\n\t var params = {\r\n\t nodes: nodes,\r\n\t oldSelection: editor.drag.oldSelection,\r\n\t newSelection: editor.getSelection(),\r\n\t oldBeforeNode: editor.drag.oldBeforeNode,\r\n\t newBeforeNode: beforeNode\r\n\t };\r\n\r\n\t if (params.oldBeforeNode != params.newBeforeNode) {\r\n\t // only register this action if the node is actually moved to another place\r\n\t editor._onAction('moveNodes', params);\r\n\t }\r\n\r\n\t document.body.style.cursor = editor.drag.oldCursor;\r\n\t editor.highlighter.unlock();\r\n\t nodes.forEach(function (node) {\r\n\t if (event.target !== node.dom.drag && event.target !== node.dom.menu) {\r\n\t editor.highlighter.unhighlight();\r\n\t }\r\n\t });\r\n\t delete editor.drag;\r\n\r\n\t if (editor.mousemove) {\r\n\t util.removeEventListener(window, 'mousemove', editor.mousemove);\r\n\t delete editor.mousemove;\r\n\t }\r\n\t if (editor.mouseup) {\r\n\t util.removeEventListener(window, 'mouseup', editor.mouseup);\r\n\t delete editor.mouseup;\r\n\t }\r\n\r\n\t // Stop any running auto scroll\r\n\t editor.stopAutoScroll();\r\n\r\n\t event.preventDefault();\r\n\t};\r\n\r\n\t/**\r\n\t * Test if this node is a child of an other node\r\n\t * @param {Node} node\r\n\t * @return {boolean} isChild\r\n\t * @private\r\n\t */\r\n\tNode.prototype._isChildOf = function (node) {\r\n\t var n = this.parent;\r\n\t while (n) {\r\n\t if (n == node) {\r\n\t return true;\r\n\t }\r\n\t n = n.parent;\r\n\t }\r\n\r\n\t return false;\r\n\t};\r\n\r\n\t/**\r\n\t * Create an editable field\r\n\t * @return {Element} domField\r\n\t * @private\r\n\t */\r\n\tNode.prototype._createDomField = function () {\r\n\t return document.createElement('div');\r\n\t};\r\n\r\n\t/**\r\n\t * Set highlighting for this node and all its childs.\r\n\t * Only applied to the currently visible (expanded childs)\r\n\t * @param {boolean} highlight\r\n\t */\r\n\tNode.prototype.setHighlight = function (highlight) {\r\n\t if (this.dom.tr) {\r\n\t if (highlight) {\r\n\t util.addClassName(this.dom.tr, 'jsoneditor-highlight');\r\n\t }\r\n\t else {\r\n\t util.removeClassName(this.dom.tr, 'jsoneditor-highlight');\r\n\t }\r\n\r\n\t if (this.append) {\r\n\t this.append.setHighlight(highlight);\r\n\t }\r\n\r\n\t if (this.childs) {\r\n\t this.childs.forEach(function (child) {\r\n\t child.setHighlight(highlight);\r\n\t });\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Select or deselect a node\r\n\t * @param {boolean} selected\r\n\t * @param {boolean} [isFirst]\r\n\t */\r\n\tNode.prototype.setSelected = function (selected, isFirst) {\r\n\t this.selected = selected;\r\n\r\n\t if (this.dom.tr) {\r\n\t if (selected) {\r\n\t util.addClassName(this.dom.tr, 'jsoneditor-selected');\r\n\t }\r\n\t else {\r\n\t util.removeClassName(this.dom.tr, 'jsoneditor-selected');\r\n\t }\r\n\r\n\t if (isFirst) {\r\n\t util.addClassName(this.dom.tr, 'jsoneditor-first');\r\n\t }\r\n\t else {\r\n\t util.removeClassName(this.dom.tr, 'jsoneditor-first');\r\n\t }\r\n\r\n\t if (this.append) {\r\n\t this.append.setSelected(selected);\r\n\t }\r\n\r\n\t if (this.childs) {\r\n\t this.childs.forEach(function (child) {\r\n\t child.setSelected(selected);\r\n\t });\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Update the value of the node. Only primitive types are allowed, no Object\r\n\t * or Array is allowed.\r\n\t * @param {String | Number | Boolean | null} value\r\n\t */\r\n\tNode.prototype.updateValue = function (value) {\r\n\t this.value = value;\r\n\t this.updateDom();\r\n\t};\r\n\r\n\t/**\r\n\t * Update the field of the node.\r\n\t * @param {String} field\r\n\t */\r\n\tNode.prototype.updateField = function (field) {\r\n\t this.field = field;\r\n\t this.updateDom();\r\n\t};\r\n\r\n\t/**\r\n\t * Update the HTML DOM, optionally recursing through the childs\r\n\t * @param {Object} [options] Available parameters:\r\n\t * {boolean} [recurse] If true, the\r\n\t * DOM of the childs will be updated recursively.\r\n\t * False by default.\r\n\t * {boolean} [updateIndexes] If true, the childs\r\n\t * indexes of the node will be updated too. False by\r\n\t * default.\r\n\t */\r\n\tNode.prototype.updateDom = function (options) {\r\n\t // update level indentation\r\n\t var domTree = this.dom.tree;\r\n\t if (domTree) {\r\n\t domTree.style.marginLeft = this.getLevel() * 24 + 'px';\r\n\t }\r\n\r\n\t // apply field to DOM\r\n\t var domField = this.dom.field;\r\n\t if (domField) {\r\n\t if (this.fieldEditable) {\r\n\t // parent is an object\r\n\t domField.contentEditable = this.editable.field;\r\n\t domField.spellcheck = false;\r\n\t domField.className = 'jsoneditor-field';\r\n\t }\r\n\t else {\r\n\t // parent is an array this is the root node\r\n\t domField.className = 'jsoneditor-readonly';\r\n\t }\r\n\r\n\t var fieldText;\r\n\t if (this.index != undefined) {\r\n\t fieldText = this.index;\r\n\t }\r\n\t else if (this.field != undefined) {\r\n\t fieldText = this.field;\r\n\t }\r\n\t else if (this._hasChilds()) {\r\n\t fieldText = this.type;\r\n\t }\r\n\t else {\r\n\t fieldText = '';\r\n\t }\r\n\t domField.innerHTML = this._escapeHTML(fieldText);\r\n\r\n\t this._updateSchema();\r\n\t }\r\n\r\n\t // apply value to DOM\r\n\t var domValue = this.dom.value;\r\n\t if (domValue) {\r\n\t var count = this.childs ? this.childs.length : 0;\r\n\t if (this.type == 'array') {\r\n\t domValue.innerHTML = '[' + count + ']';\r\n\t util.addClassName(this.dom.tr, 'jsoneditor-expandable');\r\n\t }\r\n\t else if (this.type == 'object') {\r\n\t domValue.innerHTML = '{' + count + '}';\r\n\t util.addClassName(this.dom.tr, 'jsoneditor-expandable');\r\n\t }\r\n\t else {\r\n\t domValue.innerHTML = this._escapeHTML(this.value);\r\n\t util.removeClassName(this.dom.tr, 'jsoneditor-expandable');\r\n\t }\r\n\t }\r\n\r\n\t // update field and value\r\n\t this._updateDomField();\r\n\t this._updateDomValue();\r\n\r\n\t // update childs indexes\r\n\t if (options && options.updateIndexes === true) {\r\n\t // updateIndexes is true or undefined\r\n\t this._updateDomIndexes();\r\n\t }\r\n\r\n\t if (options && options.recurse === true) {\r\n\t // recurse is true or undefined. update childs recursively\r\n\t if (this.childs) {\r\n\t this.childs.forEach(function (child) {\r\n\t child.updateDom(options);\r\n\t });\r\n\t }\r\n\t }\r\n\r\n\t // update row with append button\r\n\t if (this.append) {\r\n\t this.append.updateDom();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Locate the JSON schema of the node and check for any enum type\r\n\t * @private\r\n\t */\r\n\tNode.prototype._updateSchema = function () {\r\n\t //Locating the schema of the node and checking for any enum type\r\n\t if(this.editor && this.editor.options) {\r\n\t // find the part of the json schema matching this nodes path\r\n\t this.schema = Node._findSchema(this.editor.options.schema, this.getPath());\r\n\t if (this.schema) {\r\n\t this.enum = Node._findEnum(this.schema);\r\n\t }\r\n\t else {\r\n\t delete this.enum;\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * find an enum definition in a JSON schema, as property `enum` or inside\r\n\t * one of the schemas composites (`oneOf`, `anyOf`, `allOf`)\r\n\t * @param {Object} schema\r\n\t * @return {Array | null} Returns the enum when found, null otherwise.\r\n\t * @private\r\n\t */\r\n\tNode._findEnum = function (schema) {\r\n\t if (schema.enum) {\r\n\t return schema.enum;\r\n\t }\r\n\r\n\t var composite = schema.oneOf || schema.anyOf || schema.allOf;\r\n\t if (composite) {\r\n\t var match = composite.filter(function (entry) {return entry.enum});\r\n\t if (match.length > 0) {\r\n\t return match[0].enum;\r\n\t }\r\n\t }\r\n\r\n\t return null\r\n\t};\r\n\r\n\t/**\r\n\t * Return the part of a JSON schema matching given path.\r\n\t * @param {Object} schema\r\n\t * @param {Array.} path\r\n\t * @return {Object | null}\r\n\t * @private\r\n\t */\r\n\tNode._findSchema = function (schema, path) {\r\n\t var childSchema = schema;\r\n\r\n\t for (var i = 0; i < path.length && childSchema; i++) {\r\n\t var key = path[i];\r\n\t if (typeof key === 'string' && childSchema.properties) {\r\n\t childSchema = childSchema.properties[key] || null\r\n\t }\r\n\t else if (typeof key === 'number' && childSchema.items) {\r\n\t childSchema = childSchema.items\r\n\t }\r\n\t }\r\n\r\n\t return childSchema\r\n\t};\r\n\r\n\t/**\r\n\t * Update the DOM of the childs of a node: update indexes and undefined field\r\n\t * names.\r\n\t * Only applicable when structure is an array or object\r\n\t * @private\r\n\t */\r\n\tNode.prototype._updateDomIndexes = function () {\r\n\t var domValue = this.dom.value;\r\n\t var childs = this.childs;\r\n\t if (domValue && childs) {\r\n\t if (this.type == 'array') {\r\n\t childs.forEach(function (child, index) {\r\n\t child.index = index;\r\n\t var childField = child.dom.field;\r\n\t if (childField) {\r\n\t childField.innerHTML = index;\r\n\t }\r\n\t });\r\n\t }\r\n\t else if (this.type == 'object') {\r\n\t childs.forEach(function (child) {\r\n\t if (child.index != undefined) {\r\n\t delete child.index;\r\n\r\n\t if (child.field == undefined) {\r\n\t child.field = '';\r\n\t }\r\n\t }\r\n\t });\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Create an editable value\r\n\t * @private\r\n\t */\r\n\tNode.prototype._createDomValue = function () {\r\n\t var domValue;\r\n\r\n\t if (this.type == 'array') {\r\n\t domValue = document.createElement('div');\r\n\t domValue.innerHTML = '[...]';\r\n\t }\r\n\t else if (this.type == 'object') {\r\n\t domValue = document.createElement('div');\r\n\t domValue.innerHTML = '{...}';\r\n\t }\r\n\t else {\r\n\t if (!this.editable.value && util.isUrl(this.value)) {\r\n\t // create a link in case of read-only editor and value containing an url\r\n\t domValue = document.createElement('a');\r\n\t domValue.href = this.value;\r\n\t domValue.target = '_blank';\r\n\t domValue.innerHTML = this._escapeHTML(this.value);\r\n\t }\r\n\t else {\r\n\t // create an editable or read-only div\r\n\t domValue = document.createElement('div');\r\n\t domValue.contentEditable = this.editable.value;\r\n\t domValue.spellcheck = false;\r\n\t domValue.innerHTML = this._escapeHTML(this.value);\r\n\t }\r\n\t }\r\n\r\n\t return domValue;\r\n\t};\r\n\r\n\t/**\r\n\t * Create an expand/collapse button\r\n\t * @return {Element} expand\r\n\t * @private\r\n\t */\r\n\tNode.prototype._createDomExpandButton = function () {\r\n\t // create expand button\r\n\t var expand = document.createElement('button');\r\n\t expand.type = 'button';\r\n\t if (this._hasChilds()) {\r\n\t expand.className = this.expanded ? 'jsoneditor-expanded' : 'jsoneditor-collapsed';\r\n\t expand.title =\r\n\t 'Click to expand/collapse this field (Ctrl+E). \\n' +\r\n\t 'Ctrl+Click to expand/collapse including all childs.';\r\n\t }\r\n\t else {\r\n\t expand.className = 'jsoneditor-invisible';\r\n\t expand.title = '';\r\n\t }\r\n\r\n\t return expand;\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Create a DOM tree element, containing the expand/collapse button\r\n\t * @return {Element} domTree\r\n\t * @private\r\n\t */\r\n\tNode.prototype._createDomTree = function () {\r\n\t var dom = this.dom;\r\n\t var domTree = document.createElement('table');\r\n\t var tbody = document.createElement('tbody');\r\n\t domTree.style.borderCollapse = 'collapse'; // TODO: put in css\r\n\t domTree.className = 'jsoneditor-values';\r\n\t domTree.appendChild(tbody);\r\n\t var tr = document.createElement('tr');\r\n\t tbody.appendChild(tr);\r\n\r\n\t // create expand button\r\n\t var tdExpand = document.createElement('td');\r\n\t tdExpand.className = 'jsoneditor-tree';\r\n\t tr.appendChild(tdExpand);\r\n\t dom.expand = this._createDomExpandButton();\r\n\t tdExpand.appendChild(dom.expand);\r\n\t dom.tdExpand = tdExpand;\r\n\r\n\t // create the field\r\n\t var tdField = document.createElement('td');\r\n\t tdField.className = 'jsoneditor-tree';\r\n\t tr.appendChild(tdField);\r\n\t dom.field = this._createDomField();\r\n\t tdField.appendChild(dom.field);\r\n\t dom.tdField = tdField;\r\n\r\n\t // create a separator\r\n\t var tdSeparator = document.createElement('td');\r\n\t tdSeparator.className = 'jsoneditor-tree';\r\n\t tr.appendChild(tdSeparator);\r\n\t if (this.type != 'object' && this.type != 'array') {\r\n\t tdSeparator.appendChild(document.createTextNode(':'));\r\n\t tdSeparator.className = 'jsoneditor-separator';\r\n\t }\r\n\t dom.tdSeparator = tdSeparator;\r\n\r\n\t // create the value\r\n\t var tdValue = document.createElement('td');\r\n\t tdValue.className = 'jsoneditor-tree';\r\n\t tr.appendChild(tdValue);\r\n\t dom.value = this._createDomValue();\r\n\t tdValue.appendChild(dom.value);\r\n\t dom.tdValue = tdValue;\r\n\r\n\t return domTree;\r\n\t};\r\n\r\n\t/**\r\n\t * Handle an event. The event is caught centrally by the editor\r\n\t * @param {Event} event\r\n\t */\r\n\tNode.prototype.onEvent = function (event) {\r\n\t var type = event.type,\r\n\t target = event.target || event.srcElement,\r\n\t dom = this.dom,\r\n\t node = this,\r\n\t expandable = this._hasChilds();\r\n\r\n\t // check if mouse is on menu or on dragarea.\r\n\t // If so, highlight current row and its childs\r\n\t if (target == dom.drag || target == dom.menu) {\r\n\t if (type == 'mouseover') {\r\n\t this.editor.highlighter.highlight(this);\r\n\t }\r\n\t else if (type == 'mouseout') {\r\n\t this.editor.highlighter.unhighlight();\r\n\t }\r\n\t }\r\n\r\n\t // context menu events\r\n\t if (type == 'click' && target == dom.menu) {\r\n\t var highlighter = node.editor.highlighter;\r\n\t highlighter.highlight(node);\r\n\t highlighter.lock();\r\n\t util.addClassName(dom.menu, 'jsoneditor-selected');\r\n\t this.showContextMenu(dom.menu, function () {\r\n\t util.removeClassName(dom.menu, 'jsoneditor-selected');\r\n\t highlighter.unlock();\r\n\t highlighter.unhighlight();\r\n\t });\r\n\t }\r\n\r\n\t // expand events\r\n\t if (type == 'click') {\r\n\t if (target == dom.expand ||\r\n\t ((node.editor.options.mode === 'view' || node.editor.options.mode === 'form') && target.nodeName === 'DIV')) {\r\n\t if (expandable) {\r\n\t var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all\r\n\t this._onExpand(recurse);\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t // swap the value of a boolean when the checkbox displayed left is clicked\r\n\t if (type == 'change' && target == dom.checkbox) {\r\n\t this.dom.value.innerHTML = !this.value;\r\n\t this._getDomValue();\r\n\t }\r\n\r\n\t // update the value of the node based on the selected option\r\n\t if (type == 'change' && target == dom.select) {\r\n\t this.dom.value.innerHTML = dom.select.value;\r\n\t this._getDomValue();\r\n\t this._updateDomValue();\r\n\t }\r\n\r\n\t // value events\r\n\t var domValue = dom.value;\r\n\t if (target == domValue) {\r\n\t //noinspection FallthroughInSwitchStatementJS\r\n\t switch (type) {\r\n\t case 'blur':\r\n\t case 'change':\r\n\t this._getDomValue(true);\r\n\t this._updateDomValue();\r\n\t if (this.value) {\r\n\t domValue.innerHTML = this._escapeHTML(this.value);\r\n\t }\r\n\t break;\r\n\r\n\t case 'input':\r\n\t //this._debouncedGetDomValue(true); // TODO\r\n\t this._getDomValue(true);\r\n\t this._updateDomValue();\r\n\t break;\r\n\r\n\t case 'keydown':\r\n\t case 'mousedown':\r\n\t // TODO: cleanup\r\n\t this.editor.selection = this.editor.getSelection();\r\n\t break;\r\n\r\n\t case 'click':\r\n\t if (event.ctrlKey || !this.editable.value) {\r\n\t if (util.isUrl(this.value)) {\r\n\t window.open(this.value, '_blank');\r\n\t }\r\n\t }\r\n\t break;\r\n\r\n\t case 'keyup':\r\n\t //this._debouncedGetDomValue(true); // TODO\r\n\t this._getDomValue(true);\r\n\t this._updateDomValue();\r\n\t break;\r\n\r\n\t case 'cut':\r\n\t case 'paste':\r\n\t setTimeout(function () {\r\n\t node._getDomValue(true);\r\n\t node._updateDomValue();\r\n\t }, 1);\r\n\t break;\r\n\t }\r\n\t }\r\n\r\n\t // field events\r\n\t var domField = dom.field;\r\n\t if (target == domField) {\r\n\t switch (type) {\r\n\t case 'blur':\r\n\t case 'change':\r\n\t this._getDomField(true);\r\n\t this._updateDomField();\r\n\t if (this.field) {\r\n\t domField.innerHTML = this._escapeHTML(this.field);\r\n\t }\r\n\t break;\r\n\r\n\t case 'input':\r\n\t this._getDomField(true);\r\n\t this._updateSchema();\r\n\t this._updateDomField();\r\n\t this._updateDomValue();\r\n\t break;\r\n\r\n\t case 'keydown':\r\n\t case 'mousedown':\r\n\t this.editor.selection = this.editor.getSelection();\r\n\t break;\r\n\r\n\t case 'keyup':\r\n\t this._getDomField(true);\r\n\t this._updateDomField();\r\n\t break;\r\n\r\n\t case 'cut':\r\n\t case 'paste':\r\n\t setTimeout(function () {\r\n\t node._getDomField(true);\r\n\t node._updateDomField();\r\n\t }, 1);\r\n\t break;\r\n\t }\r\n\t }\r\n\r\n\t // focus\r\n\t // when clicked in whitespace left or right from the field or value, set focus\r\n\t var domTree = dom.tree;\r\n\t if (target == domTree.parentNode && type == 'click' && !event.hasMoved) {\r\n\t var left = (event.offsetX != undefined) ?\r\n\t (event.offsetX < (this.getLevel() + 1) * 24) :\r\n\t (event.pageX < util.getAbsoluteLeft(dom.tdSeparator));// for FF\r\n\t if (left || expandable) {\r\n\t // node is expandable when it is an object or array\r\n\t if (domField) {\r\n\t util.setEndOfContentEditable(domField);\r\n\t domField.focus();\r\n\t }\r\n\t }\r\n\t else {\r\n\t if (domValue && !this.enum) {\r\n\t util.setEndOfContentEditable(domValue);\r\n\t domValue.focus();\r\n\t }\r\n\t }\r\n\t }\r\n\t if (((target == dom.tdExpand && !expandable) || target == dom.tdField || target == dom.tdSeparator) &&\r\n\t (type == 'click' && !event.hasMoved)) {\r\n\t if (domField) {\r\n\t util.setEndOfContentEditable(domField);\r\n\t domField.focus();\r\n\t }\r\n\t }\r\n\r\n\t if (type == 'keydown') {\r\n\t this.onKeyDown(event);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Key down event handler\r\n\t * @param {Event} event\r\n\t */\r\n\tNode.prototype.onKeyDown = function (event) {\r\n\t var keynum = event.which || event.keyCode;\r\n\t var target = event.target || event.srcElement;\r\n\t var ctrlKey = event.ctrlKey;\r\n\t var shiftKey = event.shiftKey;\r\n\t var altKey = event.altKey;\r\n\t var handled = false;\r\n\t var prevNode, nextNode, nextDom, nextDom2;\r\n\t var editable = this.editor.options.mode === 'tree';\r\n\t var oldSelection;\r\n\t var oldBeforeNode;\r\n\t var nodes;\r\n\t var multiselection;\r\n\t var selectedNodes = this.editor.multiselection.nodes.length > 0\r\n\t ? this.editor.multiselection.nodes\r\n\t : [this];\r\n\t var firstNode = selectedNodes[0];\r\n\t var lastNode = selectedNodes[selectedNodes.length - 1];\r\n\r\n\t // console.log(ctrlKey, keynum, event.charCode); // TODO: cleanup\r\n\t if (keynum == 13) { // Enter\r\n\t if (target == this.dom.value) {\r\n\t if (!this.editable.value || event.ctrlKey) {\r\n\t if (util.isUrl(this.value)) {\r\n\t window.open(this.value, '_blank');\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t }\r\n\t else if (target == this.dom.expand) {\r\n\t var expandable = this._hasChilds();\r\n\t if (expandable) {\r\n\t var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all\r\n\t this._onExpand(recurse);\r\n\t target.focus();\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t }\r\n\t else if (keynum == 68) { // D\r\n\t if (ctrlKey && editable) { // Ctrl+D\r\n\t Node.onDuplicate(selectedNodes);\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 69) { // E\r\n\t if (ctrlKey) { // Ctrl+E and Ctrl+Shift+E\r\n\t this._onExpand(shiftKey); // recurse = shiftKey\r\n\t target.focus(); // TODO: should restore focus in case of recursing expand (which takes DOM offline)\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 77 && editable) { // M\r\n\t if (ctrlKey) { // Ctrl+M\r\n\t this.showContextMenu(target);\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 46 && editable) { // Del\r\n\t if (ctrlKey) { // Ctrl+Del\r\n\t Node.onRemove(selectedNodes);\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 45 && editable) { // Ins\r\n\t if (ctrlKey && !shiftKey) { // Ctrl+Ins\r\n\t this._onInsertBefore();\r\n\t handled = true;\r\n\t }\r\n\t else if (ctrlKey && shiftKey) { // Ctrl+Shift+Ins\r\n\t this._onInsertAfter();\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 35) { // End\r\n\t if (altKey) { // Alt+End\r\n\t // find the last node\r\n\t var endNode = this._lastNode();\r\n\t if (endNode) {\r\n\t endNode.focus(Node.focusElement || this._getElementName(target));\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 36) { // Home\r\n\t if (altKey) { // Alt+Home\r\n\t // find the first node\r\n\t var homeNode = this._firstNode();\r\n\t if (homeNode) {\r\n\t homeNode.focus(Node.focusElement || this._getElementName(target));\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 37) { // Arrow Left\r\n\t if (altKey && !shiftKey) { // Alt + Arrow Left\r\n\t // move to left element\r\n\t var prevElement = this._previousElement(target);\r\n\t if (prevElement) {\r\n\t this.focus(this._getElementName(prevElement));\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow left\r\n\t if (lastNode.expanded) {\r\n\t var appendDom = lastNode.getAppend();\r\n\t nextDom = appendDom ? appendDom.nextSibling : undefined;\r\n\t }\r\n\t else {\r\n\t var dom = lastNode.getDom();\r\n\t nextDom = dom.nextSibling;\r\n\t }\r\n\t if (nextDom) {\r\n\t nextNode = Node.getNodeFromTarget(nextDom);\r\n\t nextDom2 = nextDom.nextSibling;\r\n\t nextNode2 = Node.getNodeFromTarget(nextDom2);\r\n\t if (nextNode && nextNode instanceof AppendNode &&\r\n\t !(lastNode.parent.childs.length == 1) &&\r\n\t nextNode2 && nextNode2.parent) {\r\n\t oldSelection = this.editor.getSelection();\r\n\t oldBeforeNode = lastNode._nextSibling();\r\n\r\n\t selectedNodes.forEach(function (node) {\r\n\t nextNode2.parent.moveBefore(node, nextNode2);\r\n\t });\r\n\t this.focus(Node.focusElement || this._getElementName(target));\r\n\r\n\t this.editor._onAction('moveNodes', {\r\n\t nodes: selectedNodes,\r\n\t oldBeforeNode: oldBeforeNode,\r\n\t newBeforeNode: nextNode2,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: this.editor.getSelection()\r\n\t });\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t else if (keynum == 38) { // Arrow Up\r\n\t if (altKey && !shiftKey) { // Alt + Arrow Up\r\n\t // find the previous node\r\n\t prevNode = this._previousNode();\r\n\t if (prevNode) {\r\n\t this.editor.deselect(true);\r\n\t prevNode.focus(Node.focusElement || this._getElementName(target));\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (!altKey && ctrlKey && shiftKey && editable) { // Ctrl + Shift + Arrow Up\r\n\t // select multiple nodes\r\n\t prevNode = this._previousNode();\r\n\t if (prevNode) {\r\n\t multiselection = this.editor.multiselection;\r\n\t multiselection.start = multiselection.start || this;\r\n\t multiselection.end = prevNode;\r\n\t nodes = this.editor._findTopLevelNodes(multiselection.start, multiselection.end);\r\n\r\n\t this.editor.select(nodes);\r\n\t prevNode.focus('field'); // select field as we know this always exists\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow Up\r\n\t // find the previous node\r\n\t prevNode = firstNode._previousNode();\r\n\t if (prevNode && prevNode.parent) {\r\n\t oldSelection = this.editor.getSelection();\r\n\t oldBeforeNode = lastNode._nextSibling();\r\n\r\n\t selectedNodes.forEach(function (node) {\r\n\t prevNode.parent.moveBefore(node, prevNode);\r\n\t });\r\n\t this.focus(Node.focusElement || this._getElementName(target));\r\n\r\n\t this.editor._onAction('moveNodes', {\r\n\t nodes: selectedNodes,\r\n\t oldBeforeNode: oldBeforeNode,\r\n\t newBeforeNode: prevNode,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: this.editor.getSelection()\r\n\t });\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 39) { // Arrow Right\r\n\t if (altKey && !shiftKey) { // Alt + Arrow Right\r\n\t // move to right element\r\n\t var nextElement = this._nextElement(target);\r\n\t if (nextElement) {\r\n\t this.focus(this._getElementName(nextElement));\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow Right\r\n\t dom = firstNode.getDom();\r\n\t var prevDom = dom.previousSibling;\r\n\t if (prevDom) {\r\n\t prevNode = Node.getNodeFromTarget(prevDom);\r\n\t if (prevNode && prevNode.parent &&\r\n\t (prevNode instanceof AppendNode)\r\n\t && !prevNode.isVisible()) {\r\n\t oldSelection = this.editor.getSelection();\r\n\t oldBeforeNode = lastNode._nextSibling();\r\n\r\n\t selectedNodes.forEach(function (node) {\r\n\t prevNode.parent.moveBefore(node, prevNode);\r\n\t });\r\n\t this.focus(Node.focusElement || this._getElementName(target));\r\n\r\n\t this.editor._onAction('moveNodes', {\r\n\t nodes: selectedNodes,\r\n\t oldBeforeNode: oldBeforeNode,\r\n\t newBeforeNode: prevNode,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: this.editor.getSelection()\r\n\t });\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t else if (keynum == 40) { // Arrow Down\r\n\t if (altKey && !shiftKey) { // Alt + Arrow Down\r\n\t // find the next node\r\n\t nextNode = this._nextNode();\r\n\t if (nextNode) {\r\n\t this.editor.deselect(true);\r\n\t nextNode.focus(Node.focusElement || this._getElementName(target));\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (!altKey && ctrlKey && shiftKey && editable) { // Ctrl + Shift + Arrow Down\r\n\t // select multiple nodes\r\n\t nextNode = this._nextNode();\r\n\t if (nextNode) {\r\n\t multiselection = this.editor.multiselection;\r\n\t multiselection.start = multiselection.start || this;\r\n\t multiselection.end = nextNode;\r\n\t nodes = this.editor._findTopLevelNodes(multiselection.start, multiselection.end);\r\n\r\n\t this.editor.select(nodes);\r\n\t nextNode.focus('field'); // select field as we know this always exists\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow Down\r\n\t // find the 2nd next node and move before that one\r\n\t if (lastNode.expanded) {\r\n\t nextNode = lastNode.append ? lastNode.append._nextNode() : undefined;\r\n\t }\r\n\t else {\r\n\t nextNode = lastNode._nextNode();\r\n\t }\r\n\t var nextNode2 = nextNode && (nextNode._nextNode() || nextNode.parent.append);\r\n\t if (nextNode2 && nextNode2.parent) {\r\n\t oldSelection = this.editor.getSelection();\r\n\t oldBeforeNode = lastNode._nextSibling();\r\n\r\n\t selectedNodes.forEach(function (node) {\r\n\t nextNode2.parent.moveBefore(node, nextNode2);\r\n\t });\r\n\t this.focus(Node.focusElement || this._getElementName(target));\r\n\r\n\t this.editor._onAction('moveNodes', {\r\n\t nodes: selectedNodes,\r\n\t oldBeforeNode: oldBeforeNode,\r\n\t newBeforeNode: nextNode2,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: this.editor.getSelection()\r\n\t });\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\r\n\t if (handled) {\r\n\t event.preventDefault();\r\n\t event.stopPropagation();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Handle the expand event, when clicked on the expand button\r\n\t * @param {boolean} recurse If true, child nodes will be expanded too\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onExpand = function (recurse) {\r\n\t if (recurse) {\r\n\t // Take the table offline\r\n\t var table = this.dom.tr.parentNode; // TODO: not nice to access the main table like this\r\n\t var frame = table.parentNode;\r\n\t var scrollTop = frame.scrollTop;\r\n\t frame.removeChild(table);\r\n\t }\r\n\r\n\t if (this.expanded) {\r\n\t this.collapse(recurse);\r\n\t }\r\n\t else {\r\n\t this.expand(recurse);\r\n\t }\r\n\r\n\t if (recurse) {\r\n\t // Put the table online again\r\n\t frame.appendChild(table);\r\n\t frame.scrollTop = scrollTop;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Remove nodes\r\n\t * @param {Node[] | Node} nodes\r\n\t */\r\n\tNode.onRemove = function(nodes) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t return Node.onRemove([nodes]);\r\n\t }\r\n\r\n\t if (nodes && nodes.length > 0) {\r\n\t var firstNode = nodes[0];\r\n\t var parent = firstNode.parent;\r\n\t var editor = firstNode.editor;\r\n\t var firstIndex = firstNode.getIndex();\r\n\t editor.highlighter.unhighlight();\r\n\r\n\t // adjust the focus\r\n\t var oldSelection = editor.getSelection();\r\n\t Node.blurNodes(nodes);\r\n\t var newSelection = editor.getSelection();\r\n\r\n\t // remove the nodes\r\n\t nodes.forEach(function (node) {\r\n\t node.parent._remove(node);\r\n\t });\r\n\r\n\t // store history action\r\n\t editor._onAction('removeNodes', {\r\n\t nodes: nodes.slice(0), // store a copy of the array!\r\n\t parent: parent,\r\n\t index: firstIndex,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Duplicate nodes\r\n\t * duplicated nodes will be added right after the original nodes\r\n\t * @param {Node[] | Node} nodes\r\n\t */\r\n\tNode.onDuplicate = function(nodes) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t return Node.onDuplicate([nodes]);\r\n\t }\r\n\r\n\t if (nodes && nodes.length > 0) {\r\n\t var lastNode = nodes[nodes.length - 1];\r\n\t var parent = lastNode.parent;\r\n\t var editor = lastNode.editor;\r\n\r\n\t editor.deselect(editor.multiselection.nodes);\r\n\r\n\t // duplicate the nodes\r\n\t var oldSelection = editor.getSelection();\r\n\t var afterNode = lastNode;\r\n\t var clones = nodes.map(function (node) {\r\n\t var clone = node.clone();\r\n\t parent.insertAfter(clone, afterNode);\r\n\t afterNode = clone;\r\n\t return clone;\r\n\t });\r\n\r\n\t // set selection to the duplicated nodes\r\n\t if (nodes.length === 1) {\r\n\t clones[0].focus();\r\n\t }\r\n\t else {\r\n\t editor.select(clones);\r\n\t }\r\n\t var newSelection = editor.getSelection();\r\n\r\n\t editor._onAction('duplicateNodes', {\r\n\t afterNode: lastNode,\r\n\t nodes: clones,\r\n\t parent: parent,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Handle insert before event\r\n\t * @param {String} [field]\r\n\t * @param {*} [value]\r\n\t * @param {String} [type] Can be 'auto', 'array', 'object', or 'string'\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onInsertBefore = function (field, value, type) {\r\n\t var oldSelection = this.editor.getSelection();\r\n\r\n\t var newNode = new Node(this.editor, {\r\n\t field: (field != undefined) ? field : '',\r\n\t value: (value != undefined) ? value : '',\r\n\t type: type\r\n\t });\r\n\t newNode.expand(true);\r\n\t this.parent.insertBefore(newNode, this);\r\n\t this.editor.highlighter.unhighlight();\r\n\t newNode.focus('field');\r\n\t var newSelection = this.editor.getSelection();\r\n\r\n\t this.editor._onAction('insertBeforeNodes', {\r\n\t nodes: [newNode],\r\n\t beforeNode: this,\r\n\t parent: this.parent,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\t};\r\n\r\n\t/**\r\n\t * Handle insert after event\r\n\t * @param {String} [field]\r\n\t * @param {*} [value]\r\n\t * @param {String} [type] Can be 'auto', 'array', 'object', or 'string'\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onInsertAfter = function (field, value, type) {\r\n\t var oldSelection = this.editor.getSelection();\r\n\r\n\t var newNode = new Node(this.editor, {\r\n\t field: (field != undefined) ? field : '',\r\n\t value: (value != undefined) ? value : '',\r\n\t type: type\r\n\t });\r\n\t newNode.expand(true);\r\n\t this.parent.insertAfter(newNode, this);\r\n\t this.editor.highlighter.unhighlight();\r\n\t newNode.focus('field');\r\n\t var newSelection = this.editor.getSelection();\r\n\r\n\t this.editor._onAction('insertAfterNodes', {\r\n\t nodes: [newNode],\r\n\t afterNode: this,\r\n\t parent: this.parent,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\t};\r\n\r\n\t/**\r\n\t * Handle append event\r\n\t * @param {String} [field]\r\n\t * @param {*} [value]\r\n\t * @param {String} [type] Can be 'auto', 'array', 'object', or 'string'\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onAppend = function (field, value, type) {\r\n\t var oldSelection = this.editor.getSelection();\r\n\r\n\t var newNode = new Node(this.editor, {\r\n\t field: (field != undefined) ? field : '',\r\n\t value: (value != undefined) ? value : '',\r\n\t type: type\r\n\t });\r\n\t newNode.expand(true);\r\n\t this.parent.appendChild(newNode);\r\n\t this.editor.highlighter.unhighlight();\r\n\t newNode.focus('field');\r\n\t var newSelection = this.editor.getSelection();\r\n\r\n\t this.editor._onAction('appendNodes', {\r\n\t nodes: [newNode],\r\n\t parent: this.parent,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\t};\r\n\r\n\t/**\r\n\t * Change the type of the node's value\r\n\t * @param {String} newType\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onChangeType = function (newType) {\r\n\t var oldType = this.type;\r\n\t if (newType != oldType) {\r\n\t var oldSelection = this.editor.getSelection();\r\n\t this.changeType(newType);\r\n\t var newSelection = this.editor.getSelection();\r\n\r\n\t this.editor._onAction('changeType', {\r\n\t node: this,\r\n\t oldType: oldType,\r\n\t newType: newType,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Sort the child's of the node. Only applicable when the node has type 'object'\r\n\t * or 'array'.\r\n\t * @param {String} direction Sorting direction. Available values: \"asc\", \"desc\"\r\n\t * @private\r\n\t */\r\n\tNode.prototype.sort = function (direction) {\r\n\t if (!this._hasChilds()) {\r\n\t return;\r\n\t }\r\n\r\n\t var order = (direction == 'desc') ? -1 : 1;\r\n\t var prop = (this.type == 'array') ? 'value': 'field';\r\n\t this.hideChilds();\r\n\r\n\t var oldChilds = this.childs;\r\n\t var oldSortOrder = this.sortOrder;\r\n\r\n\t // copy the array (the old one will be kept for an undo action\r\n\t this.childs = this.childs.concat();\r\n\r\n\t // sort the arrays\r\n\t this.childs.sort(function (a, b) {\r\n\t return order * naturalSort(a[prop], b[prop]);\r\n\t });\r\n\t this.sortOrder = (order == 1) ? 'asc' : 'desc';\r\n\r\n\t this.editor._onAction('sort', {\r\n\t node: this,\r\n\t oldChilds: oldChilds,\r\n\t oldSort: oldSortOrder,\r\n\t newChilds: this.childs,\r\n\t newSort: this.sortOrder\r\n\t });\r\n\r\n\t this.showChilds();\r\n\t};\r\n\r\n\t/**\r\n\t * Create a table row with an append button.\r\n\t * @return {HTMLElement | undefined} buttonAppend or undefined when inapplicable\r\n\t */\r\n\tNode.prototype.getAppend = function () {\r\n\t if (!this.append) {\r\n\t this.append = new AppendNode(this.editor);\r\n\t this.append.setParent(this);\r\n\t }\r\n\t return this.append.getDom();\r\n\t};\r\n\r\n\t/**\r\n\t * Find the node from an event target\r\n\t * @param {Node} target\r\n\t * @return {Node | undefined} node or undefined when not found\r\n\t * @static\r\n\t */\r\n\tNode.getNodeFromTarget = function (target) {\r\n\t while (target) {\r\n\t if (target.node) {\r\n\t return target.node;\r\n\t }\r\n\t target = target.parentNode;\r\n\t }\r\n\r\n\t return undefined;\r\n\t};\r\n\r\n\t/**\r\n\t * Remove the focus of given nodes, and move the focus to the (a) node before,\r\n\t * (b) the node after, or (c) the parent node.\r\n\t * @param {Array. | Node} nodes\r\n\t */\r\n\tNode.blurNodes = function (nodes) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t Node.blurNodes([nodes]);\r\n\t return;\r\n\t }\r\n\r\n\t var firstNode = nodes[0];\r\n\t var parent = firstNode.parent;\r\n\t var firstIndex = firstNode.getIndex();\r\n\r\n\t if (parent.childs[firstIndex + nodes.length]) {\r\n\t parent.childs[firstIndex + nodes.length].focus();\r\n\t }\r\n\t else if (parent.childs[firstIndex - 1]) {\r\n\t parent.childs[firstIndex - 1].focus();\r\n\t }\r\n\t else {\r\n\t parent.focus();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the next sibling of current node\r\n\t * @return {Node} nextSibling\r\n\t * @private\r\n\t */\r\n\tNode.prototype._nextSibling = function () {\r\n\t var index = this.parent.childs.indexOf(this);\r\n\t return this.parent.childs[index + 1] || this.parent.append;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the previously rendered node\r\n\t * @return {Node | null} previousNode\r\n\t * @private\r\n\t */\r\n\tNode.prototype._previousNode = function () {\r\n\t var prevNode = null;\r\n\t var dom = this.getDom();\r\n\t if (dom && dom.parentNode) {\r\n\t // find the previous field\r\n\t var prevDom = dom;\r\n\t do {\r\n\t prevDom = prevDom.previousSibling;\r\n\t prevNode = Node.getNodeFromTarget(prevDom);\r\n\t }\r\n\t while (prevDom && (prevNode instanceof AppendNode && !prevNode.isVisible()));\r\n\t }\r\n\t return prevNode;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the next rendered node\r\n\t * @return {Node | null} nextNode\r\n\t * @private\r\n\t */\r\n\tNode.prototype._nextNode = function () {\r\n\t var nextNode = null;\r\n\t var dom = this.getDom();\r\n\t if (dom && dom.parentNode) {\r\n\t // find the previous field\r\n\t var nextDom = dom;\r\n\t do {\r\n\t nextDom = nextDom.nextSibling;\r\n\t nextNode = Node.getNodeFromTarget(nextDom);\r\n\t }\r\n\t while (nextDom && (nextNode instanceof AppendNode && !nextNode.isVisible()));\r\n\t }\r\n\r\n\t return nextNode;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the first rendered node\r\n\t * @return {Node | null} firstNode\r\n\t * @private\r\n\t */\r\n\tNode.prototype._firstNode = function () {\r\n\t var firstNode = null;\r\n\t var dom = this.getDom();\r\n\t if (dom && dom.parentNode) {\r\n\t var firstDom = dom.parentNode.firstChild;\r\n\t firstNode = Node.getNodeFromTarget(firstDom);\r\n\t }\r\n\r\n\t return firstNode;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the last rendered node\r\n\t * @return {Node | null} lastNode\r\n\t * @private\r\n\t */\r\n\tNode.prototype._lastNode = function () {\r\n\t var lastNode = null;\r\n\t var dom = this.getDom();\r\n\t if (dom && dom.parentNode) {\r\n\t var lastDom = dom.parentNode.lastChild;\r\n\t lastNode = Node.getNodeFromTarget(lastDom);\r\n\t while (lastDom && (lastNode instanceof AppendNode && !lastNode.isVisible())) {\r\n\t lastDom = lastDom.previousSibling;\r\n\t lastNode = Node.getNodeFromTarget(lastDom);\r\n\t }\r\n\t }\r\n\t return lastNode;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the next element which can have focus.\r\n\t * @param {Element} elem\r\n\t * @return {Element | null} nextElem\r\n\t * @private\r\n\t */\r\n\tNode.prototype._previousElement = function (elem) {\r\n\t var dom = this.dom;\r\n\t // noinspection FallthroughInSwitchStatementJS\r\n\t switch (elem) {\r\n\t case dom.value:\r\n\t if (this.fieldEditable) {\r\n\t return dom.field;\r\n\t }\r\n\t // intentional fall through\r\n\t case dom.field:\r\n\t if (this._hasChilds()) {\r\n\t return dom.expand;\r\n\t }\r\n\t // intentional fall through\r\n\t case dom.expand:\r\n\t return dom.menu;\r\n\t case dom.menu:\r\n\t if (dom.drag) {\r\n\t return dom.drag;\r\n\t }\r\n\t // intentional fall through\r\n\t default:\r\n\t return null;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the next element which can have focus.\r\n\t * @param {Element} elem\r\n\t * @return {Element | null} nextElem\r\n\t * @private\r\n\t */\r\n\tNode.prototype._nextElement = function (elem) {\r\n\t var dom = this.dom;\r\n\t // noinspection FallthroughInSwitchStatementJS\r\n\t switch (elem) {\r\n\t case dom.drag:\r\n\t return dom.menu;\r\n\t case dom.menu:\r\n\t if (this._hasChilds()) {\r\n\t return dom.expand;\r\n\t }\r\n\t // intentional fall through\r\n\t case dom.expand:\r\n\t if (this.fieldEditable) {\r\n\t return dom.field;\r\n\t }\r\n\t // intentional fall through\r\n\t case dom.field:\r\n\t if (!this._hasChilds()) {\r\n\t return dom.value;\r\n\t }\r\n\t default:\r\n\t return null;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the dom name of given element. returns null if not found.\r\n\t * For example when element == dom.field, \"field\" is returned.\r\n\t * @param {Element} element\r\n\t * @return {String | null} elementName Available elements with name: 'drag',\r\n\t * 'menu', 'expand', 'field', 'value'\r\n\t * @private\r\n\t */\r\n\tNode.prototype._getElementName = function (element) {\r\n\t var dom = this.dom;\r\n\t for (var name in dom) {\r\n\t if (dom.hasOwnProperty(name)) {\r\n\t if (dom[name] == element) {\r\n\t return name;\r\n\t }\r\n\t }\r\n\t }\r\n\t return null;\r\n\t};\r\n\r\n\t/**\r\n\t * Test if this node has childs. This is the case when the node is an object\r\n\t * or array.\r\n\t * @return {boolean} hasChilds\r\n\t * @private\r\n\t */\r\n\tNode.prototype._hasChilds = function () {\r\n\t return this.type == 'array' || this.type == 'object';\r\n\t};\r\n\r\n\t// titles with explanation for the different types\r\n\tNode.TYPE_TITLES = {\r\n\t 'auto': 'Field type \"auto\". ' +\r\n\t 'The field type is automatically determined from the value ' +\r\n\t 'and can be a string, number, boolean, or null.',\r\n\t 'object': 'Field type \"object\". ' +\r\n\t 'An object contains an unordered set of key/value pairs.',\r\n\t 'array': 'Field type \"array\". ' +\r\n\t 'An array contains an ordered collection of values.',\r\n\t 'string': 'Field type \"string\". ' +\r\n\t 'Field type is not determined from the value, ' +\r\n\t 'but always returned as string.'\r\n\t};\r\n\r\n\t/**\r\n\t * Show a contextmenu for this node\r\n\t * @param {HTMLElement} anchor Anchor element to attach the context menu to\r\n\t * as sibling.\r\n\t * @param {function} [onClose] Callback method called when the context menu\r\n\t * is being closed.\r\n\t */\r\n\tNode.prototype.showContextMenu = function (anchor, onClose) {\r\n\t var node = this;\r\n\t var titles = Node.TYPE_TITLES;\r\n\t var items = [];\r\n\r\n\t if (this.editable.value) {\r\n\t items.push({\r\n\t text: 'Type',\r\n\t title: 'Change the type of this field',\r\n\t className: 'jsoneditor-type-' + this.type,\r\n\t submenu: [\r\n\t {\r\n\t text: 'Auto',\r\n\t className: 'jsoneditor-type-auto' +\r\n\t (this.type == 'auto' ? ' jsoneditor-selected' : ''),\r\n\t title: titles.auto,\r\n\t click: function () {\r\n\t node._onChangeType('auto');\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Array',\r\n\t className: 'jsoneditor-type-array' +\r\n\t (this.type == 'array' ? ' jsoneditor-selected' : ''),\r\n\t title: titles.array,\r\n\t click: function () {\r\n\t node._onChangeType('array');\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Object',\r\n\t className: 'jsoneditor-type-object' +\r\n\t (this.type == 'object' ? ' jsoneditor-selected' : ''),\r\n\t title: titles.object,\r\n\t click: function () {\r\n\t node._onChangeType('object');\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'String',\r\n\t className: 'jsoneditor-type-string' +\r\n\t (this.type == 'string' ? ' jsoneditor-selected' : ''),\r\n\t title: titles.string,\r\n\t click: function () {\r\n\t node._onChangeType('string');\r\n\t }\r\n\t }\r\n\t ]\r\n\t });\r\n\t }\r\n\r\n\t if (this._hasChilds()) {\r\n\t var direction = ((this.sortOrder == 'asc') ? 'desc': 'asc');\r\n\t items.push({\r\n\t text: 'Sort',\r\n\t title: 'Sort the childs of this ' + this.type,\r\n\t className: 'jsoneditor-sort-' + direction,\r\n\t click: function () {\r\n\t node.sort(direction);\r\n\t },\r\n\t submenu: [\r\n\t {\r\n\t text: 'Ascending',\r\n\t className: 'jsoneditor-sort-asc',\r\n\t title: 'Sort the childs of this ' + this.type + ' in ascending order',\r\n\t click: function () {\r\n\t node.sort('asc');\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Descending',\r\n\t className: 'jsoneditor-sort-desc',\r\n\t title: 'Sort the childs of this ' + this.type +' in descending order',\r\n\t click: function () {\r\n\t node.sort('desc');\r\n\t }\r\n\t }\r\n\t ]\r\n\t });\r\n\t }\r\n\r\n\t if (this.parent && this.parent._hasChilds()) {\r\n\t if (items.length) {\r\n\t // create a separator\r\n\t items.push({\r\n\t 'type': 'separator'\r\n\t });\r\n\t }\r\n\r\n\t // create append button (for last child node only)\r\n\t var childs = node.parent.childs;\r\n\t if (node == childs[childs.length - 1]) {\r\n\t items.push({\r\n\t text: 'Append',\r\n\t title: 'Append a new field with type \\'auto\\' after this field (Ctrl+Shift+Ins)',\r\n\t submenuTitle: 'Select the type of the field to be appended',\r\n\t className: 'jsoneditor-append',\r\n\t click: function () {\r\n\t node._onAppend('', '', 'auto');\r\n\t },\r\n\t submenu: [\r\n\t {\r\n\t text: 'Auto',\r\n\t className: 'jsoneditor-type-auto',\r\n\t title: titles.auto,\r\n\t click: function () {\r\n\t node._onAppend('', '', 'auto');\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Array',\r\n\t className: 'jsoneditor-type-array',\r\n\t title: titles.array,\r\n\t click: function () {\r\n\t node._onAppend('', []);\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Object',\r\n\t className: 'jsoneditor-type-object',\r\n\t title: titles.object,\r\n\t click: function () {\r\n\t node._onAppend('', {});\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'String',\r\n\t className: 'jsoneditor-type-string',\r\n\t title: titles.string,\r\n\t click: function () {\r\n\t node._onAppend('', '', 'string');\r\n\t }\r\n\t }\r\n\t ]\r\n\t });\r\n\t }\r\n\r\n\t // create insert button\r\n\t items.push({\r\n\t text: 'Insert',\r\n\t title: 'Insert a new field with type \\'auto\\' before this field (Ctrl+Ins)',\r\n\t submenuTitle: 'Select the type of the field to be inserted',\r\n\t className: 'jsoneditor-insert',\r\n\t click: function () {\r\n\t node._onInsertBefore('', '', 'auto');\r\n\t },\r\n\t submenu: [\r\n\t {\r\n\t text: 'Auto',\r\n\t className: 'jsoneditor-type-auto',\r\n\t title: titles.auto,\r\n\t click: function () {\r\n\t node._onInsertBefore('', '', 'auto');\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Array',\r\n\t className: 'jsoneditor-type-array',\r\n\t title: titles.array,\r\n\t click: function () {\r\n\t node._onInsertBefore('', []);\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Object',\r\n\t className: 'jsoneditor-type-object',\r\n\t title: titles.object,\r\n\t click: function () {\r\n\t node._onInsertBefore('', {});\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'String',\r\n\t className: 'jsoneditor-type-string',\r\n\t title: titles.string,\r\n\t click: function () {\r\n\t node._onInsertBefore('', '', 'string');\r\n\t }\r\n\t }\r\n\t ]\r\n\t });\r\n\r\n\t if (this.editable.field) {\r\n\t // create duplicate button\r\n\t items.push({\r\n\t text: 'Duplicate',\r\n\t title: 'Duplicate this field (Ctrl+D)',\r\n\t className: 'jsoneditor-duplicate',\r\n\t click: function () {\r\n\t Node.onDuplicate(node);\r\n\t }\r\n\t });\r\n\r\n\t // create remove button\r\n\t items.push({\r\n\t text: 'Remove',\r\n\t title: 'Remove this field (Ctrl+Del)',\r\n\t className: 'jsoneditor-remove',\r\n\t click: function () {\r\n\t Node.onRemove(node);\r\n\t }\r\n\t });\r\n\t }\r\n\t }\r\n\r\n\t var menu = new ContextMenu(items, {close: onClose});\r\n\t menu.show(anchor, this.editor.content);\r\n\t};\r\n\r\n\t/**\r\n\t * get the type of a value\r\n\t * @param {*} value\r\n\t * @return {String} type Can be 'object', 'array', 'string', 'auto'\r\n\t * @private\r\n\t */\r\n\tNode.prototype._getType = function(value) {\r\n\t if (value instanceof Array) {\r\n\t return 'array';\r\n\t }\r\n\t if (value instanceof Object) {\r\n\t return 'object';\r\n\t }\r\n\t if (typeof(value) == 'string' && typeof(this._stringCast(value)) != 'string') {\r\n\t return 'string';\r\n\t }\r\n\r\n\t return 'auto';\r\n\t};\r\n\r\n\t/**\r\n\t * cast contents of a string to the correct type. This can be a string,\r\n\t * a number, a boolean, etc\r\n\t * @param {String} str\r\n\t * @return {*} castedStr\r\n\t * @private\r\n\t */\r\n\tNode.prototype._stringCast = function(str) {\r\n\t var lower = str.toLowerCase(),\r\n\t num = Number(str), // will nicely fail with '123ab'\r\n\t numFloat = parseFloat(str); // will nicely fail with ' '\r\n\r\n\t if (str == '') {\r\n\t return '';\r\n\t }\r\n\t else if (lower == 'null') {\r\n\t return null;\r\n\t }\r\n\t else if (lower == 'true') {\r\n\t return true;\r\n\t }\r\n\t else if (lower == 'false') {\r\n\t return false;\r\n\t }\r\n\t else if (!isNaN(num) && !isNaN(numFloat)) {\r\n\t return num;\r\n\t }\r\n\t else {\r\n\t return str;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * escape a text, such that it can be displayed safely in an HTML element\r\n\t * @param {String} text\r\n\t * @return {String} escapedText\r\n\t * @private\r\n\t */\r\n\tNode.prototype._escapeHTML = function (text) {\r\n\t if (typeof text !== 'string') {\r\n\t return String(text);\r\n\t }\r\n\t else {\r\n\t var htmlEscaped = String(text)\r\n\t .replace(/&/g, '&') // must be replaced first!\r\n\t .replace(//g, '>')\r\n\t .replace(/ /g, ' ') // replace double space with an nbsp and space\r\n\t .replace(/^ /, ' ') // space at start\r\n\t .replace(/ $/, ' '); // space at end\r\n\r\n\t var json = JSON.stringify(htmlEscaped);\r\n\t var html = json.substring(1, json.length - 1);\r\n\t if (this.editor.options.escapeUnicode === true) {\r\n\t html = util.escapeUnicodeChars(html);\r\n\t }\r\n\t return html;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * unescape a string.\r\n\t * @param {String} escapedText\r\n\t * @return {String} text\r\n\t * @private\r\n\t */\r\n\tNode.prototype._unescapeHTML = function (escapedText) {\r\n\t var json = '\"' + this._escapeJSON(escapedText) + '\"';\r\n\t var htmlEscaped = util.parse(json);\r\n\r\n\t return htmlEscaped\r\n\t .replace(/</g, '<')\r\n\t .replace(/>/g, '>')\r\n\t .replace(/ |\\u00A0/g, ' ')\r\n\t .replace(/&/g, '&'); // must be replaced last\r\n\t};\r\n\r\n\t/**\r\n\t * escape a text to make it a valid JSON string. The method will:\r\n\t * - replace unescaped double quotes with '\\\"'\r\n\t * - replace unescaped backslash with '\\\\'\r\n\t * - replace returns with '\\n'\r\n\t * @param {String} text\r\n\t * @return {String} escapedText\r\n\t * @private\r\n\t */\r\n\tNode.prototype._escapeJSON = function (text) {\r\n\t // TODO: replace with some smart regex (only when a new solution is faster!)\r\n\t var escaped = '';\r\n\t var i = 0;\r\n\t while (i < text.length) {\r\n\t var c = text.charAt(i);\r\n\t if (c == '\\n') {\r\n\t escaped += '\\\\n';\r\n\t }\r\n\t else if (c == '\\\\') {\r\n\t escaped += c;\r\n\t i++;\r\n\r\n\t c = text.charAt(i);\r\n\t if (c === '' || '\"\\\\/bfnrtu'.indexOf(c) == -1) {\r\n\t escaped += '\\\\'; // no valid escape character\r\n\t }\r\n\t escaped += c;\r\n\t }\r\n\t else if (c == '\"') {\r\n\t escaped += '\\\\\"';\r\n\t }\r\n\t else {\r\n\t escaped += c;\r\n\t }\r\n\t i++;\r\n\t }\r\n\r\n\t return escaped;\r\n\t};\r\n\r\n\t// TODO: find a nicer solution to resolve this circular dependency between Node and AppendNode\r\n\tvar AppendNode = appendNodeFactory(Node);\r\n\r\n\tmodule.exports = Node;\r\n\r\n\r\n/***/ },\r\n/* 59 */\r\n/***/ function(module, exports) {\r\n\r\n\t/*\r\n\t * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license\r\n\t * Author: Jim Palmer (based on chunking idea from Dave Koelle)\r\n\t */\r\n\t/*jshint unused:false */\r\n\tmodule.exports = function naturalSort (a, b) {\r\n\t\t\"use strict\";\r\n\t\tvar re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,\r\n\t\t\tsre = /(^[ ]*|[ ]*$)/g,\r\n\t\t\tdre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/,\r\n\t\t\thre = /^0x[0-9a-f]+$/i,\r\n\t\t\tore = /^0/,\r\n\t\t\ti = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; },\r\n\t\t\t// convert all to strings strip whitespace\r\n\t\t\tx = i(a).replace(sre, '') || '',\r\n\t\t\ty = i(b).replace(sre, '') || '',\r\n\t\t\t// chunk/tokenize\r\n\t\t\txN = x.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\t\tyN = y.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\t\t// numeric, hex or date detection\r\n\t\t\txD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)),\r\n\t\t\tyD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null,\r\n\t\t\toFxNcL, oFyNcL;\r\n\t\t// first try and sort Hex codes or Dates\r\n\t\tif (yD) {\r\n\t\t\tif ( xD < yD ) { return -1; }\r\n\t\t\telse if ( xD > yD ) { return 1; }\r\n\t\t}\r\n\t\t// natural sorting through split numeric strings and default strings\r\n\t\tfor(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\r\n\t\t\t// find floats not starting with '0', string or 0 if not defined (Clint Priest)\r\n\t\t\toFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\r\n\t\t\toFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\r\n\t\t\t// handle numeric vs string comparison - number < string - (Kyle Adams)\r\n\t\t\tif (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }\r\n\t\t\t// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\r\n\t\t\telse if (typeof oFxNcL !== typeof oFyNcL) {\r\n\t\t\t\toFxNcL += '';\r\n\t\t\t\toFyNcL += '';\r\n\t\t\t}\r\n\t\t\tif (oFxNcL < oFyNcL) { return -1; }\r\n\t\t\tif (oFxNcL > oFyNcL) { return 1; }\r\n\t\t}\r\n\t\treturn 0;\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 60 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar util = __webpack_require__(54);\r\n\tvar ContextMenu = __webpack_require__(57);\r\n\r\n\t/**\r\n\t * A factory function to create an AppendNode, which depends on a Node\r\n\t * @param {Node} Node\r\n\t */\r\n\tfunction appendNodeFactory(Node) {\r\n\t /**\r\n\t * @constructor AppendNode\r\n\t * @extends Node\r\n\t * @param {TreeEditor} editor\r\n\t * Create a new AppendNode. This is a special node which is created at the\r\n\t * end of the list with childs for an object or array\r\n\t */\r\n\t function AppendNode (editor) {\r\n\t /** @type {TreeEditor} */\r\n\t this.editor = editor;\r\n\t this.dom = {};\r\n\t }\r\n\r\n\t AppendNode.prototype = new Node();\r\n\r\n\t /**\r\n\t * Return a table row with an append button.\r\n\t * @return {Element} dom TR element\r\n\t */\r\n\t AppendNode.prototype.getDom = function () {\r\n\t // TODO: implement a new solution for the append node\r\n\t var dom = this.dom;\r\n\r\n\t if (dom.tr) {\r\n\t return dom.tr;\r\n\t }\r\n\r\n\t this._updateEditability();\r\n\r\n\t // a row for the append button\r\n\t var trAppend = document.createElement('tr');\r\n\t trAppend.node = this;\r\n\t dom.tr = trAppend;\r\n\r\n\t // TODO: consistent naming\r\n\r\n\t if (this.editor.options.mode === 'tree') {\r\n\t // a cell for the dragarea column\r\n\t dom.tdDrag = document.createElement('td');\r\n\r\n\t // create context menu\r\n\t var tdMenu = document.createElement('td');\r\n\t dom.tdMenu = tdMenu;\r\n\t var menu = document.createElement('button');\r\n\t menu.type = 'button';\r\n\t menu.className = 'jsoneditor-contextmenu';\r\n\t menu.title = 'Click to open the actions menu (Ctrl+M)';\r\n\t dom.menu = menu;\r\n\t tdMenu.appendChild(dom.menu);\r\n\t }\r\n\r\n\t // a cell for the contents (showing text 'empty')\r\n\t var tdAppend = document.createElement('td');\r\n\t var domText = document.createElement('div');\r\n\t domText.innerHTML = '(empty)';\r\n\t domText.className = 'jsoneditor-readonly';\r\n\t tdAppend.appendChild(domText);\r\n\t dom.td = tdAppend;\r\n\t dom.text = domText;\r\n\r\n\t this.updateDom();\r\n\r\n\t return trAppend;\r\n\t };\r\n\r\n\t /**\r\n\t * Update the HTML dom of the Node\r\n\t */\r\n\t AppendNode.prototype.updateDom = function () {\r\n\t var dom = this.dom;\r\n\t var tdAppend = dom.td;\r\n\t if (tdAppend) {\r\n\t tdAppend.style.paddingLeft = (this.getLevel() * 24 + 26) + 'px';\r\n\t // TODO: not so nice hard coded offset\r\n\t }\r\n\r\n\t var domText = dom.text;\r\n\t if (domText) {\r\n\t domText.innerHTML = '(empty ' + this.parent.type + ')';\r\n\t }\r\n\r\n\t // attach or detach the contents of the append node:\r\n\t // hide when the parent has childs, show when the parent has no childs\r\n\t var trAppend = dom.tr;\r\n\t if (!this.isVisible()) {\r\n\t if (dom.tr.firstChild) {\r\n\t if (dom.tdDrag) {\r\n\t trAppend.removeChild(dom.tdDrag);\r\n\t }\r\n\t if (dom.tdMenu) {\r\n\t trAppend.removeChild(dom.tdMenu);\r\n\t }\r\n\t trAppend.removeChild(tdAppend);\r\n\t }\r\n\t }\r\n\t else {\r\n\t if (!dom.tr.firstChild) {\r\n\t if (dom.tdDrag) {\r\n\t trAppend.appendChild(dom.tdDrag);\r\n\t }\r\n\t if (dom.tdMenu) {\r\n\t trAppend.appendChild(dom.tdMenu);\r\n\t }\r\n\t trAppend.appendChild(tdAppend);\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t /**\r\n\t * Check whether the AppendNode is currently visible.\r\n\t * the AppendNode is visible when its parent has no childs (i.e. is empty).\r\n\t * @return {boolean} isVisible\r\n\t */\r\n\t AppendNode.prototype.isVisible = function () {\r\n\t return (this.parent.childs.length == 0);\r\n\t };\r\n\r\n\t /**\r\n\t * Show a contextmenu for this node\r\n\t * @param {HTMLElement} anchor The element to attach the menu to.\r\n\t * @param {function} [onClose] Callback method called when the context menu\r\n\t * is being closed.\r\n\t */\r\n\t AppendNode.prototype.showContextMenu = function (anchor, onClose) {\r\n\t var node = this;\r\n\t var titles = Node.TYPE_TITLES;\r\n\t var items = [\r\n\t // create append button\r\n\t {\r\n\t 'text': 'Append',\r\n\t 'title': 'Append a new field with type \\'auto\\' (Ctrl+Shift+Ins)',\r\n\t 'submenuTitle': 'Select the type of the field to be appended',\r\n\t 'className': 'jsoneditor-insert',\r\n\t 'click': function () {\r\n\t node._onAppend('', '', 'auto');\r\n\t },\r\n\t 'submenu': [\r\n\t {\r\n\t 'text': 'Auto',\r\n\t 'className': 'jsoneditor-type-auto',\r\n\t 'title': titles.auto,\r\n\t 'click': function () {\r\n\t node._onAppend('', '', 'auto');\r\n\t }\r\n\t },\r\n\t {\r\n\t 'text': 'Array',\r\n\t 'className': 'jsoneditor-type-array',\r\n\t 'title': titles.array,\r\n\t 'click': function () {\r\n\t node._onAppend('', []);\r\n\t }\r\n\t },\r\n\t {\r\n\t 'text': 'Object',\r\n\t 'className': 'jsoneditor-type-object',\r\n\t 'title': titles.object,\r\n\t 'click': function () {\r\n\t node._onAppend('', {});\r\n\t }\r\n\t },\r\n\t {\r\n\t 'text': 'String',\r\n\t 'className': 'jsoneditor-type-string',\r\n\t 'title': titles.string,\r\n\t 'click': function () {\r\n\t node._onAppend('', '', 'string');\r\n\t }\r\n\t }\r\n\t ]\r\n\t }\r\n\t ];\r\n\r\n\t var menu = new ContextMenu(items, {close: onClose});\r\n\t menu.show(anchor, this.editor.content);\r\n\t };\r\n\r\n\t /**\r\n\t * Handle an event. The event is catched centrally by the editor\r\n\t * @param {Event} event\r\n\t */\r\n\t AppendNode.prototype.onEvent = function (event) {\r\n\t var type = event.type;\r\n\t var target = event.target || event.srcElement;\r\n\t var dom = this.dom;\r\n\r\n\t // highlight the append nodes parent\r\n\t var menu = dom.menu;\r\n\t if (target == menu) {\r\n\t if (type == 'mouseover') {\r\n\t this.editor.highlighter.highlight(this.parent);\r\n\t }\r\n\t else if (type == 'mouseout') {\r\n\t this.editor.highlighter.unhighlight();\r\n\t }\r\n\t }\r\n\r\n\t // context menu events\r\n\t if (type == 'click' && target == dom.menu) {\r\n\t var highlighter = this.editor.highlighter;\r\n\t highlighter.highlight(this.parent);\r\n\t highlighter.lock();\r\n\t util.addClassName(dom.menu, 'jsoneditor-selected');\r\n\t this.showContextMenu(dom.menu, function () {\r\n\t util.removeClassName(dom.menu, 'jsoneditor-selected');\r\n\t highlighter.unlock();\r\n\t highlighter.unhighlight();\r\n\t });\r\n\t }\r\n\r\n\t if (type == 'keydown') {\r\n\t this.onKeyDown(event);\r\n\t }\r\n\t };\r\n\r\n\t return AppendNode;\r\n\t}\r\n\r\n\tmodule.exports = appendNodeFactory;\r\n\r\n\r\n/***/ },\r\n/* 61 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar ContextMenu = __webpack_require__(57);\r\n\r\n\t/**\r\n\t * Create a select box to be used in the editor menu's, which allows to switch mode\r\n\t * @param {HTMLElement} container\r\n\t * @param {String[]} modes Available modes: 'code', 'form', 'text', 'tree', 'view'\r\n\t * @param {String} current Available modes: 'code', 'form', 'text', 'tree', 'view'\r\n\t * @param {function(mode: string)} onSwitch Callback invoked on switch\r\n\t * @constructor\r\n\t */\r\n\tfunction ModeSwitcher(container, modes, current, onSwitch) {\r\n\t // available modes\r\n\t var availableModes = {\r\n\t code: {\r\n\t 'text': 'Code',\r\n\t 'title': 'Switch to code highlighter',\r\n\t 'click': function () {\r\n\t onSwitch('code')\r\n\t }\r\n\t },\r\n\t form: {\r\n\t 'text': 'Form',\r\n\t 'title': 'Switch to form editor',\r\n\t 'click': function () {\r\n\t onSwitch('form');\r\n\t }\r\n\t },\r\n\t text: {\r\n\t 'text': 'Text',\r\n\t 'title': 'Switch to plain text editor',\r\n\t 'click': function () {\r\n\t onSwitch('text');\r\n\t }\r\n\t },\r\n\t tree: {\r\n\t 'text': 'Tree',\r\n\t 'title': 'Switch to tree editor',\r\n\t 'click': function () {\r\n\t onSwitch('tree');\r\n\t }\r\n\t },\r\n\t view: {\r\n\t 'text': 'View',\r\n\t 'title': 'Switch to tree view',\r\n\t 'click': function () {\r\n\t onSwitch('view');\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t // list the selected modes\r\n\t var items = [];\r\n\t for (var i = 0; i < modes.length; i++) {\r\n\t var mode = modes[i];\r\n\t var item = availableModes[mode];\r\n\t if (!item) {\r\n\t throw new Error('Unknown mode \"' + mode + '\"');\r\n\t }\r\n\r\n\t item.className = 'jsoneditor-type-modes' + ((current == mode) ? ' jsoneditor-selected' : '');\r\n\t items.push(item);\r\n\t }\r\n\r\n\t // retrieve the title of current mode\r\n\t var currentMode = availableModes[current];\r\n\t if (!currentMode) {\r\n\t throw new Error('Unknown mode \"' + current + '\"');\r\n\t }\r\n\t var currentTitle = currentMode.text;\r\n\r\n\t // create the html element\r\n\t var box = document.createElement('button');\r\n\t box.type = 'button';\r\n\t box.className = 'jsoneditor-modes jsoneditor-separator';\r\n\t box.innerHTML = currentTitle + ' ▾';\r\n\t box.title = 'Switch editor mode';\r\n\t box.onclick = function () {\r\n\t var menu = new ContextMenu(items);\r\n\t menu.show(box);\r\n\t };\r\n\r\n\t var frame = document.createElement('div');\r\n\t frame.className = 'jsoneditor-modes';\r\n\t frame.style.position = 'relative';\r\n\t frame.appendChild(box);\r\n\r\n\t container.appendChild(frame);\r\n\r\n\t this.dom = {\r\n\t container: container,\r\n\t box: box,\r\n\t frame: frame\r\n\t };\r\n\t}\r\n\r\n\t/**\r\n\t * Set focus to switcher\r\n\t */\r\n\tModeSwitcher.prototype.focus = function () {\r\n\t this.dom.box.focus();\r\n\t};\r\n\r\n\t/**\r\n\t * Destroy the ModeSwitcher, remove from DOM\r\n\t */\r\n\tModeSwitcher.prototype.destroy = function () {\r\n\t if (this.dom && this.dom.frame && this.dom.frame.parentNode) {\r\n\t this.dom.frame.parentNode.removeChild(this.dom.frame);\r\n\t }\r\n\t this.dom = null;\r\n\t};\r\n\r\n\tmodule.exports = ModeSwitcher;\r\n\r\n\r\n/***/ },\r\n/* 62 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar ace;\r\n\ttry {\r\n\t ace = __webpack_require__(63);\r\n\t}\r\n\tcatch (err) {\r\n\t // failed to load ace, no problem, we will fall back to plain text\r\n\t}\r\n\r\n\tvar ModeSwitcher = __webpack_require__(61);\r\n\tvar util = __webpack_require__(54);\r\n\r\n\t// create a mixin with the functions for text mode\r\n\tvar textmode = {};\r\n\r\n\tvar MAX_ERRORS = 3; // maximum number of displayed errors at the bottom\r\n\r\n\tvar DEFAULT_THEME = 'ace/theme/jsoneditor';\r\n\r\n\t/**\r\n\t * Create a text editor\r\n\t * @param {Element} container\r\n\t * @param {Object} [options] Object with options. available options:\r\n\t * {String} mode Available values:\r\n\t * \"text\" (default)\r\n\t * or \"code\".\r\n\t * {Number} indentation Number of indentation\r\n\t * spaces. 2 by default.\r\n\t * {function} onChange Callback method\r\n\t * triggered on change\r\n\t * {function} onModeChange Callback method\r\n\t * triggered after setMode\r\n\t * {Object} ace A custom instance of\r\n\t * Ace editor.\r\n\t * {boolean} escapeUnicode If true, unicode\r\n\t * characters are escaped.\r\n\t * false by default.\r\n\t * @private\r\n\t */\r\n\ttextmode.create = function (container, options) {\r\n\t // read options\r\n\t options = options || {};\r\n\t this.options = options;\r\n\r\n\t // indentation\r\n\t if (options.indentation) {\r\n\t this.indentation = Number(options.indentation);\r\n\t }\r\n\t else {\r\n\t this.indentation = 2; // number of spaces\r\n\t }\r\n\r\n\t // grab ace from options if provided\r\n\t var _ace = options.ace ? options.ace : ace;\r\n\r\n\t // determine mode\r\n\t this.mode = (options.mode == 'code') ? 'code' : 'text';\r\n\t if (this.mode == 'code') {\r\n\t // verify whether Ace editor is available and supported\r\n\t if (typeof _ace === 'undefined') {\r\n\t this.mode = 'text';\r\n\t console.warn('Failed to load Ace editor, falling back to plain text mode. Please use a JSONEditor bundle including Ace, or pass Ace as via the configuration option `ace`.');\r\n\t }\r\n\t }\r\n\r\n\t // determine theme\r\n\t this.theme = options.theme || DEFAULT_THEME;\r\n\t if (this.theme === DEFAULT_THEME && window.ace) {\r\n\t __webpack_require__(70);\r\n\t }\r\n\r\n\t var me = this;\r\n\t this.container = container;\r\n\t this.dom = {};\r\n\t this.aceEditor = undefined; // ace code editor\r\n\t this.textarea = undefined; // plain text editor (fallback when Ace is not available)\r\n\t this.validateSchema = null;\r\n\r\n\t // create a debounced validate function\r\n\t this._debouncedValidate = util.debounce(this.validate.bind(this), this.DEBOUNCE_INTERVAL);\r\n\r\n\t this.width = container.clientWidth;\r\n\t this.height = container.clientHeight;\r\n\r\n\t this.frame = document.createElement('div');\r\n\t this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode;\r\n\t this.frame.onclick = function (event) {\r\n\t // prevent default submit action when the editor is located inside a form\r\n\t event.preventDefault();\r\n\t };\r\n\t this.frame.onkeydown = function (event) {\r\n\t me._onKeyDown(event);\r\n\t };\r\n\r\n\t // create menu\r\n\t this.menu = document.createElement('div');\r\n\t this.menu.className = 'jsoneditor-menu';\r\n\t this.frame.appendChild(this.menu);\r\n\r\n\t // create format button\r\n\t var buttonFormat = document.createElement('button');\r\n\t buttonFormat.type = 'button';\r\n\t buttonFormat.className = 'jsoneditor-format';\r\n\t buttonFormat.title = 'Format JSON data, with proper indentation and line feeds (Ctrl+\\\\)';\r\n\t this.menu.appendChild(buttonFormat);\r\n\t buttonFormat.onclick = function () {\r\n\t try {\r\n\t me.format();\r\n\t me._onChange();\r\n\t }\r\n\t catch (err) {\r\n\t me._onError(err);\r\n\t }\r\n\t };\r\n\r\n\t // create compact button\r\n\t var buttonCompact = document.createElement('button');\r\n\t buttonCompact.type = 'button';\r\n\t buttonCompact.className = 'jsoneditor-compact';\r\n\t buttonCompact.title = 'Compact JSON data, remove all whitespaces (Ctrl+Shift+\\\\)';\r\n\t this.menu.appendChild(buttonCompact);\r\n\t buttonCompact.onclick = function () {\r\n\t try {\r\n\t me.compact();\r\n\t me._onChange();\r\n\t }\r\n\t catch (err) {\r\n\t me._onError(err);\r\n\t }\r\n\t };\r\n\r\n\t // create mode box\r\n\t if (this.options && this.options.modes && this.options.modes.length) {\r\n\t this.modeSwitcher = new ModeSwitcher(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) {\r\n\t // switch mode and restore focus\r\n\t me.setMode(mode);\r\n\t me.modeSwitcher.focus();\r\n\t });\r\n\t }\r\n\r\n\t this.content = document.createElement('div');\r\n\t this.content.className = 'jsoneditor-outer';\r\n\t this.frame.appendChild(this.content);\r\n\r\n\t this.container.appendChild(this.frame);\r\n\r\n\t if (this.mode == 'code') {\r\n\t this.editorDom = document.createElement('div');\r\n\t this.editorDom.style.height = '100%'; // TODO: move to css\r\n\t this.editorDom.style.width = '100%'; // TODO: move to css\r\n\t this.content.appendChild(this.editorDom);\r\n\r\n\t var aceEditor = _ace.edit(this.editorDom);\r\n\t aceEditor.$blockScrolling = Infinity;\r\n\t aceEditor.setTheme(this.theme);\r\n\t aceEditor.setShowPrintMargin(false);\r\n\t aceEditor.setFontSize(13);\r\n\t aceEditor.getSession().setMode('ace/mode/json');\r\n\t aceEditor.getSession().setTabSize(this.indentation);\r\n\t aceEditor.getSession().setUseSoftTabs(true);\r\n\t aceEditor.getSession().setUseWrapMode(true);\r\n\t aceEditor.commands.bindKey('Ctrl-L', null); // disable Ctrl+L (is used by the browser to select the address bar)\r\n\t aceEditor.commands.bindKey('Command-L', null); // disable Ctrl+L (is used by the browser to select the address bar)\r\n\t this.aceEditor = aceEditor;\r\n\r\n\t // TODO: deprecated since v5.0.0. Cleanup backward compatibility some day\r\n\t if (!this.hasOwnProperty('editor')) {\r\n\t Object.defineProperty(this, 'editor', {\r\n\t get: function () {\r\n\t console.warn('Property \"editor\" has been renamed to \"aceEditor\".');\r\n\t return me.aceEditor;\r\n\t },\r\n\t set: function (aceEditor) {\r\n\t console.warn('Property \"editor\" has been renamed to \"aceEditor\".');\r\n\t me.aceEditor = aceEditor;\r\n\t }\r\n\t });\r\n\t }\r\n\r\n\t var poweredBy = document.createElement('a');\r\n\t poweredBy.appendChild(document.createTextNode('powered by ace'));\r\n\t poweredBy.href = 'http://ace.ajax.org';\r\n\t poweredBy.target = '_blank';\r\n\t poweredBy.className = 'jsoneditor-poweredBy';\r\n\t poweredBy.onclick = function () {\r\n\t // TODO: this anchor falls below the margin of the content,\r\n\t // therefore the normal a.href does not work. We use a click event\r\n\t // for now, but this should be fixed.\r\n\t window.open(poweredBy.href, poweredBy.target);\r\n\t };\r\n\t this.menu.appendChild(poweredBy);\r\n\r\n\t // register onchange event\r\n\t aceEditor.on('change', this._onChange.bind(this));\r\n\t }\r\n\t else {\r\n\t // load a plain text textarea\r\n\t var textarea = document.createElement('textarea');\r\n\t textarea.className = 'jsoneditor-text';\r\n\t textarea.spellcheck = false;\r\n\t this.content.appendChild(textarea);\r\n\t this.textarea = textarea;\r\n\r\n\t // register onchange event\r\n\t if (this.textarea.oninput === null) {\r\n\t this.textarea.oninput = this._onChange.bind(this);\r\n\t }\r\n\t else {\r\n\t // oninput is undefined. For IE8-\r\n\t this.textarea.onchange = this._onChange.bind(this);\r\n\t }\r\n\t }\r\n\r\n\t this.setSchema(this.options.schema);\r\n\t};\r\n\r\n\t/**\r\n\t * Handle a change:\r\n\t * - Validate JSON schema\r\n\t * - Send a callback to the onChange listener if provided\r\n\t * @private\r\n\t */\r\n\ttextmode._onChange = function () {\r\n\t // validate JSON schema (if configured)\r\n\t this._debouncedValidate();\r\n\r\n\t // trigger the onChange callback\r\n\t if (this.options.onChange) {\r\n\t try {\r\n\t this.options.onChange();\r\n\t }\r\n\t catch (err) {\r\n\t console.error('Error in onChange callback: ', err);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Event handler for keydown. Handles shortcut keys\r\n\t * @param {Event} event\r\n\t * @private\r\n\t */\r\n\ttextmode._onKeyDown = function (event) {\r\n\t var keynum = event.which || event.keyCode;\r\n\t var handled = false;\r\n\r\n\t if (keynum == 220 && event.ctrlKey) {\r\n\t if (event.shiftKey) { // Ctrl+Shift+\\\r\n\t this.compact();\r\n\t this._onChange();\r\n\t }\r\n\t else { // Ctrl+\\\r\n\t this.format();\r\n\t this._onChange();\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\r\n\t if (handled) {\r\n\t event.preventDefault();\r\n\t event.stopPropagation();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Destroy the editor. Clean up DOM, event listeners, and web workers.\r\n\t */\r\n\ttextmode.destroy = function () {\r\n\t // remove old ace editor\r\n\t if (this.aceEditor) {\r\n\t this.aceEditor.destroy();\r\n\t this.aceEditor = null;\r\n\t }\r\n\r\n\t if (this.frame && this.container && this.frame.parentNode == this.container) {\r\n\t this.container.removeChild(this.frame);\r\n\t }\r\n\r\n\t if (this.modeSwitcher) {\r\n\t this.modeSwitcher.destroy();\r\n\t this.modeSwitcher = null;\r\n\t }\r\n\r\n\t this.textarea = null;\r\n\t \r\n\t this._debouncedValidate = null;\r\n\t};\r\n\r\n\t/**\r\n\t * Compact the code in the formatter\r\n\t */\r\n\ttextmode.compact = function () {\r\n\t var json = this.get();\r\n\t var text = JSON.stringify(json);\r\n\t this.setText(text);\r\n\t};\r\n\r\n\t/**\r\n\t * Format the code in the formatter\r\n\t */\r\n\ttextmode.format = function () {\r\n\t var json = this.get();\r\n\t var text = JSON.stringify(json, null, this.indentation);\r\n\t this.setText(text);\r\n\t};\r\n\r\n\t/**\r\n\t * Set focus to the formatter\r\n\t */\r\n\ttextmode.focus = function () {\r\n\t if (this.textarea) {\r\n\t this.textarea.focus();\r\n\t }\r\n\t if (this.aceEditor) {\r\n\t this.aceEditor.focus();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Resize the formatter\r\n\t */\r\n\ttextmode.resize = function () {\r\n\t if (this.aceEditor) {\r\n\t var force = false;\r\n\t this.aceEditor.resize(force);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Set json data in the formatter\r\n\t * @param {Object} json\r\n\t */\r\n\ttextmode.set = function(json) {\r\n\t this.setText(JSON.stringify(json, null, this.indentation));\r\n\t};\r\n\r\n\t/**\r\n\t * Get json data from the formatter\r\n\t * @return {Object} json\r\n\t */\r\n\ttextmode.get = function() {\r\n\t var text = this.getText();\r\n\t var json;\r\n\r\n\t try {\r\n\t json = util.parse(text); // this can throw an error\r\n\t }\r\n\t catch (err) {\r\n\t // try to sanitize json, replace JavaScript notation with JSON notation\r\n\t text = util.sanitize(text);\r\n\r\n\t // try to parse again\r\n\t json = util.parse(text); // this can throw an error\r\n\t }\r\n\r\n\t return json;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the text contents of the editor\r\n\t * @return {String} jsonText\r\n\t */\r\n\ttextmode.getText = function() {\r\n\t if (this.textarea) {\r\n\t return this.textarea.value;\r\n\t }\r\n\t if (this.aceEditor) {\r\n\t return this.aceEditor.getValue();\r\n\t }\r\n\t return '';\r\n\t};\r\n\r\n\t/**\r\n\t * Set the text contents of the editor\r\n\t * @param {String} jsonText\r\n\t */\r\n\ttextmode.setText = function(jsonText) {\r\n\t var text;\r\n\r\n\t if (this.options.escapeUnicode === true) {\r\n\t text = util.escapeUnicodeChars(jsonText);\r\n\t }\r\n\t else {\r\n\t text = jsonText;\r\n\t }\r\n\r\n\t if (this.textarea) {\r\n\t this.textarea.value = text;\r\n\t }\r\n\t if (this.aceEditor) {\r\n\t // prevent emitting onChange events while setting new text\r\n\t var originalOnChange = this.options.onChange;\r\n\t this.options.onChange = null;\r\n\r\n\t this.aceEditor.setValue(text, -1);\r\n\r\n\t this.options.onChange = originalOnChange;\r\n\t }\r\n\r\n\t // validate JSON schema\r\n\t this.validate();\r\n\t};\r\n\r\n\t/**\r\n\t * Validate current JSON object against the configured JSON schema\r\n\t * Throws an exception when no JSON schema is configured\r\n\t */\r\n\ttextmode.validate = function () {\r\n\t // clear all current errors\r\n\t if (this.dom.validationErrors) {\r\n\t this.dom.validationErrors.parentNode.removeChild(this.dom.validationErrors);\r\n\t this.dom.validationErrors = null;\r\n\r\n\t this.content.style.marginBottom = '';\r\n\t this.content.style.paddingBottom = '';\r\n\t }\r\n\r\n\t var doValidate = false;\r\n\t var errors = [];\r\n\t var json;\r\n\t try {\r\n\t json = this.get(); // this can fail when there is no valid json\r\n\t doValidate = true;\r\n\t }\r\n\t catch (err) {\r\n\t // no valid JSON, don't validate\r\n\t }\r\n\r\n\t // only validate the JSON when parsing the JSON succeeded\r\n\t if (doValidate && this.validateSchema) {\r\n\t var valid = this.validateSchema(json);\r\n\t if (!valid) {\r\n\t errors = this.validateSchema.errors.map(function (error) {\r\n\t return util.improveSchemaError(error);\r\n\t });\r\n\t }\r\n\t }\r\n\r\n\t if (errors.length > 0) {\r\n\t // limit the number of displayed errors\r\n\t var limit = errors.length > MAX_ERRORS;\r\n\t if (limit) {\r\n\t errors = errors.slice(0, MAX_ERRORS);\r\n\t var hidden = this.validateSchema.errors.length - MAX_ERRORS;\r\n\t errors.push('(' + hidden + ' more errors...)')\r\n\t }\r\n\r\n\t var validationErrors = document.createElement('div');\r\n\t validationErrors.innerHTML = '
' +\r\n\t '' +\r\n\t errors.map(function (error) {\r\n\t var message;\r\n\t if (typeof error === 'string') {\r\n\t message = '
' + error + '
';\r\n\t }\r\n\t else {\r\n\t message = '
' + error.dataPath + '
' +\r\n\t '
' + error.message + '
';\r\n\t }\r\n\r\n\t return '
' + message + '
'\r\n\t }).join('') +\r\n\t '' +\r\n\t '
';\r\n\r\n\t this.dom.validationErrors = validationErrors;\r\n\t this.frame.appendChild(validationErrors);\r\n\r\n\t var height = validationErrors.clientHeight;\r\n\t this.content.style.marginBottom = (-height) + 'px';\r\n\t this.content.style.paddingBottom = height + 'px';\r\n\t }\r\n\r\n\t // update the height of the ace editor\r\n\t if (this.aceEditor) {\r\n\t var force = false;\r\n\t this.aceEditor.resize(force);\r\n\t }\r\n\t};\r\n\r\n\t// define modes\r\n\tmodule.exports = [\r\n\t {\r\n\t mode: 'text',\r\n\t mixin: textmode,\r\n\t data: 'text',\r\n\t load: textmode.format\r\n\t },\r\n\t {\r\n\t mode: 'code',\r\n\t mixin: textmode,\r\n\t data: 'text',\r\n\t load: textmode.format\r\n\t }\r\n\t];\r\n\r\n\r\n/***/ },\r\n/* 63 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t// load brace\r\n\tvar ace = __webpack_require__(64);\r\n\r\n\t// load required ace modules\r\n\t__webpack_require__(67);\r\n\t__webpack_require__(69);\r\n\r\n\tmodule.exports = ace;\r\n\r\n\r\n/***/ },\r\n/* 64 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t/* ***** BEGIN LICENSE BLOCK *****\r\n\t * Distributed under the BSD license:\r\n\t *\r\n\t * Copyright (c) 2010, Ajax.org B.V.\r\n\t * All rights reserved.\r\n\t *\r\n\t * Redistribution and use in source and binary forms, with or without\r\n\t * modification, are permitted provided that the following conditions are met:\r\n\t * * Redistributions of source code must retain the above copyright\r\n\t * notice, this list of conditions and the following disclaimer.\r\n\t * * Redistributions in binary form must reproduce the above copyright\r\n\t * notice, this list of conditions and the following disclaimer in the\r\n\t * documentation and/or other materials provided with the distribution.\r\n\t * * Neither the name of Ajax.org B.V. nor the\r\n\t * names of its contributors may be used to endorse or promote products\r\n\t * derived from this software without specific prior written permission.\r\n\t *\r\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\r\n\t * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r\n\t * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r\n\t * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\r\n\t * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r\n\t * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r\n\t * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r\n\t * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r\n\t * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n\t *\r\n\t * ***** END LICENSE BLOCK ***** */\r\n\r\n\t/**\r\n\t * Define a module along with a payload\r\n\t * @param module a name for the payload\r\n\t * @param payload a function to call with (acequire, exports, module) params\r\n\t */\r\n\r\n\t(function() {\r\n\r\n\tvar ACE_NAMESPACE = \"ace\";\r\n\r\n\tvar global = (function() { return this; })();\r\n\tif (!global && typeof window != \"undefined\") global = window; // strict mode\r\n\r\n\r\n\tif (!ACE_NAMESPACE && typeof acequirejs !== \"undefined\")\r\n\t return;\r\n\r\n\r\n\tvar define = function(module, deps, payload) {\r\n\t if (typeof module !== \"string\") {\r\n\t if (define.original)\r\n\t define.original.apply(this, arguments);\r\n\t else {\r\n\t console.error(\"dropping module because define wasn\\'t a string.\");\r\n\t console.trace();\r\n\t }\r\n\t return;\r\n\t }\r\n\t if (arguments.length == 2)\r\n\t payload = deps;\r\n\t if (!define.modules[module]) {\r\n\t define.payloads[module] = payload;\r\n\t define.modules[module] = null;\r\n\t }\r\n\t};\r\n\r\n\tdefine.modules = {};\r\n\tdefine.payloads = {};\r\n\r\n\t/**\r\n\t * Get at functionality define()ed using the function above\r\n\t */\r\n\tvar _acequire = function(parentId, module, callback) {\r\n\t if (typeof module === \"string\") {\r\n\t var payload = lookup(parentId, module);\r\n\t if (payload != undefined) {\r\n\t callback && callback();\r\n\t return payload;\r\n\t }\r\n\t } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\r\n\t var params = [];\r\n\t for (var i = 0, l = module.length; i < l; ++i) {\r\n\t var dep = lookup(parentId, module[i]);\r\n\t if (dep == undefined && acequire.original)\r\n\t return;\r\n\t params.push(dep);\r\n\t }\r\n\t return callback && callback.apply(null, params) || true;\r\n\t }\r\n\t};\r\n\r\n\tvar acequire = function(module, callback) {\r\n\t var packagedModule = _acequire(\"\", module, callback);\r\n\t if (packagedModule == undefined && acequire.original)\r\n\t return acequire.original.apply(this, arguments);\r\n\t return packagedModule;\r\n\t};\r\n\r\n\tvar normalizeModule = function(parentId, moduleName) {\r\n\t // normalize plugin acequires\r\n\t if (moduleName.indexOf(\"!\") !== -1) {\r\n\t var chunks = moduleName.split(\"!\");\r\n\t return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\r\n\t }\r\n\t // normalize relative acequires\r\n\t if (moduleName.charAt(0) == \".\") {\r\n\t var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\r\n\t moduleName = base + \"/\" + moduleName;\r\n\r\n\t while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\r\n\t var previous = moduleName;\r\n\t moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\r\n\t }\r\n\t }\r\n\t return moduleName;\r\n\t};\r\n\r\n\t/**\r\n\t * Internal function to lookup moduleNames and resolve them by calling the\r\n\t * definition function if needed.\r\n\t */\r\n\tvar lookup = function(parentId, moduleName) {\r\n\t moduleName = normalizeModule(parentId, moduleName);\r\n\r\n\t var module = define.modules[moduleName];\r\n\t if (!module) {\r\n\t module = define.payloads[moduleName];\r\n\t if (typeof module === 'function') {\r\n\t var exports = {};\r\n\t var mod = {\r\n\t id: moduleName,\r\n\t uri: '',\r\n\t exports: exports,\r\n\t packaged: true\r\n\t };\r\n\r\n\t var req = function(module, callback) {\r\n\t return _acequire(moduleName, module, callback);\r\n\t };\r\n\r\n\t var returnValue = module(req, exports, mod);\r\n\t exports = returnValue || mod.exports;\r\n\t define.modules[moduleName] = exports;\r\n\t delete define.payloads[moduleName];\r\n\t }\r\n\t module = define.modules[moduleName] = exports || module;\r\n\t }\r\n\t return module;\r\n\t};\r\n\r\n\tfunction exportAce(ns) {\r\n\t var root = global;\r\n\t if (ns) {\r\n\t if (!global[ns])\r\n\t global[ns] = {};\r\n\t root = global[ns];\r\n\t }\r\n\r\n\t if (!root.define || !root.define.packaged) {\r\n\t define.original = root.define;\r\n\t root.define = define;\r\n\t root.define.packaged = true;\r\n\t }\r\n\r\n\t if (!root.acequire || !root.acequire.packaged) {\r\n\t acequire.original = root.acequire;\r\n\t root.acequire = acequire;\r\n\t root.acequire.packaged = true;\r\n\t }\r\n\t}\r\n\r\n\texportAce(ACE_NAMESPACE);\r\n\r\n\t})();\r\n\r\n\tace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\t var real = {\r\n\t exec: RegExp.prototype.exec,\r\n\t test: RegExp.prototype.test,\r\n\t match: String.prototype.match,\r\n\t replace: String.prototype.replace,\r\n\t split: String.prototype.split\r\n\t },\r\n\t compliantExecNpcg = real.exec.call(/()??/, \"\")[1] === undefined, // check `exec` handling of nonparticipating capturing groups\r\n\t compliantLastIndexIncrement = function () {\r\n\t var x = /^/g;\r\n\t real.test.call(x, \"\");\r\n\t return !x.lastIndex;\r\n\t }();\r\n\r\n\t if (compliantLastIndexIncrement && compliantExecNpcg)\r\n\t return;\r\n\t RegExp.prototype.exec = function (str) {\r\n\t var match = real.exec.apply(this, arguments),\r\n\t name, r2;\r\n\t if ( typeof(str) == 'string' && match) {\r\n\t if (!compliantExecNpcg && match.length > 1 && indexOf(match, \"\") > -1) {\r\n\t r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), \"g\", \"\"));\r\n\t real.replace.call(str.slice(match.index), r2, function () {\r\n\t for (var i = 1; i < arguments.length - 2; i++) {\r\n\t if (arguments[i] === undefined)\r\n\t match[i] = undefined;\r\n\t }\r\n\t });\r\n\t }\r\n\t if (this._xregexp && this._xregexp.captureNames) {\r\n\t for (var i = 1; i < match.length; i++) {\r\n\t name = this._xregexp.captureNames[i - 1];\r\n\t if (name)\r\n\t match[name] = match[i];\r\n\t }\r\n\t }\r\n\t if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))\r\n\t this.lastIndex--;\r\n\t }\r\n\t return match;\r\n\t };\r\n\t if (!compliantLastIndexIncrement) {\r\n\t RegExp.prototype.test = function (str) {\r\n\t var match = real.exec.call(this, str);\r\n\t if (match && this.global && !match[0].length && (this.lastIndex > match.index))\r\n\t this.lastIndex--;\r\n\t return !!match;\r\n\t };\r\n\t }\r\n\r\n\t function getNativeFlags (regex) {\r\n\t return (regex.global ? \"g\" : \"\") +\r\n\t (regex.ignoreCase ? \"i\" : \"\") +\r\n\t (regex.multiline ? \"m\" : \"\") +\r\n\t (regex.extended ? \"x\" : \"\") + // Proposed for ES4; included in AS3\r\n\t (regex.sticky ? \"y\" : \"\");\r\n\t }\r\n\r\n\t function indexOf (array, item, from) {\r\n\t if (Array.prototype.indexOf) // Use the native array method if available\r\n\t return array.indexOf(item, from);\r\n\t for (var i = from || 0; i < array.length; i++) {\r\n\t if (array[i] === item)\r\n\t return i;\r\n\t }\r\n\t return -1;\r\n\t }\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\r\n\tfunction Empty() {}\r\n\r\n\tif (!Function.prototype.bind) {\r\n\t Function.prototype.bind = function bind(that) { // .length is 1\r\n\t var target = this;\r\n\t if (typeof target != \"function\") {\r\n\t throw new TypeError(\"Function.prototype.bind called on incompatible \" + target);\r\n\t }\r\n\t var args = slice.call(arguments, 1); // for normal call\r\n\t var bound = function () {\r\n\r\n\t if (this instanceof bound) {\r\n\r\n\t var result = target.apply(\r\n\t this,\r\n\t args.concat(slice.call(arguments))\r\n\t );\r\n\t if (Object(result) === result) {\r\n\t return result;\r\n\t }\r\n\t return this;\r\n\r\n\t } else {\r\n\t return target.apply(\r\n\t that,\r\n\t args.concat(slice.call(arguments))\r\n\t );\r\n\r\n\t }\r\n\r\n\t };\r\n\t if(target.prototype) {\r\n\t Empty.prototype = target.prototype;\r\n\t bound.prototype = new Empty();\r\n\t Empty.prototype = null;\r\n\t }\r\n\t return bound;\r\n\t };\r\n\t}\r\n\tvar call = Function.prototype.call;\r\n\tvar prototypeOfArray = Array.prototype;\r\n\tvar prototypeOfObject = Object.prototype;\r\n\tvar slice = prototypeOfArray.slice;\r\n\tvar _toString = call.bind(prototypeOfObject.toString);\r\n\tvar owns = call.bind(prototypeOfObject.hasOwnProperty);\r\n\tvar defineGetter;\r\n\tvar defineSetter;\r\n\tvar lookupGetter;\r\n\tvar lookupSetter;\r\n\tvar supportsAccessors;\r\n\tif ((supportsAccessors = owns(prototypeOfObject, \"__defineGetter__\"))) {\r\n\t defineGetter = call.bind(prototypeOfObject.__defineGetter__);\r\n\t defineSetter = call.bind(prototypeOfObject.__defineSetter__);\r\n\t lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);\r\n\t lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);\r\n\t}\r\n\tif ([1,2].splice(0).length != 2) {\r\n\t if(function() { // test IE < 9 to splice bug - see issue #138\r\n\t function makeArray(l) {\r\n\t var a = new Array(l+2);\r\n\t a[0] = a[1] = 0;\r\n\t return a;\r\n\t }\r\n\t var array = [], lengthBefore;\r\n\t \r\n\t array.splice.apply(array, makeArray(20));\r\n\t array.splice.apply(array, makeArray(26));\r\n\r\n\t lengthBefore = array.length; //46\r\n\t array.splice(5, 0, \"XXX\"); // add one element\r\n\r\n\t lengthBefore + 1 == array.length\r\n\r\n\t if (lengthBefore + 1 == array.length) {\r\n\t return true;// has right splice implementation without bugs\r\n\t }\r\n\t }()) {//IE 6/7\r\n\t var array_splice = Array.prototype.splice;\r\n\t Array.prototype.splice = function(start, deleteCount) {\r\n\t if (!arguments.length) {\r\n\t return [];\r\n\t } else {\r\n\t return array_splice.apply(this, [\r\n\t start === void 0 ? 0 : start,\r\n\t deleteCount === void 0 ? (this.length - start) : deleteCount\r\n\t ].concat(slice.call(arguments, 2)))\r\n\t }\r\n\t };\r\n\t } else {//IE8\r\n\t Array.prototype.splice = function(pos, removeCount){\r\n\t var length = this.length;\r\n\t if (pos > 0) {\r\n\t if (pos > length)\r\n\t pos = length;\r\n\t } else if (pos == void 0) {\r\n\t pos = 0;\r\n\t } else if (pos < 0) {\r\n\t pos = Math.max(length + pos, 0);\r\n\t }\r\n\r\n\t if (!(pos+removeCount < length))\r\n\t removeCount = length - pos;\r\n\r\n\t var removed = this.slice(pos, pos+removeCount);\r\n\t var insert = slice.call(arguments, 2);\r\n\t var add = insert.length; \r\n\t if (pos === length) {\r\n\t if (add) {\r\n\t this.push.apply(this, insert);\r\n\t }\r\n\t } else {\r\n\t var remove = Math.min(removeCount, length - pos);\r\n\t var tailOldPos = pos + remove;\r\n\t var tailNewPos = tailOldPos + add - remove;\r\n\t var tailCount = length - tailOldPos;\r\n\t var lengthAfterRemove = length - remove;\r\n\r\n\t if (tailNewPos < tailOldPos) { // case A\r\n\t for (var i = 0; i < tailCount; ++i) {\r\n\t this[tailNewPos+i] = this[tailOldPos+i];\r\n\t }\r\n\t } else if (tailNewPos > tailOldPos) { // case B\r\n\t for (i = tailCount; i--; ) {\r\n\t this[tailNewPos+i] = this[tailOldPos+i];\r\n\t }\r\n\t } // else, add == remove (nothing to do)\r\n\r\n\t if (add && pos === lengthAfterRemove) {\r\n\t this.length = lengthAfterRemove; // truncate array\r\n\t this.push.apply(this, insert);\r\n\t } else {\r\n\t this.length = lengthAfterRemove + add; // reserves space\r\n\t for (i = 0; i < add; ++i) {\r\n\t this[pos+i] = insert[i];\r\n\t }\r\n\t }\r\n\t }\r\n\t return removed;\r\n\t };\r\n\t }\r\n\t}\r\n\tif (!Array.isArray) {\r\n\t Array.isArray = function isArray(obj) {\r\n\t return _toString(obj) == \"[object Array]\";\r\n\t };\r\n\t}\r\n\tvar boxedString = Object(\"a\"),\r\n\t splitString = boxedString[0] != \"a\" || !(0 in boxedString);\r\n\r\n\tif (!Array.prototype.forEach) {\r\n\t Array.prototype.forEach = function forEach(fun /*, thisp*/) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t thisp = arguments[1],\r\n\t i = -1,\r\n\t length = self.length >>> 0;\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(); // TODO message\r\n\t }\r\n\r\n\t while (++i < length) {\r\n\t if (i in self) {\r\n\t fun.call(thisp, self[i], i, object);\r\n\t }\r\n\t }\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.map) {\r\n\t Array.prototype.map = function map(fun /*, thisp*/) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t length = self.length >>> 0,\r\n\t result = Array(length),\r\n\t thisp = arguments[1];\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(fun + \" is not a function\");\r\n\t }\r\n\r\n\t for (var i = 0; i < length; i++) {\r\n\t if (i in self)\r\n\t result[i] = fun.call(thisp, self[i], i, object);\r\n\t }\r\n\t return result;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.filter) {\r\n\t Array.prototype.filter = function filter(fun /*, thisp */) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t length = self.length >>> 0,\r\n\t result = [],\r\n\t value,\r\n\t thisp = arguments[1];\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(fun + \" is not a function\");\r\n\t }\r\n\r\n\t for (var i = 0; i < length; i++) {\r\n\t if (i in self) {\r\n\t value = self[i];\r\n\t if (fun.call(thisp, value, i, object)) {\r\n\t result.push(value);\r\n\t }\r\n\t }\r\n\t }\r\n\t return result;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.every) {\r\n\t Array.prototype.every = function every(fun /*, thisp */) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t length = self.length >>> 0,\r\n\t thisp = arguments[1];\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(fun + \" is not a function\");\r\n\t }\r\n\r\n\t for (var i = 0; i < length; i++) {\r\n\t if (i in self && !fun.call(thisp, self[i], i, object)) {\r\n\t return false;\r\n\t }\r\n\t }\r\n\t return true;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.some) {\r\n\t Array.prototype.some = function some(fun /*, thisp */) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t length = self.length >>> 0,\r\n\t thisp = arguments[1];\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(fun + \" is not a function\");\r\n\t }\r\n\r\n\t for (var i = 0; i < length; i++) {\r\n\t if (i in self && fun.call(thisp, self[i], i, object)) {\r\n\t return true;\r\n\t }\r\n\t }\r\n\t return false;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.reduce) {\r\n\t Array.prototype.reduce = function reduce(fun /*, initial*/) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t length = self.length >>> 0;\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(fun + \" is not a function\");\r\n\t }\r\n\t if (!length && arguments.length == 1) {\r\n\t throw new TypeError(\"reduce of empty array with no initial value\");\r\n\t }\r\n\r\n\t var i = 0;\r\n\t var result;\r\n\t if (arguments.length >= 2) {\r\n\t result = arguments[1];\r\n\t } else {\r\n\t do {\r\n\t if (i in self) {\r\n\t result = self[i++];\r\n\t break;\r\n\t }\r\n\t if (++i >= length) {\r\n\t throw new TypeError(\"reduce of empty array with no initial value\");\r\n\t }\r\n\t } while (true);\r\n\t }\r\n\r\n\t for (; i < length; i++) {\r\n\t if (i in self) {\r\n\t result = fun.call(void 0, result, self[i], i, object);\r\n\t }\r\n\t }\r\n\r\n\t return result;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.reduceRight) {\r\n\t Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t length = self.length >>> 0;\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(fun + \" is not a function\");\r\n\t }\r\n\t if (!length && arguments.length == 1) {\r\n\t throw new TypeError(\"reduceRight of empty array with no initial value\");\r\n\t }\r\n\r\n\t var result, i = length - 1;\r\n\t if (arguments.length >= 2) {\r\n\t result = arguments[1];\r\n\t } else {\r\n\t do {\r\n\t if (i in self) {\r\n\t result = self[i--];\r\n\t break;\r\n\t }\r\n\t if (--i < 0) {\r\n\t throw new TypeError(\"reduceRight of empty array with no initial value\");\r\n\t }\r\n\t } while (true);\r\n\t }\r\n\r\n\t do {\r\n\t if (i in this) {\r\n\t result = fun.call(void 0, result, self[i], i, object);\r\n\t }\r\n\t } while (i--);\r\n\r\n\t return result;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {\r\n\t Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {\r\n\t var self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t toObject(this),\r\n\t length = self.length >>> 0;\r\n\r\n\t if (!length) {\r\n\t return -1;\r\n\t }\r\n\r\n\t var i = 0;\r\n\t if (arguments.length > 1) {\r\n\t i = toInteger(arguments[1]);\r\n\t }\r\n\t i = i >= 0 ? i : Math.max(0, length + i);\r\n\t for (; i < length; i++) {\r\n\t if (i in self && self[i] === sought) {\r\n\t return i;\r\n\t }\r\n\t }\r\n\t return -1;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {\r\n\t Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {\r\n\t var self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t toObject(this),\r\n\t length = self.length >>> 0;\r\n\r\n\t if (!length) {\r\n\t return -1;\r\n\t }\r\n\t var i = length - 1;\r\n\t if (arguments.length > 1) {\r\n\t i = Math.min(i, toInteger(arguments[1]));\r\n\t }\r\n\t i = i >= 0 ? i : length - Math.abs(i);\r\n\t for (; i >= 0; i--) {\r\n\t if (i in self && sought === self[i]) {\r\n\t return i;\r\n\t }\r\n\t }\r\n\t return -1;\r\n\t };\r\n\t}\r\n\tif (!Object.getPrototypeOf) {\r\n\t Object.getPrototypeOf = function getPrototypeOf(object) {\r\n\t return object.__proto__ || (\r\n\t object.constructor ?\r\n\t object.constructor.prototype :\r\n\t prototypeOfObject\r\n\t );\r\n\t };\r\n\t}\r\n\tif (!Object.getOwnPropertyDescriptor) {\r\n\t var ERR_NON_OBJECT = \"Object.getOwnPropertyDescriptor called on a \" +\r\n\t \"non-object: \";\r\n\t Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {\r\n\t if ((typeof object != \"object\" && typeof object != \"function\") || object === null)\r\n\t throw new TypeError(ERR_NON_OBJECT + object);\r\n\t if (!owns(object, property))\r\n\t return;\r\n\r\n\t var descriptor, getter, setter;\r\n\t descriptor = { enumerable: true, configurable: true };\r\n\t if (supportsAccessors) {\r\n\t var prototype = object.__proto__;\r\n\t object.__proto__ = prototypeOfObject;\r\n\r\n\t var getter = lookupGetter(object, property);\r\n\t var setter = lookupSetter(object, property);\r\n\t object.__proto__ = prototype;\r\n\r\n\t if (getter || setter) {\r\n\t if (getter) descriptor.get = getter;\r\n\t if (setter) descriptor.set = setter;\r\n\t return descriptor;\r\n\t }\r\n\t }\r\n\t descriptor.value = object[property];\r\n\t return descriptor;\r\n\t };\r\n\t}\r\n\tif (!Object.getOwnPropertyNames) {\r\n\t Object.getOwnPropertyNames = function getOwnPropertyNames(object) {\r\n\t return Object.keys(object);\r\n\t };\r\n\t}\r\n\tif (!Object.create) {\r\n\t var createEmpty;\r\n\t if (Object.prototype.__proto__ === null) {\r\n\t createEmpty = function () {\r\n\t return { \"__proto__\": null };\r\n\t };\r\n\t } else {\r\n\t createEmpty = function () {\r\n\t var empty = {};\r\n\t for (var i in empty)\r\n\t empty[i] = null;\r\n\t empty.constructor =\r\n\t empty.hasOwnProperty =\r\n\t empty.propertyIsEnumerable =\r\n\t empty.isPrototypeOf =\r\n\t empty.toLocaleString =\r\n\t empty.toString =\r\n\t empty.valueOf =\r\n\t empty.__proto__ = null;\r\n\t return empty;\r\n\t }\r\n\t }\r\n\r\n\t Object.create = function create(prototype, properties) {\r\n\t var object;\r\n\t if (prototype === null) {\r\n\t object = createEmpty();\r\n\t } else {\r\n\t if (typeof prototype != \"object\")\r\n\t throw new TypeError(\"typeof prototype[\"+(typeof prototype)+\"] != 'object'\");\r\n\t var Type = function () {};\r\n\t Type.prototype = prototype;\r\n\t object = new Type();\r\n\t object.__proto__ = prototype;\r\n\t }\r\n\t if (properties !== void 0)\r\n\t Object.defineProperties(object, properties);\r\n\t return object;\r\n\t };\r\n\t}\r\n\r\n\tfunction doesDefinePropertyWork(object) {\r\n\t try {\r\n\t Object.defineProperty(object, \"sentinel\", {});\r\n\t return \"sentinel\" in object;\r\n\t } catch (exception) {\r\n\t }\r\n\t}\r\n\tif (Object.defineProperty) {\r\n\t var definePropertyWorksOnObject = doesDefinePropertyWork({});\r\n\t var definePropertyWorksOnDom = typeof document == \"undefined\" ||\r\n\t doesDefinePropertyWork(document.createElement(\"div\"));\r\n\t if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {\r\n\t var definePropertyFallback = Object.defineProperty;\r\n\t }\r\n\t}\r\n\r\n\tif (!Object.defineProperty || definePropertyFallback) {\r\n\t var ERR_NON_OBJECT_DESCRIPTOR = \"Property description must be an object: \";\r\n\t var ERR_NON_OBJECT_TARGET = \"Object.defineProperty called on non-object: \"\r\n\t var ERR_ACCESSORS_NOT_SUPPORTED = \"getters & setters can not be defined \" +\r\n\t \"on this javascript engine\";\r\n\r\n\t Object.defineProperty = function defineProperty(object, property, descriptor) {\r\n\t if ((typeof object != \"object\" && typeof object != \"function\") || object === null)\r\n\t throw new TypeError(ERR_NON_OBJECT_TARGET + object);\r\n\t if ((typeof descriptor != \"object\" && typeof descriptor != \"function\") || descriptor === null)\r\n\t throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);\r\n\t if (definePropertyFallback) {\r\n\t try {\r\n\t return definePropertyFallback.call(Object, object, property, descriptor);\r\n\t } catch (exception) {\r\n\t }\r\n\t }\r\n\t if (owns(descriptor, \"value\")) {\r\n\r\n\t if (supportsAccessors && (lookupGetter(object, property) ||\r\n\t lookupSetter(object, property)))\r\n\t {\r\n\t var prototype = object.__proto__;\r\n\t object.__proto__ = prototypeOfObject;\r\n\t delete object[property];\r\n\t object[property] = descriptor.value;\r\n\t object.__proto__ = prototype;\r\n\t } else {\r\n\t object[property] = descriptor.value;\r\n\t }\r\n\t } else {\r\n\t if (!supportsAccessors)\r\n\t throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);\r\n\t if (owns(descriptor, \"get\"))\r\n\t defineGetter(object, property, descriptor.get);\r\n\t if (owns(descriptor, \"set\"))\r\n\t defineSetter(object, property, descriptor.set);\r\n\t }\r\n\r\n\t return object;\r\n\t };\r\n\t}\r\n\tif (!Object.defineProperties) {\r\n\t Object.defineProperties = function defineProperties(object, properties) {\r\n\t for (var property in properties) {\r\n\t if (owns(properties, property))\r\n\t Object.defineProperty(object, property, properties[property]);\r\n\t }\r\n\t return object;\r\n\t };\r\n\t}\r\n\tif (!Object.seal) {\r\n\t Object.seal = function seal(object) {\r\n\t return object;\r\n\t };\r\n\t}\r\n\tif (!Object.freeze) {\r\n\t Object.freeze = function freeze(object) {\r\n\t return object;\r\n\t };\r\n\t}\r\n\ttry {\r\n\t Object.freeze(function () {});\r\n\t} catch (exception) {\r\n\t Object.freeze = (function freeze(freezeObject) {\r\n\t return function freeze(object) {\r\n\t if (typeof object == \"function\") {\r\n\t return object;\r\n\t } else {\r\n\t return freezeObject(object);\r\n\t }\r\n\t };\r\n\t })(Object.freeze);\r\n\t}\r\n\tif (!Object.preventExtensions) {\r\n\t Object.preventExtensions = function preventExtensions(object) {\r\n\t return object;\r\n\t };\r\n\t}\r\n\tif (!Object.isSealed) {\r\n\t Object.isSealed = function isSealed(object) {\r\n\t return false;\r\n\t };\r\n\t}\r\n\tif (!Object.isFrozen) {\r\n\t Object.isFrozen = function isFrozen(object) {\r\n\t return false;\r\n\t };\r\n\t}\r\n\tif (!Object.isExtensible) {\r\n\t Object.isExtensible = function isExtensible(object) {\r\n\t if (Object(object) === object) {\r\n\t throw new TypeError(); // TODO message\r\n\t }\r\n\t var name = '';\r\n\t while (owns(object, name)) {\r\n\t name += '?';\r\n\t }\r\n\t object[name] = true;\r\n\t var returnValue = owns(object, name);\r\n\t delete object[name];\r\n\t return returnValue;\r\n\t };\r\n\t}\r\n\tif (!Object.keys) {\r\n\t var hasDontEnumBug = true,\r\n\t dontEnums = [\r\n\t \"toString\",\r\n\t \"toLocaleString\",\r\n\t \"valueOf\",\r\n\t \"hasOwnProperty\",\r\n\t \"isPrototypeOf\",\r\n\t \"propertyIsEnumerable\",\r\n\t \"constructor\"\r\n\t ],\r\n\t dontEnumsLength = dontEnums.length;\r\n\r\n\t for (var key in {\"toString\": null}) {\r\n\t hasDontEnumBug = false;\r\n\t }\r\n\r\n\t Object.keys = function keys(object) {\r\n\r\n\t if (\r\n\t (typeof object != \"object\" && typeof object != \"function\") ||\r\n\t object === null\r\n\t ) {\r\n\t throw new TypeError(\"Object.keys called on a non-object\");\r\n\t }\r\n\r\n\t var keys = [];\r\n\t for (var name in object) {\r\n\t if (owns(object, name)) {\r\n\t keys.push(name);\r\n\t }\r\n\t }\r\n\r\n\t if (hasDontEnumBug) {\r\n\t for (var i = 0, ii = dontEnumsLength; i < ii; i++) {\r\n\t var dontEnum = dontEnums[i];\r\n\t if (owns(object, dontEnum)) {\r\n\t keys.push(dontEnum);\r\n\t }\r\n\t }\r\n\t }\r\n\t return keys;\r\n\t };\r\n\r\n\t}\r\n\tif (!Date.now) {\r\n\t Date.now = function now() {\r\n\t return new Date().getTime();\r\n\t };\r\n\t}\r\n\tvar ws = \"\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\" +\r\n\t \"\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\" +\r\n\t \"\\u2029\\uFEFF\";\r\n\tif (!String.prototype.trim || ws.trim()) {\r\n\t ws = \"[\" + ws + \"]\";\r\n\t var trimBeginRegexp = new RegExp(\"^\" + ws + ws + \"*\"),\r\n\t trimEndRegexp = new RegExp(ws + ws + \"*$\");\r\n\t String.prototype.trim = function trim() {\r\n\t return String(this).replace(trimBeginRegexp, \"\").replace(trimEndRegexp, \"\");\r\n\t };\r\n\t}\r\n\r\n\tfunction toInteger(n) {\r\n\t n = +n;\r\n\t if (n !== n) { // isNaN\r\n\t n = 0;\r\n\t } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {\r\n\t n = (n > 0 || -1) * Math.floor(Math.abs(n));\r\n\t }\r\n\t return n;\r\n\t}\r\n\r\n\tfunction isPrimitive(input) {\r\n\t var type = typeof input;\r\n\t return (\r\n\t input === null ||\r\n\t type === \"undefined\" ||\r\n\t type === \"boolean\" ||\r\n\t type === \"number\" ||\r\n\t type === \"string\"\r\n\t );\r\n\t}\r\n\r\n\tfunction toPrimitive(input) {\r\n\t var val, valueOf, toString;\r\n\t if (isPrimitive(input)) {\r\n\t return input;\r\n\t }\r\n\t valueOf = input.valueOf;\r\n\t if (typeof valueOf === \"function\") {\r\n\t val = valueOf.call(input);\r\n\t if (isPrimitive(val)) {\r\n\t return val;\r\n\t }\r\n\t }\r\n\t toString = input.toString;\r\n\t if (typeof toString === \"function\") {\r\n\t val = toString.call(input);\r\n\t if (isPrimitive(val)) {\r\n\t return val;\r\n\t }\r\n\t }\r\n\t throw new TypeError();\r\n\t}\r\n\tvar toObject = function (o) {\r\n\t if (o == null) { // this matches both null and undefined\r\n\t throw new TypeError(\"can't convert \"+o+\" to object\");\r\n\t }\r\n\t return Object(o);\r\n\t};\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tacequire(\"./regexp\");\r\n\tacequire(\"./es5-shim\");\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\r\n\r\n\texports.getDocumentHead = function(doc) {\r\n\t if (!doc)\r\n\t doc = document;\r\n\t return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\r\n\t};\r\n\r\n\texports.createElement = function(tag, ns) {\r\n\t return document.createElementNS ?\r\n\t document.createElementNS(ns || XHTML_NS, tag) :\r\n\t document.createElement(tag);\r\n\t};\r\n\r\n\texports.hasCssClass = function(el, name) {\r\n\t var classes = (el.className || \"\").split(/\\s+/g);\r\n\t return classes.indexOf(name) !== -1;\r\n\t};\r\n\texports.addCssClass = function(el, name) {\r\n\t if (!exports.hasCssClass(el, name)) {\r\n\t el.className += \" \" + name;\r\n\t }\r\n\t};\r\n\texports.removeCssClass = function(el, name) {\r\n\t var classes = el.className.split(/\\s+/g);\r\n\t while (true) {\r\n\t var index = classes.indexOf(name);\r\n\t if (index == -1) {\r\n\t break;\r\n\t }\r\n\t classes.splice(index, 1);\r\n\t }\r\n\t el.className = classes.join(\" \");\r\n\t};\r\n\r\n\texports.toggleCssClass = function(el, name) {\r\n\t var classes = el.className.split(/\\s+/g), add = true;\r\n\t while (true) {\r\n\t var index = classes.indexOf(name);\r\n\t if (index == -1) {\r\n\t break;\r\n\t }\r\n\t add = false;\r\n\t classes.splice(index, 1);\r\n\t }\r\n\t if (add)\r\n\t classes.push(name);\r\n\r\n\t el.className = classes.join(\" \");\r\n\t return add;\r\n\t};\r\n\texports.setCssClass = function(node, className, include) {\r\n\t if (include) {\r\n\t exports.addCssClass(node, className);\r\n\t } else {\r\n\t exports.removeCssClass(node, className);\r\n\t }\r\n\t};\r\n\r\n\texports.hasCssString = function(id, doc) {\r\n\t var index = 0, sheets;\r\n\t doc = doc || document;\r\n\r\n\t if (doc.createStyleSheet && (sheets = doc.styleSheets)) {\r\n\t while (index < sheets.length)\r\n\t if (sheets[index++].owningElement.id === id) return true;\r\n\t } else if ((sheets = doc.getElementsByTagName(\"style\"))) {\r\n\t while (index < sheets.length)\r\n\t if (sheets[index++].id === id) return true;\r\n\t }\r\n\r\n\t return false;\r\n\t};\r\n\r\n\texports.importCssString = function importCssString(cssText, id, doc) {\r\n\t doc = doc || document;\r\n\t if (id && exports.hasCssString(id, doc))\r\n\t return null;\r\n\t \r\n\t var style;\r\n\t \r\n\t if (id)\r\n\t cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\r\n\t \r\n\t if (doc.createStyleSheet) {\r\n\t style = doc.createStyleSheet();\r\n\t style.cssText = cssText;\r\n\t if (id)\r\n\t style.owningElement.id = id;\r\n\t } else {\r\n\t style = exports.createElement(\"style\");\r\n\t style.appendChild(doc.createTextNode(cssText));\r\n\t if (id)\r\n\t style.id = id;\r\n\r\n\t exports.getDocumentHead(doc).appendChild(style);\r\n\t }\r\n\t};\r\n\r\n\texports.importCssStylsheet = function(uri, doc) {\r\n\t if (doc.createStyleSheet) {\r\n\t doc.createStyleSheet(uri);\r\n\t } else {\r\n\t var link = exports.createElement('link');\r\n\t link.rel = 'stylesheet';\r\n\t link.href = uri;\r\n\r\n\t exports.getDocumentHead(doc).appendChild(link);\r\n\t }\r\n\t};\r\n\r\n\texports.getInnerWidth = function(element) {\r\n\t return (\r\n\t parseInt(exports.computedStyle(element, \"paddingLeft\"), 10) +\r\n\t parseInt(exports.computedStyle(element, \"paddingRight\"), 10) + \r\n\t element.clientWidth\r\n\t );\r\n\t};\r\n\r\n\texports.getInnerHeight = function(element) {\r\n\t return (\r\n\t parseInt(exports.computedStyle(element, \"paddingTop\"), 10) +\r\n\t parseInt(exports.computedStyle(element, \"paddingBottom\"), 10) +\r\n\t element.clientHeight\r\n\t );\r\n\t};\r\n\r\n\texports.scrollbarWidth = function(document) {\r\n\t var inner = exports.createElement(\"ace_inner\");\r\n\t inner.style.width = \"100%\";\r\n\t inner.style.minWidth = \"0px\";\r\n\t inner.style.height = \"200px\";\r\n\t inner.style.display = \"block\";\r\n\r\n\t var outer = exports.createElement(\"ace_outer\");\r\n\t var style = outer.style;\r\n\r\n\t style.position = \"absolute\";\r\n\t style.left = \"-10000px\";\r\n\t style.overflow = \"hidden\";\r\n\t style.width = \"200px\";\r\n\t style.minWidth = \"0px\";\r\n\t style.height = \"150px\";\r\n\t style.display = \"block\";\r\n\r\n\t outer.appendChild(inner);\r\n\r\n\t var body = document.documentElement;\r\n\t body.appendChild(outer);\r\n\r\n\t var noScrollbar = inner.offsetWidth;\r\n\r\n\t style.overflow = \"scroll\";\r\n\t var withScrollbar = inner.offsetWidth;\r\n\r\n\t if (noScrollbar == withScrollbar) {\r\n\t withScrollbar = outer.clientWidth;\r\n\t }\r\n\r\n\t body.removeChild(outer);\r\n\r\n\t return noScrollbar-withScrollbar;\r\n\t};\r\n\r\n\tif (typeof document == \"undefined\") {\r\n\t exports.importCssString = function() {};\r\n\t return;\r\n\t}\r\n\r\n\tif (window.pageYOffset !== undefined) {\r\n\t exports.getPageScrollTop = function() {\r\n\t return window.pageYOffset;\r\n\t };\r\n\r\n\t exports.getPageScrollLeft = function() {\r\n\t return window.pageXOffset;\r\n\t };\r\n\t}\r\n\telse {\r\n\t exports.getPageScrollTop = function() {\r\n\t return document.body.scrollTop;\r\n\t };\r\n\r\n\t exports.getPageScrollLeft = function() {\r\n\t return document.body.scrollLeft;\r\n\t };\r\n\t}\r\n\r\n\tif (window.getComputedStyle)\r\n\t exports.computedStyle = function(element, style) {\r\n\t if (style)\r\n\t return (window.getComputedStyle(element, \"\") || {})[style] || \"\";\r\n\t return window.getComputedStyle(element, \"\") || {};\r\n\t };\r\n\telse\r\n\t exports.computedStyle = function(element, style) {\r\n\t if (style)\r\n\t return element.currentStyle[style];\r\n\t return element.currentStyle;\r\n\t };\r\n\texports.setInnerHtml = function(el, innerHtml) {\r\n\t var element = el.cloneNode(false);//document.createElement(\"div\");\r\n\t element.innerHTML = innerHtml;\r\n\t el.parentNode.replaceChild(element, el);\r\n\t return element;\r\n\t};\r\n\r\n\tif (\"textContent\" in document.documentElement) {\r\n\t exports.setInnerText = function(el, innerText) {\r\n\t el.textContent = innerText;\r\n\t };\r\n\r\n\t exports.getInnerText = function(el) {\r\n\t return el.textContent;\r\n\t };\r\n\t}\r\n\telse {\r\n\t exports.setInnerText = function(el, innerText) {\r\n\t el.innerText = innerText;\r\n\t };\r\n\r\n\t exports.getInnerText = function(el) {\r\n\t return el.innerText;\r\n\t };\r\n\t}\r\n\r\n\texports.getParentWindow = function(document) {\r\n\t return document.defaultView || document.parentWindow;\r\n\t};\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\texports.inherits = function(ctor, superCtor) {\r\n\t ctor.super_ = superCtor;\r\n\t ctor.prototype = Object.create(superCtor.prototype, {\r\n\t constructor: {\r\n\t value: ctor,\r\n\t enumerable: false,\r\n\t writable: true,\r\n\t configurable: true\r\n\t }\r\n\t });\r\n\t};\r\n\r\n\texports.mixin = function(obj, mixin) {\r\n\t for (var key in mixin) {\r\n\t obj[key] = mixin[key];\r\n\t }\r\n\t return obj;\r\n\t};\r\n\r\n\texports.implement = function(proto, mixin) {\r\n\t exports.mixin(proto, mixin);\r\n\t};\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tacequire(\"./fixoldbrowsers\");\r\n\r\n\tvar oop = acequire(\"./oop\");\r\n\tvar Keys = (function() {\r\n\t var ret = {\r\n\t MODIFIER_KEYS: {\r\n\t 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta'\r\n\t },\r\n\r\n\t KEY_MODS: {\r\n\t \"ctrl\": 1, \"alt\": 2, \"option\" : 2, \"shift\": 4,\r\n\t \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8\r\n\t },\r\n\r\n\t FUNCTION_KEYS : {\r\n\t 8 : \"Backspace\",\r\n\t 9 : \"Tab\",\r\n\t 13 : \"Return\",\r\n\t 19 : \"Pause\",\r\n\t 27 : \"Esc\",\r\n\t 32 : \"Space\",\r\n\t 33 : \"PageUp\",\r\n\t 34 : \"PageDown\",\r\n\t 35 : \"End\",\r\n\t 36 : \"Home\",\r\n\t 37 : \"Left\",\r\n\t 38 : \"Up\",\r\n\t 39 : \"Right\",\r\n\t 40 : \"Down\",\r\n\t 44 : \"Print\",\r\n\t 45 : \"Insert\",\r\n\t 46 : \"Delete\",\r\n\t 96 : \"Numpad0\",\r\n\t 97 : \"Numpad1\",\r\n\t 98 : \"Numpad2\",\r\n\t 99 : \"Numpad3\",\r\n\t 100: \"Numpad4\",\r\n\t 101: \"Numpad5\",\r\n\t 102: \"Numpad6\",\r\n\t 103: \"Numpad7\",\r\n\t 104: \"Numpad8\",\r\n\t 105: \"Numpad9\",\r\n\t '-13': \"NumpadEnter\",\r\n\t 112: \"F1\",\r\n\t 113: \"F2\",\r\n\t 114: \"F3\",\r\n\t 115: \"F4\",\r\n\t 116: \"F5\",\r\n\t 117: \"F6\",\r\n\t 118: \"F7\",\r\n\t 119: \"F8\",\r\n\t 120: \"F9\",\r\n\t 121: \"F10\",\r\n\t 122: \"F11\",\r\n\t 123: \"F12\",\r\n\t 144: \"Numlock\",\r\n\t 145: \"Scrolllock\"\r\n\t },\r\n\r\n\t PRINTABLE_KEYS: {\r\n\t 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\r\n\t 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\r\n\t 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\r\n\t 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\r\n\t 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\r\n\t 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\r\n\t 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\r\n\t 219: '[', 220: '\\\\',221: ']', 222: \"'\", 111: '/', 106: '*'\r\n\t }\r\n\t };\r\n\t var name, i;\r\n\t for (i in ret.FUNCTION_KEYS) {\r\n\t name = ret.FUNCTION_KEYS[i].toLowerCase();\r\n\t ret[name] = parseInt(i, 10);\r\n\t }\r\n\t for (i in ret.PRINTABLE_KEYS) {\r\n\t name = ret.PRINTABLE_KEYS[i].toLowerCase();\r\n\t ret[name] = parseInt(i, 10);\r\n\t }\r\n\t oop.mixin(ret, ret.MODIFIER_KEYS);\r\n\t oop.mixin(ret, ret.PRINTABLE_KEYS);\r\n\t oop.mixin(ret, ret.FUNCTION_KEYS);\r\n\t ret.enter = ret[\"return\"];\r\n\t ret.escape = ret.esc;\r\n\t ret.del = ret[\"delete\"];\r\n\t ret[173] = '-';\r\n\t \r\n\t (function() {\r\n\t var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\r\n\t for (var i = Math.pow(2, mods.length); i--;) { \r\n\t ret.KEY_MODS[i] = mods.filter(function(x) {\r\n\t return i & ret.KEY_MODS[x];\r\n\t }).join(\"-\") + \"-\";\r\n\t }\r\n\t })();\r\n\r\n\t ret.KEY_MODS[0] = \"\";\r\n\t ret.KEY_MODS[-1] = \"input-\";\r\n\r\n\t return ret;\r\n\t})();\r\n\toop.mixin(exports, Keys);\r\n\r\n\texports.keyCodeToString = function(keyCode) {\r\n\t var keyString = Keys[keyCode];\r\n\t if (typeof keyString != \"string\")\r\n\t keyString = String.fromCharCode(keyCode);\r\n\t return keyString.toLowerCase();\r\n\t};\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\texports.OS = {\r\n\t LINUX: \"LINUX\",\r\n\t MAC: \"MAC\",\r\n\t WINDOWS: \"WINDOWS\"\r\n\t};\r\n\texports.getOS = function() {\r\n\t if (exports.isMac) {\r\n\t return exports.OS.MAC;\r\n\t } else if (exports.isLinux) {\r\n\t return exports.OS.LINUX;\r\n\t } else {\r\n\t return exports.OS.WINDOWS;\r\n\t }\r\n\t};\r\n\tif (typeof navigator != \"object\")\r\n\t return;\r\n\r\n\tvar os = (navigator.platform.match(/mac|win|linux/i) || [\"other\"])[0].toLowerCase();\r\n\tvar ua = navigator.userAgent;\r\n\texports.isWin = (os == \"win\");\r\n\texports.isMac = (os == \"mac\");\r\n\texports.isLinux = (os == \"linux\");\r\n\texports.isIE = \r\n\t (navigator.appName == \"Microsoft Internet Explorer\" || navigator.appName.indexOf(\"MSAppHost\") >= 0)\r\n\t ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1])\r\n\t : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]); // for ie\r\n\t \r\n\texports.isOldIE = exports.isIE && exports.isIE < 9;\r\n\texports.isGecko = exports.isMozilla = (window.Controllers || window.controllers) && window.navigator.product === \"Gecko\";\r\n\texports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv\\:(\\d+)/)||[])[1], 10) < 4;\r\n\texports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\r\n\texports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\r\n\r\n\texports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\r\n\r\n\texports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\r\n\r\n\texports.isIPad = ua.indexOf(\"iPad\") >= 0;\r\n\r\n\texports.isTouchPad = ua.indexOf(\"TouchPad\") >= 0;\r\n\r\n\texports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar keys = acequire(\"./keys\");\r\n\tvar useragent = acequire(\"./useragent\");\r\n\r\n\tvar pressedKeys = null;\r\n\tvar ts = 0;\r\n\r\n\texports.addListener = function(elem, type, callback) {\r\n\t if (elem.addEventListener) {\r\n\t return elem.addEventListener(type, callback, false);\r\n\t }\r\n\t if (elem.attachEvent) {\r\n\t var wrapper = function() {\r\n\t callback.call(elem, window.event);\r\n\t };\r\n\t callback._wrapper = wrapper;\r\n\t elem.attachEvent(\"on\" + type, wrapper);\r\n\t }\r\n\t};\r\n\r\n\texports.removeListener = function(elem, type, callback) {\r\n\t if (elem.removeEventListener) {\r\n\t return elem.removeEventListener(type, callback, false);\r\n\t }\r\n\t if (elem.detachEvent) {\r\n\t elem.detachEvent(\"on\" + type, callback._wrapper || callback);\r\n\t }\r\n\t};\r\n\texports.stopEvent = function(e) {\r\n\t exports.stopPropagation(e);\r\n\t exports.preventDefault(e);\r\n\t return false;\r\n\t};\r\n\r\n\texports.stopPropagation = function(e) {\r\n\t if (e.stopPropagation)\r\n\t e.stopPropagation();\r\n\t else\r\n\t e.cancelBubble = true;\r\n\t};\r\n\r\n\texports.preventDefault = function(e) {\r\n\t if (e.preventDefault)\r\n\t e.preventDefault();\r\n\t else\r\n\t e.returnValue = false;\r\n\t};\r\n\texports.getButton = function(e) {\r\n\t if (e.type == \"dblclick\")\r\n\t return 0;\r\n\t if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\r\n\t return 2;\r\n\t if (e.preventDefault) {\r\n\t return e.button;\r\n\t }\r\n\t else {\r\n\t return {1:0, 2:2, 4:1}[e.button];\r\n\t }\r\n\t};\r\n\r\n\texports.capture = function(el, eventHandler, releaseCaptureHandler) {\r\n\t function onMouseUp(e) {\r\n\t eventHandler && eventHandler(e);\r\n\t releaseCaptureHandler && releaseCaptureHandler(e);\r\n\r\n\t exports.removeListener(document, \"mousemove\", eventHandler, true);\r\n\t exports.removeListener(document, \"mouseup\", onMouseUp, true);\r\n\t exports.removeListener(document, \"dragstart\", onMouseUp, true);\r\n\t }\r\n\r\n\t exports.addListener(document, \"mousemove\", eventHandler, true);\r\n\t exports.addListener(document, \"mouseup\", onMouseUp, true);\r\n\t exports.addListener(document, \"dragstart\", onMouseUp, true);\r\n\t \r\n\t return onMouseUp;\r\n\t};\r\n\r\n\texports.addTouchMoveListener = function (el, callback) {\r\n\t if (\"ontouchmove\" in el) {\r\n\t var startx, starty;\r\n\t exports.addListener(el, \"touchstart\", function (e) {\r\n\t var touchObj = e.changedTouches[0];\r\n\t startx = touchObj.clientX;\r\n\t starty = touchObj.clientY;\r\n\t });\r\n\t exports.addListener(el, \"touchmove\", function (e) {\r\n\t var factor = 1,\r\n\t touchObj = e.changedTouches[0];\r\n\r\n\t e.wheelX = -(touchObj.clientX - startx) / factor;\r\n\t e.wheelY = -(touchObj.clientY - starty) / factor;\r\n\r\n\t startx = touchObj.clientX;\r\n\t starty = touchObj.clientY;\r\n\r\n\t callback(e);\r\n\t });\r\n\t } \r\n\t};\r\n\r\n\texports.addMouseWheelListener = function(el, callback) {\r\n\t if (\"onmousewheel\" in el) {\r\n\t exports.addListener(el, \"mousewheel\", function(e) {\r\n\t var factor = 8;\r\n\t if (e.wheelDeltaX !== undefined) {\r\n\t e.wheelX = -e.wheelDeltaX / factor;\r\n\t e.wheelY = -e.wheelDeltaY / factor;\r\n\t } else {\r\n\t e.wheelX = 0;\r\n\t e.wheelY = -e.wheelDelta / factor;\r\n\t }\r\n\t callback(e);\r\n\t });\r\n\t } else if (\"onwheel\" in el) {\r\n\t exports.addListener(el, \"wheel\", function(e) {\r\n\t var factor = 0.35;\r\n\t switch (e.deltaMode) {\r\n\t case e.DOM_DELTA_PIXEL:\r\n\t e.wheelX = e.deltaX * factor || 0;\r\n\t e.wheelY = e.deltaY * factor || 0;\r\n\t break;\r\n\t case e.DOM_DELTA_LINE:\r\n\t case e.DOM_DELTA_PAGE:\r\n\t e.wheelX = (e.deltaX || 0) * 5;\r\n\t e.wheelY = (e.deltaY || 0) * 5;\r\n\t break;\r\n\t }\r\n\t \r\n\t callback(e);\r\n\t });\r\n\t } else {\r\n\t exports.addListener(el, \"DOMMouseScroll\", function(e) {\r\n\t if (e.axis && e.axis == e.HORIZONTAL_AXIS) {\r\n\t e.wheelX = (e.detail || 0) * 5;\r\n\t e.wheelY = 0;\r\n\t } else {\r\n\t e.wheelX = 0;\r\n\t e.wheelY = (e.detail || 0) * 5;\r\n\t }\r\n\t callback(e);\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\texports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName) {\r\n\t var clicks = 0;\r\n\t var startX, startY, timer; \r\n\t var eventNames = {\r\n\t 2: \"dblclick\",\r\n\t 3: \"tripleclick\",\r\n\t 4: \"quadclick\"\r\n\t };\r\n\r\n\t function onMousedown(e) {\r\n\t if (exports.getButton(e) !== 0) {\r\n\t clicks = 0;\r\n\t } else if (e.detail > 1) {\r\n\t clicks++;\r\n\t if (clicks > 4)\r\n\t clicks = 1;\r\n\t } else {\r\n\t clicks = 1;\r\n\t }\r\n\t if (useragent.isIE) {\r\n\t var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\r\n\t if (!timer || isNewClick)\r\n\t clicks = 1;\r\n\t if (timer)\r\n\t clearTimeout(timer);\r\n\t timer = setTimeout(function() {timer = null}, timeouts[clicks - 1] || 600);\r\n\r\n\t if (clicks == 1) {\r\n\t startX = e.clientX;\r\n\t startY = e.clientY;\r\n\t }\r\n\t }\r\n\t \r\n\t e._clicks = clicks;\r\n\r\n\t eventHandler[callbackName](\"mousedown\", e);\r\n\r\n\t if (clicks > 4)\r\n\t clicks = 0;\r\n\t else if (clicks > 1)\r\n\t return eventHandler[callbackName](eventNames[clicks], e);\r\n\t }\r\n\t function onDblclick(e) {\r\n\t clicks = 2;\r\n\t if (timer)\r\n\t clearTimeout(timer);\r\n\t timer = setTimeout(function() {timer = null}, timeouts[clicks - 1] || 600);\r\n\t eventHandler[callbackName](\"mousedown\", e);\r\n\t eventHandler[callbackName](eventNames[clicks], e);\r\n\t }\r\n\t if (!Array.isArray(elements))\r\n\t elements = [elements];\r\n\t elements.forEach(function(el) {\r\n\t exports.addListener(el, \"mousedown\", onMousedown);\r\n\t if (useragent.isOldIE)\r\n\t exports.addListener(el, \"dblclick\", onDblclick);\r\n\t });\r\n\t};\r\n\r\n\tvar getModifierHash = useragent.isMac && useragent.isOpera && !(\"KeyboardEvent\" in window)\r\n\t ? function(e) {\r\n\t return 0 | (e.metaKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.ctrlKey ? 8 : 0);\r\n\t }\r\n\t : function(e) {\r\n\t return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\r\n\t };\r\n\r\n\texports.getModifierString = function(e) {\r\n\t return keys.KEY_MODS[getModifierHash(e)];\r\n\t};\r\n\r\n\tfunction normalizeCommandKeys(callback, e, keyCode) {\r\n\t var hashId = getModifierHash(e);\r\n\r\n\t if (!useragent.isMac && pressedKeys) {\r\n\t if (pressedKeys.OSKey)\r\n\t hashId |= 8;\r\n\t if (pressedKeys.altGr) {\r\n\t if ((3 & hashId) != 3)\r\n\t pressedKeys.altGr = 0;\r\n\t else\r\n\t return;\r\n\t }\r\n\t if (keyCode === 18 || keyCode === 17) {\r\n\t var location = \"location\" in e ? e.location : e.keyLocation;\r\n\t if (keyCode === 17 && location === 1) {\r\n\t if (pressedKeys[keyCode] == 1)\r\n\t ts = e.timeStamp;\r\n\t } else if (keyCode === 18 && hashId === 3 && location === 2) {\r\n\t var dt = e.timeStamp - ts;\r\n\t if (dt < 50)\r\n\t pressedKeys.altGr = true;\r\n\t }\r\n\t }\r\n\t }\r\n\t \r\n\t if (keyCode in keys.MODIFIER_KEYS) {\r\n\t keyCode = -1;\r\n\t }\r\n\t if (hashId & 8 && (keyCode >= 91 && keyCode <= 93)) {\r\n\t keyCode = -1;\r\n\t }\r\n\t \r\n\t if (!hashId && keyCode === 13) {\r\n\t var location = \"location\" in e ? e.location : e.keyLocation;\r\n\t if (location === 3) {\r\n\t callback(e, hashId, -keyCode);\r\n\t if (e.defaultPrevented)\r\n\t return;\r\n\t }\r\n\t }\r\n\t \r\n\t if (useragent.isChromeOS && hashId & 8) {\r\n\t callback(e, hashId, keyCode);\r\n\t if (e.defaultPrevented)\r\n\t return;\r\n\t else\r\n\t hashId &= ~8;\r\n\t }\r\n\t if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\r\n\t return false;\r\n\t }\r\n\t \r\n\t return callback(e, hashId, keyCode);\r\n\t}\r\n\r\n\r\n\texports.addCommandKeyListener = function(el, callback) {\r\n\t var addListener = exports.addListener;\r\n\t if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\r\n\t var lastKeyDownKeyCode = null;\r\n\t addListener(el, \"keydown\", function(e) {\r\n\t lastKeyDownKeyCode = e.keyCode;\r\n\t });\r\n\t addListener(el, \"keypress\", function(e) {\r\n\t return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\r\n\t });\r\n\t } else {\r\n\t var lastDefaultPrevented = null;\r\n\r\n\t addListener(el, \"keydown\", function(e) {\r\n\t var keyCode = e.keyCode;\r\n\t pressedKeys[keyCode] = (pressedKeys[keyCode] || 0) + 1;\r\n\t if (keyCode == 91 || keyCode == 92) {\r\n\t pressedKeys.OSKey = true;\r\n\t } else if (pressedKeys.OSKey) {\r\n\t if (e.timeStamp - pressedKeys.lastT > 200 && pressedKeys.count == 1)\r\n\t resetPressedKeys();\r\n\t }\r\n\t if (pressedKeys[keyCode] == 1)\r\n\t pressedKeys.count++;\r\n\t pressedKeys.lastT = e.timeStamp;\r\n\t var result = normalizeCommandKeys(callback, e, keyCode);\r\n\t lastDefaultPrevented = e.defaultPrevented;\r\n\t return result;\r\n\t });\r\n\r\n\t addListener(el, \"keypress\", function(e) {\r\n\t if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\r\n\t exports.stopEvent(e);\r\n\t lastDefaultPrevented = null;\r\n\t }\r\n\t });\r\n\r\n\t addListener(el, \"keyup\", function(e) {\r\n\t var keyCode = e.keyCode;\r\n\t if (!pressedKeys[keyCode]) {\r\n\t resetPressedKeys();\r\n\t } else {\r\n\t pressedKeys.count = Math.max(pressedKeys.count - 1, 0);\r\n\t }\r\n\t if (keyCode == 91 || keyCode == 92) {\r\n\t pressedKeys.OSKey = false;\r\n\t }\r\n\t pressedKeys[keyCode] = null;\r\n\t });\r\n\r\n\t if (!pressedKeys) {\r\n\t resetPressedKeys();\r\n\t addListener(window, \"focus\", resetPressedKeys);\r\n\t }\r\n\t }\r\n\t};\r\n\tfunction resetPressedKeys() {\r\n\t pressedKeys = Object.create(null);\r\n\t pressedKeys.count = 0;\r\n\t pressedKeys.lastT = 0;\r\n\t}\r\n\r\n\tif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\r\n\t var postMessageId = 1;\r\n\t exports.nextTick = function(callback, win) {\r\n\t win = win || window;\r\n\t var messageName = \"zero-timeout-message-\" + postMessageId;\r\n\t exports.addListener(win, \"message\", function listener(e) {\r\n\t if (e.data == messageName) {\r\n\t exports.stopPropagation(e);\r\n\t exports.removeListener(win, \"message\", listener);\r\n\t callback();\r\n\t }\r\n\t });\r\n\t win.postMessage(messageName, \"*\");\r\n\t };\r\n\t}\r\n\r\n\r\n\texports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\r\n\t || window.mozRequestAnimationFrame\r\n\t || window.webkitRequestAnimationFrame\r\n\t || window.msRequestAnimationFrame\r\n\t || window.oRequestAnimationFrame);\r\n\r\n\tif (exports.nextFrame)\r\n\t exports.nextFrame = exports.nextFrame.bind(window);\r\n\telse\r\n\t exports.nextFrame = function(callback) {\r\n\t setTimeout(callback, 17);\r\n\t };\r\n\t});\r\n\r\n\tace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\texports.last = function(a) {\r\n\t return a[a.length - 1];\r\n\t};\r\n\r\n\texports.stringReverse = function(string) {\r\n\t return string.split(\"\").reverse().join(\"\");\r\n\t};\r\n\r\n\texports.stringRepeat = function (string, count) {\r\n\t var result = '';\r\n\t while (count > 0) {\r\n\t if (count & 1)\r\n\t result += string;\r\n\r\n\t if (count >>= 1)\r\n\t string += string;\r\n\t }\r\n\t return result;\r\n\t};\r\n\r\n\tvar trimBeginRegexp = /^\\s\\s*/;\r\n\tvar trimEndRegexp = /\\s\\s*$/;\r\n\r\n\texports.stringTrimLeft = function (string) {\r\n\t return string.replace(trimBeginRegexp, '');\r\n\t};\r\n\r\n\texports.stringTrimRight = function (string) {\r\n\t return string.replace(trimEndRegexp, '');\r\n\t};\r\n\r\n\texports.copyObject = function(obj) {\r\n\t var copy = {};\r\n\t for (var key in obj) {\r\n\t copy[key] = obj[key];\r\n\t }\r\n\t return copy;\r\n\t};\r\n\r\n\texports.copyArray = function(array){\r\n\t var copy = [];\r\n\t for (var i=0, l=array.length; i 1);\r\n\t return ev.preventDefault();\r\n\t };\r\n\r\n\t this.startSelect = function(pos, waitForClickSelection) {\r\n\t pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\r\n\t var editor = this.editor;\r\n\t editor.$blockScrolling++;\r\n\t if (this.mousedownEvent.getShiftKey())\r\n\t editor.selection.selectToPosition(pos);\r\n\t else if (!waitForClickSelection)\r\n\t editor.selection.moveToPosition(pos);\r\n\t if (!waitForClickSelection)\r\n\t this.select();\r\n\t if (editor.renderer.scroller.setCapture) {\r\n\t editor.renderer.scroller.setCapture();\r\n\t }\r\n\t editor.setStyle(\"ace_selecting\");\r\n\t this.setState(\"select\");\r\n\t editor.$blockScrolling--;\r\n\t };\r\n\r\n\t this.select = function() {\r\n\t var anchor, editor = this.editor;\r\n\t var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\r\n\t editor.$blockScrolling++;\r\n\t if (this.$clickSelection) {\r\n\t var cmp = this.$clickSelection.comparePoint(cursor);\r\n\r\n\t if (cmp == -1) {\r\n\t anchor = this.$clickSelection.end;\r\n\t } else if (cmp == 1) {\r\n\t anchor = this.$clickSelection.start;\r\n\t } else {\r\n\t var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\r\n\t cursor = orientedRange.cursor;\r\n\t anchor = orientedRange.anchor;\r\n\t }\r\n\t editor.selection.setSelectionAnchor(anchor.row, anchor.column);\r\n\t }\r\n\t editor.selection.selectToPosition(cursor);\r\n\t editor.$blockScrolling--;\r\n\t editor.renderer.scrollCursorIntoView();\r\n\t };\r\n\r\n\t this.extendSelectionBy = function(unitName) {\r\n\t var anchor, editor = this.editor;\r\n\t var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\r\n\t var range = editor.selection[unitName](cursor.row, cursor.column);\r\n\t editor.$blockScrolling++;\r\n\t if (this.$clickSelection) {\r\n\t var cmpStart = this.$clickSelection.comparePoint(range.start);\r\n\t var cmpEnd = this.$clickSelection.comparePoint(range.end);\r\n\r\n\t if (cmpStart == -1 && cmpEnd <= 0) {\r\n\t anchor = this.$clickSelection.end;\r\n\t if (range.end.row != cursor.row || range.end.column != cursor.column)\r\n\t cursor = range.start;\r\n\t } else if (cmpEnd == 1 && cmpStart >= 0) {\r\n\t anchor = this.$clickSelection.start;\r\n\t if (range.start.row != cursor.row || range.start.column != cursor.column)\r\n\t cursor = range.end;\r\n\t } else if (cmpStart == -1 && cmpEnd == 1) {\r\n\t cursor = range.end;\r\n\t anchor = range.start;\r\n\t } else {\r\n\t var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\r\n\t cursor = orientedRange.cursor;\r\n\t anchor = orientedRange.anchor;\r\n\t }\r\n\t editor.selection.setSelectionAnchor(anchor.row, anchor.column);\r\n\t }\r\n\t editor.selection.selectToPosition(cursor);\r\n\t editor.$blockScrolling--;\r\n\t editor.renderer.scrollCursorIntoView();\r\n\t };\r\n\r\n\t this.selectEnd =\r\n\t this.selectAllEnd =\r\n\t this.selectByWordsEnd =\r\n\t this.selectByLinesEnd = function() {\r\n\t this.$clickSelection = null;\r\n\t this.editor.unsetStyle(\"ace_selecting\");\r\n\t if (this.editor.renderer.scroller.releaseCapture) {\r\n\t this.editor.renderer.scroller.releaseCapture();\r\n\t }\r\n\t };\r\n\r\n\t this.focusWait = function() {\r\n\t var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\r\n\t var time = Date.now();\r\n\r\n\t if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimout)\r\n\t this.startSelect(this.mousedownEvent.getDocumentPosition());\r\n\t };\r\n\r\n\t this.onDoubleClick = function(ev) {\r\n\t var pos = ev.getDocumentPosition();\r\n\t var editor = this.editor;\r\n\t var session = editor.session;\r\n\r\n\t var range = session.getBracketRange(pos);\r\n\t if (range) {\r\n\t if (range.isEmpty()) {\r\n\t range.start.column--;\r\n\t range.end.column++;\r\n\t }\r\n\t this.setState(\"select\");\r\n\t } else {\r\n\t range = editor.selection.getWordRange(pos.row, pos.column);\r\n\t this.setState(\"selectByWords\");\r\n\t }\r\n\t this.$clickSelection = range;\r\n\t this.select();\r\n\t };\r\n\r\n\t this.onTripleClick = function(ev) {\r\n\t var pos = ev.getDocumentPosition();\r\n\t var editor = this.editor;\r\n\r\n\t this.setState(\"selectByLines\");\r\n\t var range = editor.getSelectionRange();\r\n\t if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\r\n\t this.$clickSelection = editor.selection.getLineRange(range.start.row);\r\n\t this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\r\n\t } else {\r\n\t this.$clickSelection = editor.selection.getLineRange(pos.row);\r\n\t }\r\n\t this.select();\r\n\t };\r\n\r\n\t this.onQuadClick = function(ev) {\r\n\t var editor = this.editor;\r\n\r\n\t editor.selectAll();\r\n\t this.$clickSelection = editor.getSelectionRange();\r\n\t this.setState(\"selectAll\");\r\n\t };\r\n\r\n\t this.onMouseWheel = function(ev) {\r\n\t if (ev.getAccelKey())\r\n\t return;\r\n\t if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\r\n\t ev.wheelX = ev.wheelY;\r\n\t ev.wheelY = 0;\r\n\t }\r\n\r\n\t var t = ev.domEvent.timeStamp;\r\n\t var dt = t - (this.$lastScrollTime||0);\r\n\t \r\n\t var editor = this.editor;\r\n\t var isScrolable = editor.renderer.isScrollableBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\r\n\t if (isScrolable || dt < 200) {\r\n\t this.$lastScrollTime = t;\r\n\t editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\r\n\t return ev.stop();\r\n\t }\r\n\t };\r\n\t \r\n\t this.onTouchMove = function (ev) {\r\n\t var t = ev.domEvent.timeStamp;\r\n\t var dt = t - (this.$lastScrollTime || 0);\r\n\r\n\t var editor = this.editor;\r\n\t var isScrolable = editor.renderer.isScrollableBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\r\n\t if (isScrolable || dt < 200) {\r\n\t this.$lastScrollTime = t;\r\n\t editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\r\n\t return ev.stop();\r\n\t }\r\n\t };\r\n\r\n\t}).call(DefaultHandlers.prototype);\r\n\r\n\texports.DefaultHandlers = DefaultHandlers;\r\n\r\n\tfunction calcDistance(ax, ay, bx, by) {\r\n\t return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\r\n\t}\r\n\r\n\tfunction calcRangeOrientation(range, cursor) {\r\n\t if (range.start.row == range.end.row)\r\n\t var cmp = 2 * cursor.column - range.start.column - range.end.column;\r\n\t else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\r\n\t var cmp = cursor.column - 4;\r\n\t else\r\n\t var cmp = 2 * cursor.row - range.start.row - range.end.row;\r\n\r\n\t if (cmp < 0)\r\n\t return {cursor: range.start, anchor: range.end};\r\n\t else\r\n\t return {cursor: range.end, anchor: range.start};\r\n\t}\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar dom = acequire(\"./lib/dom\");\r\n\tfunction Tooltip (parentNode) {\r\n\t this.isOpen = false;\r\n\t this.$element = null;\r\n\t this.$parentNode = parentNode;\r\n\t}\r\n\r\n\t(function() {\r\n\t this.$init = function() {\r\n\t this.$element = dom.createElement(\"div\");\r\n\t this.$element.className = \"ace_tooltip\";\r\n\t this.$element.style.display = \"none\";\r\n\t this.$parentNode.appendChild(this.$element);\r\n\t return this.$element;\r\n\t };\r\n\t this.getElement = function() {\r\n\t return this.$element || this.$init();\r\n\t };\r\n\t this.setText = function(text) {\r\n\t dom.setInnerText(this.getElement(), text);\r\n\t };\r\n\t this.setHtml = function(html) {\r\n\t this.getElement().innerHTML = html;\r\n\t };\r\n\t this.setPosition = function(x, y) {\r\n\t this.getElement().style.left = x + \"px\";\r\n\t this.getElement().style.top = y + \"px\";\r\n\t };\r\n\t this.setClassName = function(className) {\r\n\t dom.addCssClass(this.getElement(), className);\r\n\t };\r\n\t this.show = function(text, x, y) {\r\n\t if (text != null)\r\n\t this.setText(text);\r\n\t if (x != null && y != null)\r\n\t this.setPosition(x, y);\r\n\t if (!this.isOpen) {\r\n\t this.getElement().style.display = \"block\";\r\n\t this.isOpen = true;\r\n\t }\r\n\t };\r\n\r\n\t this.hide = function() {\r\n\t if (this.isOpen) {\r\n\t this.getElement().style.display = \"none\";\r\n\t this.isOpen = false;\r\n\t }\r\n\t };\r\n\t this.getHeight = function() {\r\n\t return this.getElement().offsetHeight;\r\n\t };\r\n\t this.getWidth = function() {\r\n\t return this.getElement().offsetWidth;\r\n\t };\r\n\r\n\t}).call(Tooltip.prototype);\r\n\r\n\texports.Tooltip = Tooltip;\r\n\t});\r\n\r\n\tace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event\",\"ace/tooltip\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tvar oop = acequire(\"../lib/oop\");\r\n\tvar event = acequire(\"../lib/event\");\r\n\tvar Tooltip = acequire(\"../tooltip\").Tooltip;\r\n\r\n\tfunction GutterHandler(mouseHandler) {\r\n\t var editor = mouseHandler.editor;\r\n\t var gutter = editor.renderer.$gutterLayer;\r\n\t var tooltip = new GutterTooltip(editor.container);\r\n\r\n\t mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function(e) {\r\n\t if (!editor.isFocused() || e.getButton() != 0)\r\n\t return;\r\n\t var gutterRegion = gutter.getRegion(e);\r\n\r\n\t if (gutterRegion == \"foldWidgets\")\r\n\t return;\r\n\r\n\t var row = e.getDocumentPosition().row;\r\n\t var selection = editor.session.selection;\r\n\r\n\t if (e.getShiftKey())\r\n\t selection.selectTo(row, 0);\r\n\t else {\r\n\t if (e.domEvent.detail == 2) {\r\n\t editor.selectAll();\r\n\t return e.preventDefault();\r\n\t }\r\n\t mouseHandler.$clickSelection = editor.selection.getLineRange(row);\r\n\t }\r\n\t mouseHandler.setState(\"selectByLines\");\r\n\t mouseHandler.captureMouse(e);\r\n\t return e.preventDefault();\r\n\t });\r\n\r\n\r\n\t var tooltipTimeout, mouseEvent, tooltipAnnotation;\r\n\r\n\t function showTooltip() {\r\n\t var row = mouseEvent.getDocumentPosition().row;\r\n\t var annotation = gutter.$annotations[row];\r\n\t if (!annotation)\r\n\t return hideTooltip();\r\n\r\n\t var maxRow = editor.session.getLength();\r\n\t if (row == maxRow) {\r\n\t var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\r\n\t var pos = mouseEvent.$pos;\r\n\t if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\r\n\t return hideTooltip();\r\n\t }\r\n\r\n\t if (tooltipAnnotation == annotation)\r\n\t return;\r\n\t tooltipAnnotation = annotation.text.join(\" \");\r\n\r\n\t tooltip.setHtml(tooltipAnnotation);\r\n\t tooltip.show();\r\n\t editor.on(\"mousewheel\", hideTooltip);\r\n\r\n\t if (mouseHandler.$tooltipFollowsMouse) {\r\n\t moveTooltip(mouseEvent);\r\n\t } else {\r\n\t var gutterElement = mouseEvent.domEvent.target;\r\n\t var rect = gutterElement.getBoundingClientRect();\r\n\t var style = tooltip.getElement().style;\r\n\t style.left = rect.right + \"px\";\r\n\t style.top = rect.bottom + \"px\";\r\n\t }\r\n\t }\r\n\r\n\t function hideTooltip() {\r\n\t if (tooltipTimeout)\r\n\t tooltipTimeout = clearTimeout(tooltipTimeout);\r\n\t if (tooltipAnnotation) {\r\n\t tooltip.hide();\r\n\t tooltipAnnotation = null;\r\n\t editor.removeEventListener(\"mousewheel\", hideTooltip);\r\n\t }\r\n\t }\r\n\r\n\t function moveTooltip(e) {\r\n\t tooltip.setPosition(e.x, e.y);\r\n\t }\r\n\r\n\t mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function(e) {\r\n\t var target = e.domEvent.target || e.domEvent.srcElement;\r\n\t if (dom.hasCssClass(target, \"ace_fold-widget\"))\r\n\t return hideTooltip();\r\n\r\n\t if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)\r\n\t moveTooltip(e);\r\n\r\n\t mouseEvent = e;\r\n\t if (tooltipTimeout)\r\n\t return;\r\n\t tooltipTimeout = setTimeout(function() {\r\n\t tooltipTimeout = null;\r\n\t if (mouseEvent && !mouseHandler.isMousePressed)\r\n\t showTooltip();\r\n\t else\r\n\t hideTooltip();\r\n\t }, 50);\r\n\t });\r\n\r\n\t event.addListener(editor.renderer.$gutter, \"mouseout\", function(e) {\r\n\t mouseEvent = null;\r\n\t if (!tooltipAnnotation || tooltipTimeout)\r\n\t return;\r\n\r\n\t tooltipTimeout = setTimeout(function() {\r\n\t tooltipTimeout = null;\r\n\t hideTooltip();\r\n\t }, 50);\r\n\t });\r\n\t \r\n\t editor.on(\"changeSession\", hideTooltip);\r\n\t}\r\n\r\n\tfunction GutterTooltip(parentNode) {\r\n\t Tooltip.call(this, parentNode);\r\n\t}\r\n\r\n\toop.inherits(GutterTooltip, Tooltip);\r\n\r\n\t(function(){\r\n\t this.setPosition = function(x, y) {\r\n\t var windowWidth = window.innerWidth || document.documentElement.clientWidth;\r\n\t var windowHeight = window.innerHeight || document.documentElement.clientHeight;\r\n\t var width = this.getWidth();\r\n\t var height = this.getHeight();\r\n\t x += 15;\r\n\t y += 15;\r\n\t if (x + width > windowWidth) {\r\n\t x -= (x + width) - windowWidth;\r\n\t }\r\n\t if (y + height > windowHeight) {\r\n\t y -= 20 + height;\r\n\t }\r\n\t Tooltip.prototype.setPosition.call(this, x, y);\r\n\t };\r\n\r\n\t}).call(GutterTooltip.prototype);\r\n\r\n\r\n\r\n\texports.GutterHandler = GutterHandler;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar event = acequire(\"../lib/event\");\r\n\tvar useragent = acequire(\"../lib/useragent\");\r\n\tvar MouseEvent = exports.MouseEvent = function(domEvent, editor) {\r\n\t this.domEvent = domEvent;\r\n\t this.editor = editor;\r\n\t \r\n\t this.x = this.clientX = domEvent.clientX;\r\n\t this.y = this.clientY = domEvent.clientY;\r\n\r\n\t this.$pos = null;\r\n\t this.$inSelection = null;\r\n\t \r\n\t this.propagationStopped = false;\r\n\t this.defaultPrevented = false;\r\n\t};\r\n\r\n\t(function() { \r\n\t \r\n\t this.stopPropagation = function() {\r\n\t event.stopPropagation(this.domEvent);\r\n\t this.propagationStopped = true;\r\n\t };\r\n\t \r\n\t this.preventDefault = function() {\r\n\t event.preventDefault(this.domEvent);\r\n\t this.defaultPrevented = true;\r\n\t };\r\n\t \r\n\t this.stop = function() {\r\n\t this.stopPropagation();\r\n\t this.preventDefault();\r\n\t };\r\n\t this.getDocumentPosition = function() {\r\n\t if (this.$pos)\r\n\t return this.$pos;\r\n\t \r\n\t this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\r\n\t return this.$pos;\r\n\t };\r\n\t this.inSelection = function() {\r\n\t if (this.$inSelection !== null)\r\n\t return this.$inSelection;\r\n\t \r\n\t var editor = this.editor;\r\n\t \r\n\r\n\t var selectionRange = editor.getSelectionRange();\r\n\t if (selectionRange.isEmpty())\r\n\t this.$inSelection = false;\r\n\t else {\r\n\t var pos = this.getDocumentPosition();\r\n\t this.$inSelection = selectionRange.contains(pos.row, pos.column);\r\n\t }\r\n\r\n\t return this.$inSelection;\r\n\t };\r\n\t this.getButton = function() {\r\n\t return event.getButton(this.domEvent);\r\n\t };\r\n\t this.getShiftKey = function() {\r\n\t return this.domEvent.shiftKey;\r\n\t };\r\n\t \r\n\t this.getAccelKey = useragent.isMac\r\n\t ? function() { return this.domEvent.metaKey; }\r\n\t : function() { return this.domEvent.ctrlKey; };\r\n\t \r\n\t}).call(MouseEvent.prototype);\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tvar event = acequire(\"../lib/event\");\r\n\tvar useragent = acequire(\"../lib/useragent\");\r\n\r\n\tvar AUTOSCROLL_DELAY = 200;\r\n\tvar SCROLL_CURSOR_DELAY = 200;\r\n\tvar SCROLL_CURSOR_HYSTERESIS = 5;\r\n\r\n\tfunction DragdropHandler(mouseHandler) {\r\n\r\n\t var editor = mouseHandler.editor;\r\n\r\n\t var blankImage = dom.createElement(\"img\");\r\n\t blankImage.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\r\n\t if (useragent.isOpera)\r\n\t blankImage.style.cssText = \"width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;\";\r\n\r\n\t var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\r\n\r\n\t exports.forEach(function(x) {\r\n\t mouseHandler[x] = this[x];\r\n\t }, this);\r\n\t editor.addEventListener(\"mousedown\", this.onMouseDown.bind(mouseHandler));\r\n\r\n\r\n\t var mouseTarget = editor.container;\r\n\t var dragSelectionMarker, x, y;\r\n\t var timerId, range;\r\n\t var dragCursor, counter = 0;\r\n\t var dragOperation;\r\n\t var isInternal;\r\n\t var autoScrollStartTime;\r\n\t var cursorMovedTime;\r\n\t var cursorPointOnCaretMoved;\r\n\r\n\t this.onDragStart = function(e) {\r\n\t if (this.cancelDrag || !mouseTarget.draggable) {\r\n\t var self = this;\r\n\t setTimeout(function(){\r\n\t self.startSelect();\r\n\t self.captureMouse(e);\r\n\t }, 0);\r\n\t return e.preventDefault();\r\n\t }\r\n\t range = editor.getSelectionRange();\r\n\r\n\t var dataTransfer = e.dataTransfer;\r\n\t dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\r\n\t if (useragent.isOpera) {\r\n\t editor.container.appendChild(blankImage);\r\n\t blankImage.scrollTop = 0;\r\n\t }\r\n\t dataTransfer.setDragImage && dataTransfer.setDragImage(blankImage, 0, 0);\r\n\t if (useragent.isOpera) {\r\n\t editor.container.removeChild(blankImage);\r\n\t }\r\n\t dataTransfer.clearData();\r\n\t dataTransfer.setData(\"Text\", editor.session.getTextRange());\r\n\r\n\t isInternal = true;\r\n\t this.setState(\"drag\");\r\n\t };\r\n\r\n\t this.onDragEnd = function(e) {\r\n\t mouseTarget.draggable = false;\r\n\t isInternal = false;\r\n\t this.setState(null);\r\n\t if (!editor.getReadOnly()) {\r\n\t var dropEffect = e.dataTransfer.dropEffect;\r\n\t if (!dragOperation && dropEffect == \"move\")\r\n\t editor.session.remove(editor.getSelectionRange());\r\n\t editor.renderer.$cursorLayer.setBlinking(true);\r\n\t }\r\n\t this.editor.unsetStyle(\"ace_dragging\");\r\n\t this.editor.renderer.setCursorStyle(\"\");\r\n\t };\r\n\r\n\t this.onDragEnter = function(e) {\r\n\t if (editor.getReadOnly() || !canAccept(e.dataTransfer))\r\n\t return;\r\n\t x = e.clientX;\r\n\t y = e.clientY;\r\n\t if (!dragSelectionMarker)\r\n\t addDragMarker();\r\n\t counter++;\r\n\t e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\r\n\t return event.preventDefault(e);\r\n\t };\r\n\r\n\t this.onDragOver = function(e) {\r\n\t if (editor.getReadOnly() || !canAccept(e.dataTransfer))\r\n\t return;\r\n\t x = e.clientX;\r\n\t y = e.clientY;\r\n\t if (!dragSelectionMarker) {\r\n\t addDragMarker();\r\n\t counter++;\r\n\t }\r\n\t if (onMouseMoveTimer !== null)\r\n\t onMouseMoveTimer = null;\r\n\r\n\t e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\r\n\t return event.preventDefault(e);\r\n\t };\r\n\r\n\t this.onDragLeave = function(e) {\r\n\t counter--;\r\n\t if (counter <= 0 && dragSelectionMarker) {\r\n\t clearDragMarker();\r\n\t dragOperation = null;\r\n\t return event.preventDefault(e);\r\n\t }\r\n\t };\r\n\r\n\t this.onDrop = function(e) {\r\n\t if (!dragCursor)\r\n\t return;\r\n\t var dataTransfer = e.dataTransfer;\r\n\t if (isInternal) {\r\n\t switch (dragOperation) {\r\n\t case \"move\":\r\n\t if (range.contains(dragCursor.row, dragCursor.column)) {\r\n\t range = {\r\n\t start: dragCursor,\r\n\t end: dragCursor\r\n\t };\r\n\t } else {\r\n\t range = editor.moveText(range, dragCursor);\r\n\t }\r\n\t break;\r\n\t case \"copy\":\r\n\t range = editor.moveText(range, dragCursor, true);\r\n\t break;\r\n\t }\r\n\t } else {\r\n\t var dropData = dataTransfer.getData('Text');\r\n\t range = {\r\n\t start: dragCursor,\r\n\t end: editor.session.insert(dragCursor, dropData)\r\n\t };\r\n\t editor.focus();\r\n\t dragOperation = null;\r\n\t }\r\n\t clearDragMarker();\r\n\t return event.preventDefault(e);\r\n\t };\r\n\r\n\t event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler));\r\n\t event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler));\r\n\t event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler));\r\n\t event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler));\r\n\t event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler));\r\n\t event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler));\r\n\r\n\t function scrollCursorIntoView(cursor, prevCursor) {\r\n\t var now = Date.now();\r\n\t var vMovement = !prevCursor || cursor.row != prevCursor.row;\r\n\t var hMovement = !prevCursor || cursor.column != prevCursor.column;\r\n\t if (!cursorMovedTime || vMovement || hMovement) {\r\n\t editor.$blockScrolling += 1;\r\n\t editor.moveCursorToPosition(cursor);\r\n\t editor.$blockScrolling -= 1;\r\n\t cursorMovedTime = now;\r\n\t cursorPointOnCaretMoved = {x: x, y: y};\r\n\t } else {\r\n\t var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\r\n\t if (distance > SCROLL_CURSOR_HYSTERESIS) {\r\n\t cursorMovedTime = null;\r\n\t } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\r\n\t editor.renderer.scrollCursorIntoView();\r\n\t cursorMovedTime = null;\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t function autoScroll(cursor, prevCursor) {\r\n\t var now = Date.now();\r\n\t var lineHeight = editor.renderer.layerConfig.lineHeight;\r\n\t var characterWidth = editor.renderer.layerConfig.characterWidth;\r\n\t var editorRect = editor.renderer.scroller.getBoundingClientRect();\r\n\t var offsets = {\r\n\t x: {\r\n\t left: x - editorRect.left,\r\n\t right: editorRect.right - x\r\n\t },\r\n\t y: {\r\n\t top: y - editorRect.top,\r\n\t bottom: editorRect.bottom - y\r\n\t }\r\n\t };\r\n\t var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\r\n\t var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\r\n\t var scrollCursor = {row: cursor.row, column: cursor.column};\r\n\t if (nearestXOffset / characterWidth <= 2) {\r\n\t scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\r\n\t }\r\n\t if (nearestYOffset / lineHeight <= 1) {\r\n\t scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\r\n\t }\r\n\t var vScroll = cursor.row != scrollCursor.row;\r\n\t var hScroll = cursor.column != scrollCursor.column;\r\n\t var vMovement = !prevCursor || cursor.row != prevCursor.row;\r\n\t if (vScroll || (hScroll && !vMovement)) {\r\n\t if (!autoScrollStartTime)\r\n\t autoScrollStartTime = now;\r\n\t else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\r\n\t editor.renderer.scrollCursorIntoView(scrollCursor);\r\n\t } else {\r\n\t autoScrollStartTime = null;\r\n\t }\r\n\t }\r\n\r\n\t function onDragInterval() {\r\n\t var prevCursor = dragCursor;\r\n\t dragCursor = editor.renderer.screenToTextCoordinates(x, y);\r\n\t scrollCursorIntoView(dragCursor, prevCursor);\r\n\t autoScroll(dragCursor, prevCursor);\r\n\t }\r\n\r\n\t function addDragMarker() {\r\n\t range = editor.selection.toOrientedRange();\r\n\t dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\r\n\t editor.clearSelection();\r\n\t if (editor.isFocused())\r\n\t editor.renderer.$cursorLayer.setBlinking(false);\r\n\t clearInterval(timerId);\r\n\t onDragInterval();\r\n\t timerId = setInterval(onDragInterval, 20);\r\n\t counter = 0;\r\n\t event.addListener(document, \"mousemove\", onMouseMove);\r\n\t }\r\n\r\n\t function clearDragMarker() {\r\n\t clearInterval(timerId);\r\n\t editor.session.removeMarker(dragSelectionMarker);\r\n\t dragSelectionMarker = null;\r\n\t editor.$blockScrolling += 1;\r\n\t editor.selection.fromOrientedRange(range);\r\n\t editor.$blockScrolling -= 1;\r\n\t if (editor.isFocused() && !isInternal)\r\n\t editor.renderer.$cursorLayer.setBlinking(!editor.getReadOnly());\r\n\t range = null;\r\n\t dragCursor = null;\r\n\t counter = 0;\r\n\t autoScrollStartTime = null;\r\n\t cursorMovedTime = null;\r\n\t event.removeListener(document, \"mousemove\", onMouseMove);\r\n\t }\r\n\t var onMouseMoveTimer = null;\r\n\t function onMouseMove() {\r\n\t if (onMouseMoveTimer == null) {\r\n\t onMouseMoveTimer = setTimeout(function() {\r\n\t if (onMouseMoveTimer != null && dragSelectionMarker)\r\n\t clearDragMarker();\r\n\t }, 20);\r\n\t }\r\n\t }\r\n\r\n\t function canAccept(dataTransfer) {\r\n\t var types = dataTransfer.types;\r\n\t return !types || Array.prototype.some.call(types, function(type) {\r\n\t return type == 'text/plain' || type == 'Text';\r\n\t });\r\n\t }\r\n\r\n\t function getDropEffect(e) {\r\n\t var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\r\n\t var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\r\n\r\n\t var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\r\n\t var effectAllowed = \"uninitialized\";\r\n\t try {\r\n\t effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\r\n\t } catch (e) {}\r\n\t var dropEffect = \"none\";\r\n\r\n\t if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\r\n\t dropEffect = \"copy\";\r\n\t else if (moveAllowed.indexOf(effectAllowed) >= 0)\r\n\t dropEffect = \"move\";\r\n\t else if (copyAllowed.indexOf(effectAllowed) >= 0)\r\n\t dropEffect = \"copy\";\r\n\r\n\t return dropEffect;\r\n\t }\r\n\t}\r\n\r\n\t(function() {\r\n\r\n\t this.dragWait = function() {\r\n\t var interval = Date.now() - this.mousedownEvent.time;\r\n\t if (interval > this.editor.getDragDelay())\r\n\t this.startDrag();\r\n\t };\r\n\r\n\t this.dragWaitEnd = function() {\r\n\t var target = this.editor.container;\r\n\t target.draggable = false;\r\n\t this.startSelect(this.mousedownEvent.getDocumentPosition());\r\n\t this.selectEnd();\r\n\t };\r\n\r\n\t this.dragReadyEnd = function(e) {\r\n\t this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly());\r\n\t this.editor.unsetStyle(\"ace_dragging\");\r\n\t this.editor.renderer.setCursorStyle(\"\");\r\n\t this.dragWaitEnd();\r\n\t };\r\n\r\n\t this.startDrag = function(){\r\n\t this.cancelDrag = false;\r\n\t var editor = this.editor;\r\n\t var target = editor.container;\r\n\t target.draggable = true;\r\n\t editor.renderer.$cursorLayer.setBlinking(false);\r\n\t editor.setStyle(\"ace_dragging\");\r\n\t var cursorStyle = useragent.isWin ? \"default\" : \"move\";\r\n\t editor.renderer.setCursorStyle(cursorStyle);\r\n\t this.setState(\"dragReady\");\r\n\t };\r\n\r\n\t this.onMouseDrag = function(e) {\r\n\t var target = this.editor.container;\r\n\t if (useragent.isIE && this.state == \"dragReady\") {\r\n\t var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\r\n\t if (distance > 3)\r\n\t target.dragDrop();\r\n\t }\r\n\t if (this.state === \"dragWait\") {\r\n\t var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\r\n\t if (distance > 0) {\r\n\t target.draggable = false;\r\n\t this.startSelect(this.mousedownEvent.getDocumentPosition());\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t this.onMouseDown = function(e) {\r\n\t if (!this.$dragEnabled)\r\n\t return;\r\n\t this.mousedownEvent = e;\r\n\t var editor = this.editor;\r\n\r\n\t var inSelection = e.inSelection();\r\n\t var button = e.getButton();\r\n\t var clickCount = e.domEvent.detail || 1;\r\n\t if (clickCount === 1 && button === 0 && inSelection) {\r\n\t if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\r\n\t return;\r\n\t this.mousedownEvent.time = Date.now();\r\n\t var eventTarget = e.domEvent.target || e.domEvent.srcElement;\r\n\t if (\"unselectable\" in eventTarget)\r\n\t eventTarget.unselectable = \"on\";\r\n\t if (editor.getDragDelay()) {\r\n\t if (useragent.isWebKit) {\r\n\t this.cancelDrag = true;\r\n\t var mouseTarget = editor.container;\r\n\t mouseTarget.draggable = true;\r\n\t }\r\n\t this.setState(\"dragWait\");\r\n\t } else {\r\n\t this.startDrag();\r\n\t }\r\n\t this.captureMouse(e, this.onMouseDrag.bind(this));\r\n\t e.defaultPrevented = true;\r\n\t }\r\n\t };\r\n\r\n\t}).call(DragdropHandler.prototype);\r\n\r\n\r\n\tfunction calcDistance(ax, ay, bx, by) {\r\n\t return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\r\n\t}\r\n\r\n\texports.DragdropHandler = DragdropHandler;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\tvar dom = acequire(\"./dom\");\r\n\r\n\texports.get = function (url, callback) {\r\n\t var xhr = new XMLHttpRequest();\r\n\t xhr.open('GET', url, true);\r\n\t xhr.onreadystatechange = function () {\r\n\t if (xhr.readyState === 4) {\r\n\t callback(xhr.responseText);\r\n\t }\r\n\t };\r\n\t xhr.send(null);\r\n\t};\r\n\r\n\texports.loadScript = function(path, callback) {\r\n\t var head = dom.getDocumentHead();\r\n\t var s = document.createElement('script');\r\n\r\n\t s.src = path;\r\n\t head.appendChild(s);\r\n\r\n\t s.onload = s.onreadystatechange = function(_, isAbort) {\r\n\t if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\r\n\t s = s.onload = s.onreadystatechange = null;\r\n\t if (!isAbort)\r\n\t callback();\r\n\t }\r\n\t };\r\n\t};\r\n\texports.qualifyURL = function(url) {\r\n\t var a = document.createElement('a');\r\n\t a.href = url;\r\n\t return a.href;\r\n\t}\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar EventEmitter = {};\r\n\tvar stopPropagation = function() { this.propagationStopped = true; };\r\n\tvar preventDefault = function() { this.defaultPrevented = true; };\r\n\r\n\tEventEmitter._emit =\r\n\tEventEmitter._dispatchEvent = function(eventName, e) {\r\n\t this._eventRegistry || (this._eventRegistry = {});\r\n\t this._defaultHandlers || (this._defaultHandlers = {});\r\n\r\n\t var listeners = this._eventRegistry[eventName] || [];\r\n\t var defaultHandler = this._defaultHandlers[eventName];\r\n\t if (!listeners.length && !defaultHandler)\r\n\t return;\r\n\r\n\t if (typeof e != \"object\" || !e)\r\n\t e = {};\r\n\r\n\t if (!e.type)\r\n\t e.type = eventName;\r\n\t if (!e.stopPropagation)\r\n\t e.stopPropagation = stopPropagation;\r\n\t if (!e.preventDefault)\r\n\t e.preventDefault = preventDefault;\r\n\r\n\t listeners = listeners.slice();\r\n\t for (var i=0; i 1)\r\n\t base = parts[parts.length - 2];\r\n\t var path = options[component + \"Path\"];\r\n\t if (path == null) {\r\n\t path = options.basePath;\r\n\t } else if (sep == \"/\") {\r\n\t component = sep = \"\";\r\n\t }\r\n\t if (path && path.slice(-1) != \"/\")\r\n\t path += \"/\";\r\n\t return path + component + sep + base + this.get(\"suffix\");\r\n\t};\r\n\r\n\texports.setModuleUrl = function(name, subst) {\r\n\t return options.$moduleUrls[name] = subst;\r\n\t};\r\n\r\n\texports.$loading = {};\r\n\texports.loadModule = function(moduleName, onLoad) {\r\n\t var module, moduleType;\r\n\t if (Array.isArray(moduleName)) {\r\n\t moduleType = moduleName[0];\r\n\t moduleName = moduleName[1];\r\n\t }\r\n\r\n\t try {\r\n\t module = acequire(moduleName);\r\n\t } catch (e) {}\r\n\t if (module && !exports.$loading[moduleName])\r\n\t return onLoad && onLoad(module);\r\n\r\n\t if (!exports.$loading[moduleName])\r\n\t exports.$loading[moduleName] = [];\r\n\r\n\t exports.$loading[moduleName].push(onLoad);\r\n\r\n\t if (exports.$loading[moduleName].length > 1)\r\n\t return;\r\n\r\n\t var afterLoad = function() {\r\n\t acequire([moduleName], function(module) {\r\n\t exports._emit(\"load.module\", {name: moduleName, module: module});\r\n\t var listeners = exports.$loading[moduleName];\r\n\t exports.$loading[moduleName] = null;\r\n\t listeners.forEach(function(onLoad) {\r\n\t onLoad && onLoad(module);\r\n\t });\r\n\t });\r\n\t };\r\n\r\n\t if (!exports.get(\"packaged\"))\r\n\t return afterLoad();\r\n\t net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\r\n\t};\r\n\tinit(true);function init(packaged) {\r\n\r\n\t if (!global || !global.document)\r\n\t return;\r\n\t \r\n\t options.packaged = packaged || acequire.packaged || module.packaged || (global.define && __webpack_require__(65).packaged);\r\n\r\n\t var scriptOptions = {};\r\n\t var scriptUrl = \"\";\r\n\t var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\r\n\t var currentDocument = currentScript && currentScript.ownerDocument || document;\r\n\t \r\n\t var scripts = currentDocument.getElementsByTagName(\"script\");\r\n\t for (var i=0; i [\" + this.end.row + \"/\" + this.end.column + \"]\");\r\n\t };\r\n\r\n\t this.contains = function(row, column) {\r\n\t return this.compare(row, column) == 0;\r\n\t };\r\n\t this.compareRange = function(range) {\r\n\t var cmp,\r\n\t end = range.end,\r\n\t start = range.start;\r\n\r\n\t cmp = this.compare(end.row, end.column);\r\n\t if (cmp == 1) {\r\n\t cmp = this.compare(start.row, start.column);\r\n\t if (cmp == 1) {\r\n\t return 2;\r\n\t } else if (cmp == 0) {\r\n\t return 1;\r\n\t } else {\r\n\t return 0;\r\n\t }\r\n\t } else if (cmp == -1) {\r\n\t return -2;\r\n\t } else {\r\n\t cmp = this.compare(start.row, start.column);\r\n\t if (cmp == -1) {\r\n\t return -1;\r\n\t } else if (cmp == 1) {\r\n\t return 42;\r\n\t } else {\r\n\t return 0;\r\n\t }\r\n\t }\r\n\t };\r\n\t this.comparePoint = function(p) {\r\n\t return this.compare(p.row, p.column);\r\n\t };\r\n\t this.containsRange = function(range) {\r\n\t return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\r\n\t };\r\n\t this.intersects = function(range) {\r\n\t var cmp = this.compareRange(range);\r\n\t return (cmp == -1 || cmp == 0 || cmp == 1);\r\n\t };\r\n\t this.isEnd = function(row, column) {\r\n\t return this.end.row == row && this.end.column == column;\r\n\t };\r\n\t this.isStart = function(row, column) {\r\n\t return this.start.row == row && this.start.column == column;\r\n\t };\r\n\t this.setStart = function(row, column) {\r\n\t if (typeof row == \"object\") {\r\n\t this.start.column = row.column;\r\n\t this.start.row = row.row;\r\n\t } else {\r\n\t this.start.row = row;\r\n\t this.start.column = column;\r\n\t }\r\n\t };\r\n\t this.setEnd = function(row, column) {\r\n\t if (typeof row == \"object\") {\r\n\t this.end.column = row.column;\r\n\t this.end.row = row.row;\r\n\t } else {\r\n\t this.end.row = row;\r\n\t this.end.column = column;\r\n\t }\r\n\t };\r\n\t this.inside = function(row, column) {\r\n\t if (this.compare(row, column) == 0) {\r\n\t if (this.isEnd(row, column) || this.isStart(row, column)) {\r\n\t return false;\r\n\t } else {\r\n\t return true;\r\n\t }\r\n\t }\r\n\t return false;\r\n\t };\r\n\t this.insideStart = function(row, column) {\r\n\t if (this.compare(row, column) == 0) {\r\n\t if (this.isEnd(row, column)) {\r\n\t return false;\r\n\t } else {\r\n\t return true;\r\n\t }\r\n\t }\r\n\t return false;\r\n\t };\r\n\t this.insideEnd = function(row, column) {\r\n\t if (this.compare(row, column) == 0) {\r\n\t if (this.isStart(row, column)) {\r\n\t return false;\r\n\t } else {\r\n\t return true;\r\n\t }\r\n\t }\r\n\t return false;\r\n\t };\r\n\t this.compare = function(row, column) {\r\n\t if (!this.isMultiLine()) {\r\n\t if (row === this.start.row) {\r\n\t return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\r\n\t }\r\n\t }\r\n\r\n\t if (row < this.start.row)\r\n\t return -1;\r\n\r\n\t if (row > this.end.row)\r\n\t return 1;\r\n\r\n\t if (this.start.row === row)\r\n\t return column >= this.start.column ? 0 : -1;\r\n\r\n\t if (this.end.row === row)\r\n\t return column <= this.end.column ? 0 : 1;\r\n\r\n\t return 0;\r\n\t };\r\n\t this.compareStart = function(row, column) {\r\n\t if (this.start.row == row && this.start.column == column) {\r\n\t return -1;\r\n\t } else {\r\n\t return this.compare(row, column);\r\n\t }\r\n\t };\r\n\t this.compareEnd = function(row, column) {\r\n\t if (this.end.row == row && this.end.column == column) {\r\n\t return 1;\r\n\t } else {\r\n\t return this.compare(row, column);\r\n\t }\r\n\t };\r\n\t this.compareInside = function(row, column) {\r\n\t if (this.end.row == row && this.end.column == column) {\r\n\t return 1;\r\n\t } else if (this.start.row == row && this.start.column == column) {\r\n\t return -1;\r\n\t } else {\r\n\t return this.compare(row, column);\r\n\t }\r\n\t };\r\n\t this.clipRows = function(firstRow, lastRow) {\r\n\t if (this.end.row > lastRow)\r\n\t var end = {row: lastRow + 1, column: 0};\r\n\t else if (this.end.row < firstRow)\r\n\t var end = {row: firstRow, column: 0};\r\n\r\n\t if (this.start.row > lastRow)\r\n\t var start = {row: lastRow + 1, column: 0};\r\n\t else if (this.start.row < firstRow)\r\n\t var start = {row: firstRow, column: 0};\r\n\r\n\t return Range.fromPoints(start || this.start, end || this.end);\r\n\t };\r\n\t this.extend = function(row, column) {\r\n\t var cmp = this.compare(row, column);\r\n\r\n\t if (cmp == 0)\r\n\t return this;\r\n\t else if (cmp == -1)\r\n\t var start = {row: row, column: column};\r\n\t else\r\n\t var end = {row: row, column: column};\r\n\r\n\t return Range.fromPoints(start || this.start, end || this.end);\r\n\t };\r\n\r\n\t this.isEmpty = function() {\r\n\t return (this.start.row === this.end.row && this.start.column === this.end.column);\r\n\t };\r\n\t this.isMultiLine = function() {\r\n\t return (this.start.row !== this.end.row);\r\n\t };\r\n\t this.clone = function() {\r\n\t return Range.fromPoints(this.start, this.end);\r\n\t };\r\n\t this.collapseRows = function() {\r\n\t if (this.end.column == 0)\r\n\t return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)\r\n\t else\r\n\t return new Range(this.start.row, 0, this.end.row, 0)\r\n\t };\r\n\t this.toScreenRange = function(session) {\r\n\t var screenPosStart = session.documentToScreenPosition(this.start);\r\n\t var screenPosEnd = session.documentToScreenPosition(this.end);\r\n\r\n\t return new Range(\r\n\t screenPosStart.row, screenPosStart.column,\r\n\t screenPosEnd.row, screenPosEnd.column\r\n\t );\r\n\t };\r\n\t this.moveBy = function(row, column) {\r\n\t this.start.row += row;\r\n\t this.start.column += column;\r\n\t this.end.row += row;\r\n\t this.end.column += column;\r\n\t };\r\n\r\n\t}).call(Range.prototype);\r\n\tRange.fromPoints = function(start, end) {\r\n\t return new Range(start.row, start.column, end.row, end.column);\r\n\t};\r\n\tRange.comparePoints = comparePoints;\r\n\r\n\tRange.comparePoints = function(p1, p2) {\r\n\t return p1.row - p2.row || p1.column - p2.column;\r\n\t};\r\n\r\n\r\n\texports.Range = Range;\r\n\t});\r\n\r\n\tace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar lang = acequire(\"./lib/lang\");\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\tvar Range = acequire(\"./range\").Range;\r\n\tvar Selection = function(session) {\r\n\t this.session = session;\r\n\t this.doc = session.getDocument();\r\n\r\n\t this.clearSelection();\r\n\t this.lead = this.selectionLead = this.doc.createAnchor(0, 0);\r\n\t this.anchor = this.selectionAnchor = this.doc.createAnchor(0, 0);\r\n\r\n\t var self = this;\r\n\t this.lead.on(\"change\", function(e) {\r\n\t self._emit(\"changeCursor\");\r\n\t if (!self.$isEmpty)\r\n\t self._emit(\"changeSelection\");\r\n\t if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\r\n\t self.$desiredColumn = null;\r\n\t });\r\n\r\n\t this.selectionAnchor.on(\"change\", function() {\r\n\t if (!self.$isEmpty)\r\n\t self._emit(\"changeSelection\");\r\n\t });\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\t this.isEmpty = function() {\r\n\t return (this.$isEmpty || (\r\n\t this.anchor.row == this.lead.row &&\r\n\t this.anchor.column == this.lead.column\r\n\t ));\r\n\t };\r\n\t this.isMultiLine = function() {\r\n\t if (this.isEmpty()) {\r\n\t return false;\r\n\t }\r\n\r\n\t return this.getRange().isMultiLine();\r\n\t };\r\n\t this.getCursor = function() {\r\n\t return this.lead.getPosition();\r\n\t };\r\n\t this.setSelectionAnchor = function(row, column) {\r\n\t this.anchor.setPosition(row, column);\r\n\r\n\t if (this.$isEmpty) {\r\n\t this.$isEmpty = false;\r\n\t this._emit(\"changeSelection\");\r\n\t }\r\n\t };\r\n\t this.getSelectionAnchor = function() {\r\n\t if (this.$isEmpty)\r\n\t return this.getSelectionLead();\r\n\t else\r\n\t return this.anchor.getPosition();\r\n\t };\r\n\t this.getSelectionLead = function() {\r\n\t return this.lead.getPosition();\r\n\t };\r\n\t this.shiftSelection = function(columns) {\r\n\t if (this.$isEmpty) {\r\n\t this.moveCursorTo(this.lead.row, this.lead.column + columns);\r\n\t return;\r\n\t }\r\n\r\n\t var anchor = this.getSelectionAnchor();\r\n\t var lead = this.getSelectionLead();\r\n\r\n\t var isBackwards = this.isBackwards();\r\n\r\n\t if (!isBackwards || anchor.column !== 0)\r\n\t this.setSelectionAnchor(anchor.row, anchor.column + columns);\r\n\r\n\t if (isBackwards || lead.column !== 0) {\r\n\t this.$moveSelection(function() {\r\n\t this.moveCursorTo(lead.row, lead.column + columns);\r\n\t });\r\n\t }\r\n\t };\r\n\t this.isBackwards = function() {\r\n\t var anchor = this.anchor;\r\n\t var lead = this.lead;\r\n\t return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\r\n\t };\r\n\t this.getRange = function() {\r\n\t var anchor = this.anchor;\r\n\t var lead = this.lead;\r\n\r\n\t if (this.isEmpty())\r\n\t return Range.fromPoints(lead, lead);\r\n\r\n\t if (this.isBackwards()) {\r\n\t return Range.fromPoints(lead, anchor);\r\n\t }\r\n\t else {\r\n\t return Range.fromPoints(anchor, lead);\r\n\t }\r\n\t };\r\n\t this.clearSelection = function() {\r\n\t if (!this.$isEmpty) {\r\n\t this.$isEmpty = true;\r\n\t this._emit(\"changeSelection\");\r\n\t }\r\n\t };\r\n\t this.selectAll = function() {\r\n\t var lastRow = this.doc.getLength() - 1;\r\n\t this.setSelectionAnchor(0, 0);\r\n\t this.moveCursorTo(lastRow, this.doc.getLine(lastRow).length);\r\n\t };\r\n\t this.setRange =\r\n\t this.setSelectionRange = function(range, reverse) {\r\n\t if (reverse) {\r\n\t this.setSelectionAnchor(range.end.row, range.end.column);\r\n\t this.selectTo(range.start.row, range.start.column);\r\n\t } else {\r\n\t this.setSelectionAnchor(range.start.row, range.start.column);\r\n\t this.selectTo(range.end.row, range.end.column);\r\n\t }\r\n\t if (this.getRange().isEmpty())\r\n\t this.$isEmpty = true;\r\n\t this.$desiredColumn = null;\r\n\t };\r\n\r\n\t this.$moveSelection = function(mover) {\r\n\t var lead = this.lead;\r\n\t if (this.$isEmpty)\r\n\t this.setSelectionAnchor(lead.row, lead.column);\r\n\r\n\t mover.call(this);\r\n\t };\r\n\t this.selectTo = function(row, column) {\r\n\t this.$moveSelection(function() {\r\n\t this.moveCursorTo(row, column);\r\n\t });\r\n\t };\r\n\t this.selectToPosition = function(pos) {\r\n\t this.$moveSelection(function() {\r\n\t this.moveCursorToPosition(pos);\r\n\t });\r\n\t };\r\n\t this.moveTo = function(row, column) {\r\n\t this.clearSelection();\r\n\t this.moveCursorTo(row, column);\r\n\t };\r\n\t this.moveToPosition = function(pos) {\r\n\t this.clearSelection();\r\n\t this.moveCursorToPosition(pos);\r\n\t };\r\n\t this.selectUp = function() {\r\n\t this.$moveSelection(this.moveCursorUp);\r\n\t };\r\n\t this.selectDown = function() {\r\n\t this.$moveSelection(this.moveCursorDown);\r\n\t };\r\n\t this.selectRight = function() {\r\n\t this.$moveSelection(this.moveCursorRight);\r\n\t };\r\n\t this.selectLeft = function() {\r\n\t this.$moveSelection(this.moveCursorLeft);\r\n\t };\r\n\t this.selectLineStart = function() {\r\n\t this.$moveSelection(this.moveCursorLineStart);\r\n\t };\r\n\t this.selectLineEnd = function() {\r\n\t this.$moveSelection(this.moveCursorLineEnd);\r\n\t };\r\n\t this.selectFileEnd = function() {\r\n\t this.$moveSelection(this.moveCursorFileEnd);\r\n\t };\r\n\t this.selectFileStart = function() {\r\n\t this.$moveSelection(this.moveCursorFileStart);\r\n\t };\r\n\t this.selectWordRight = function() {\r\n\t this.$moveSelection(this.moveCursorWordRight);\r\n\t };\r\n\t this.selectWordLeft = function() {\r\n\t this.$moveSelection(this.moveCursorWordLeft);\r\n\t };\r\n\t this.getWordRange = function(row, column) {\r\n\t if (typeof column == \"undefined\") {\r\n\t var cursor = row || this.lead;\r\n\t row = cursor.row;\r\n\t column = cursor.column;\r\n\t }\r\n\t return this.session.getWordRange(row, column);\r\n\t };\r\n\t this.selectWord = function() {\r\n\t this.setSelectionRange(this.getWordRange());\r\n\t };\r\n\t this.selectAWord = function() {\r\n\t var cursor = this.getCursor();\r\n\t var range = this.session.getAWordRange(cursor.row, cursor.column);\r\n\t this.setSelectionRange(range);\r\n\t };\r\n\r\n\t this.getLineRange = function(row, excludeLastChar) {\r\n\t var rowStart = typeof row == \"number\" ? row : this.lead.row;\r\n\t var rowEnd;\r\n\r\n\t var foldLine = this.session.getFoldLine(rowStart);\r\n\t if (foldLine) {\r\n\t rowStart = foldLine.start.row;\r\n\t rowEnd = foldLine.end.row;\r\n\t } else {\r\n\t rowEnd = rowStart;\r\n\t }\r\n\t if (excludeLastChar === true)\r\n\t return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\r\n\t else\r\n\t return new Range(rowStart, 0, rowEnd + 1, 0);\r\n\t };\r\n\t this.selectLine = function() {\r\n\t this.setSelectionRange(this.getLineRange());\r\n\t };\r\n\t this.moveCursorUp = function() {\r\n\t this.moveCursorBy(-1, 0);\r\n\t };\r\n\t this.moveCursorDown = function() {\r\n\t this.moveCursorBy(1, 0);\r\n\t };\r\n\t this.moveCursorLeft = function() {\r\n\t var cursor = this.lead.getPosition(),\r\n\t fold;\r\n\r\n\t if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\r\n\t this.moveCursorTo(fold.start.row, fold.start.column);\r\n\t } else if (cursor.column === 0) {\r\n\t if (cursor.row > 0) {\r\n\t this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\r\n\t }\r\n\t }\r\n\t else {\r\n\t var tabSize = this.session.getTabSize();\r\n\t if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column-tabSize, cursor.column).split(\" \").length-1 == tabSize)\r\n\t this.moveCursorBy(0, -tabSize);\r\n\t else\r\n\t this.moveCursorBy(0, -1);\r\n\t }\r\n\t };\r\n\t this.moveCursorRight = function() {\r\n\t var cursor = this.lead.getPosition(),\r\n\t fold;\r\n\t if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\r\n\t this.moveCursorTo(fold.end.row, fold.end.column);\r\n\t }\r\n\t else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\r\n\t if (this.lead.row < this.doc.getLength() - 1) {\r\n\t this.moveCursorTo(this.lead.row + 1, 0);\r\n\t }\r\n\t }\r\n\t else {\r\n\t var tabSize = this.session.getTabSize();\r\n\t var cursor = this.lead;\r\n\t if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column, cursor.column+tabSize).split(\" \").length-1 == tabSize)\r\n\t this.moveCursorBy(0, tabSize);\r\n\t else\r\n\t this.moveCursorBy(0, 1);\r\n\t }\r\n\t };\r\n\t this.moveCursorLineStart = function() {\r\n\t var row = this.lead.row;\r\n\t var column = this.lead.column;\r\n\t var screenRow = this.session.documentToScreenRow(row, column);\r\n\t var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\r\n\t var beforeCursor = this.session.getDisplayLine(\r\n\t row, null, firstColumnPosition.row,\r\n\t firstColumnPosition.column\r\n\t );\r\n\r\n\t var leadingSpace = beforeCursor.match(/^\\s*/);\r\n\t if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\r\n\t firstColumnPosition.column += leadingSpace[0].length;\r\n\t this.moveCursorToPosition(firstColumnPosition);\r\n\t };\r\n\t this.moveCursorLineEnd = function() {\r\n\t var lead = this.lead;\r\n\t var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\r\n\t if (this.lead.column == lineEnd.column) {\r\n\t var line = this.session.getLine(lineEnd.row);\r\n\t if (lineEnd.column == line.length) {\r\n\t var textEnd = line.search(/\\s+$/);\r\n\t if (textEnd > 0)\r\n\t lineEnd.column = textEnd;\r\n\t }\r\n\t }\r\n\r\n\t this.moveCursorTo(lineEnd.row, lineEnd.column);\r\n\t };\r\n\t this.moveCursorFileEnd = function() {\r\n\t var row = this.doc.getLength() - 1;\r\n\t var column = this.doc.getLine(row).length;\r\n\t this.moveCursorTo(row, column);\r\n\t };\r\n\t this.moveCursorFileStart = function() {\r\n\t this.moveCursorTo(0, 0);\r\n\t };\r\n\t this.moveCursorLongWordRight = function() {\r\n\t var row = this.lead.row;\r\n\t var column = this.lead.column;\r\n\t var line = this.doc.getLine(row);\r\n\t var rightOfCursor = line.substring(column);\r\n\r\n\t var match;\r\n\t this.session.nonTokenRe.lastIndex = 0;\r\n\t this.session.tokenRe.lastIndex = 0;\r\n\t var fold = this.session.getFoldAt(row, column, 1);\r\n\t if (fold) {\r\n\t this.moveCursorTo(fold.end.row, fold.end.column);\r\n\t return;\r\n\t }\r\n\t if (match = this.session.nonTokenRe.exec(rightOfCursor)) {\r\n\t column += this.session.nonTokenRe.lastIndex;\r\n\t this.session.nonTokenRe.lastIndex = 0;\r\n\t rightOfCursor = line.substring(column);\r\n\t }\r\n\t if (column >= line.length) {\r\n\t this.moveCursorTo(row, line.length);\r\n\t this.moveCursorRight();\r\n\t if (row < this.doc.getLength() - 1)\r\n\t this.moveCursorWordRight();\r\n\t return;\r\n\t }\r\n\t if (match = this.session.tokenRe.exec(rightOfCursor)) {\r\n\t column += this.session.tokenRe.lastIndex;\r\n\t this.session.tokenRe.lastIndex = 0;\r\n\t }\r\n\r\n\t this.moveCursorTo(row, column);\r\n\t };\r\n\t this.moveCursorLongWordLeft = function() {\r\n\t var row = this.lead.row;\r\n\t var column = this.lead.column;\r\n\t var fold;\r\n\t if (fold = this.session.getFoldAt(row, column, -1)) {\r\n\t this.moveCursorTo(fold.start.row, fold.start.column);\r\n\t return;\r\n\t }\r\n\r\n\t var str = this.session.getFoldStringAt(row, column, -1);\r\n\t if (str == null) {\r\n\t str = this.doc.getLine(row).substring(0, column);\r\n\t }\r\n\r\n\t var leftOfCursor = lang.stringReverse(str);\r\n\t var match;\r\n\t this.session.nonTokenRe.lastIndex = 0;\r\n\t this.session.tokenRe.lastIndex = 0;\r\n\t if (match = this.session.nonTokenRe.exec(leftOfCursor)) {\r\n\t column -= this.session.nonTokenRe.lastIndex;\r\n\t leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\r\n\t this.session.nonTokenRe.lastIndex = 0;\r\n\t }\r\n\t if (column <= 0) {\r\n\t this.moveCursorTo(row, 0);\r\n\t this.moveCursorLeft();\r\n\t if (row > 0)\r\n\t this.moveCursorWordLeft();\r\n\t return;\r\n\t }\r\n\t if (match = this.session.tokenRe.exec(leftOfCursor)) {\r\n\t column -= this.session.tokenRe.lastIndex;\r\n\t this.session.tokenRe.lastIndex = 0;\r\n\t }\r\n\r\n\t this.moveCursorTo(row, column);\r\n\t };\r\n\r\n\t this.$shortWordEndIndex = function(rightOfCursor) {\r\n\t var match, index = 0, ch;\r\n\t var whitespaceRe = /\\s/;\r\n\t var tokenRe = this.session.tokenRe;\r\n\r\n\t tokenRe.lastIndex = 0;\r\n\t if (match = this.session.tokenRe.exec(rightOfCursor)) {\r\n\t index = this.session.tokenRe.lastIndex;\r\n\t } else {\r\n\t while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\r\n\t index ++;\r\n\r\n\t if (index < 1) {\r\n\t tokenRe.lastIndex = 0;\r\n\t while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\r\n\t tokenRe.lastIndex = 0;\r\n\t index ++;\r\n\t if (whitespaceRe.test(ch)) {\r\n\t if (index > 2) {\r\n\t index--;\r\n\t break;\r\n\t } else {\r\n\t while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\r\n\t index ++;\r\n\t if (index > 2)\r\n\t break;\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t tokenRe.lastIndex = 0;\r\n\r\n\t return index;\r\n\t };\r\n\r\n\t this.moveCursorShortWordRight = function() {\r\n\t var row = this.lead.row;\r\n\t var column = this.lead.column;\r\n\t var line = this.doc.getLine(row);\r\n\t var rightOfCursor = line.substring(column);\r\n\r\n\t var fold = this.session.getFoldAt(row, column, 1);\r\n\t if (fold)\r\n\t return this.moveCursorTo(fold.end.row, fold.end.column);\r\n\r\n\t if (column == line.length) {\r\n\t var l = this.doc.getLength();\r\n\t do {\r\n\t row++;\r\n\t rightOfCursor = this.doc.getLine(row);\r\n\t } while (row < l && /^\\s*$/.test(rightOfCursor));\r\n\r\n\t if (!/^\\s+/.test(rightOfCursor))\r\n\t rightOfCursor = \"\";\r\n\t column = 0;\r\n\t }\r\n\r\n\t var index = this.$shortWordEndIndex(rightOfCursor);\r\n\r\n\t this.moveCursorTo(row, column + index);\r\n\t };\r\n\r\n\t this.moveCursorShortWordLeft = function() {\r\n\t var row = this.lead.row;\r\n\t var column = this.lead.column;\r\n\r\n\t var fold;\r\n\t if (fold = this.session.getFoldAt(row, column, -1))\r\n\t return this.moveCursorTo(fold.start.row, fold.start.column);\r\n\r\n\t var line = this.session.getLine(row).substring(0, column);\r\n\t if (column === 0) {\r\n\t do {\r\n\t row--;\r\n\t line = this.doc.getLine(row);\r\n\t } while (row > 0 && /^\\s*$/.test(line));\r\n\r\n\t column = line.length;\r\n\t if (!/\\s+$/.test(line))\r\n\t line = \"\";\r\n\t }\r\n\r\n\t var leftOfCursor = lang.stringReverse(line);\r\n\t var index = this.$shortWordEndIndex(leftOfCursor);\r\n\r\n\t return this.moveCursorTo(row, column - index);\r\n\t };\r\n\r\n\t this.moveCursorWordRight = function() {\r\n\t if (this.session.$selectLongWords)\r\n\t this.moveCursorLongWordRight();\r\n\t else\r\n\t this.moveCursorShortWordRight();\r\n\t };\r\n\r\n\t this.moveCursorWordLeft = function() {\r\n\t if (this.session.$selectLongWords)\r\n\t this.moveCursorLongWordLeft();\r\n\t else\r\n\t this.moveCursorShortWordLeft();\r\n\t };\r\n\t this.moveCursorBy = function(rows, chars) {\r\n\t var screenPos = this.session.documentToScreenPosition(\r\n\t this.lead.row,\r\n\t this.lead.column\r\n\t );\r\n\r\n\t if (chars === 0) {\r\n\t if (this.$desiredColumn)\r\n\t screenPos.column = this.$desiredColumn;\r\n\t else\r\n\t this.$desiredColumn = screenPos.column;\r\n\t }\r\n\r\n\t var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column);\r\n\t \r\n\t if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\r\n\t if (this.session.lineWidgets && this.session.lineWidgets[docPos.row]) {\r\n\t if (docPos.row > 0 || rows > 0)\r\n\t docPos.row++;\r\n\t }\r\n\t }\r\n\t this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\r\n\t };\r\n\t this.moveCursorToPosition = function(position) {\r\n\t this.moveCursorTo(position.row, position.column);\r\n\t };\r\n\t this.moveCursorTo = function(row, column, keepDesiredColumn) {\r\n\t var fold = this.session.getFoldAt(row, column, 1);\r\n\t if (fold) {\r\n\t row = fold.start.row;\r\n\t column = fold.start.column;\r\n\t }\r\n\r\n\t this.$keepDesiredColumnOnChange = true;\r\n\t this.lead.setPosition(row, column);\r\n\t this.$keepDesiredColumnOnChange = false;\r\n\r\n\t if (!keepDesiredColumn)\r\n\t this.$desiredColumn = null;\r\n\t };\r\n\t this.moveCursorToScreen = function(row, column, keepDesiredColumn) {\r\n\t var pos = this.session.screenToDocumentPosition(row, column);\r\n\t this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\r\n\t };\r\n\t this.detach = function() {\r\n\t this.lead.detach();\r\n\t this.anchor.detach();\r\n\t this.session = this.doc = null;\r\n\t };\r\n\r\n\t this.fromOrientedRange = function(range) {\r\n\t this.setSelectionRange(range, range.cursor == range.start);\r\n\t this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\r\n\t };\r\n\r\n\t this.toOrientedRange = function(range) {\r\n\t var r = this.getRange();\r\n\t if (range) {\r\n\t range.start.column = r.start.column;\r\n\t range.start.row = r.start.row;\r\n\t range.end.column = r.end.column;\r\n\t range.end.row = r.end.row;\r\n\t } else {\r\n\t range = r;\r\n\t }\r\n\r\n\t range.cursor = this.isBackwards() ? range.start : range.end;\r\n\t range.desiredColumn = this.$desiredColumn;\r\n\t return range;\r\n\t };\r\n\t this.getRangeOfMovements = function(func) {\r\n\t var start = this.getCursor();\r\n\t try {\r\n\t func(this);\r\n\t var end = this.getCursor();\r\n\t return Range.fromPoints(start,end);\r\n\t } catch(e) {\r\n\t return Range.fromPoints(start,start);\r\n\t } finally {\r\n\t this.moveCursorToPosition(start);\r\n\t }\r\n\t };\r\n\r\n\t this.toJSON = function() {\r\n\t if (this.rangeCount) {\r\n\t var data = this.ranges.map(function(r) {\r\n\t var r1 = r.clone();\r\n\t r1.isBackwards = r.cursor == r.start;\r\n\t return r1;\r\n\t });\r\n\t } else {\r\n\t var data = this.getRange();\r\n\t data.isBackwards = this.isBackwards();\r\n\t }\r\n\t return data;\r\n\t };\r\n\r\n\t this.fromJSON = function(data) {\r\n\t if (data.start == undefined) {\r\n\t if (this.rangeList) {\r\n\t this.toSingleRange(data[0]);\r\n\t for (var i = data.length; i--; ) {\r\n\t var r = Range.fromPoints(data[i].start, data[i].end);\r\n\t if (data[i].isBackwards)\r\n\t r.cursor = r.start;\r\n\t this.addRange(r, true);\r\n\t }\r\n\t return;\r\n\t } else\r\n\t data = data[0];\r\n\t }\r\n\t if (this.rangeList)\r\n\t this.toSingleRange(data);\r\n\t this.setSelectionRange(data, data.isBackwards);\r\n\t };\r\n\r\n\t this.isEqual = function(data) {\r\n\t if ((data.length || this.rangeCount) && data.length != this.rangeCount)\r\n\t return false;\r\n\t if (!data.length || !this.ranges)\r\n\t return this.getRange().isEqual(data);\r\n\r\n\t for (var i = this.ranges.length; i--; ) {\r\n\t if (!this.ranges[i].isEqual(data[i]))\r\n\t return false;\r\n\t }\r\n\t return true;\r\n\t };\r\n\r\n\t}).call(Selection.prototype);\r\n\r\n\texports.Selection = Selection;\r\n\t});\r\n\r\n\tace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/config\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar config = acequire(\"./config\");\r\n\tvar MAX_TOKEN_COUNT = 2000;\r\n\tvar Tokenizer = function(rules) {\r\n\t this.states = rules;\r\n\r\n\t this.regExps = {};\r\n\t this.matchMappings = {};\r\n\t for (var key in this.states) {\r\n\t var state = this.states[key];\r\n\t var ruleRegExps = [];\r\n\t var matchTotal = 0;\r\n\t var mapping = this.matchMappings[key] = {defaultToken: \"text\"};\r\n\t var flag = \"g\";\r\n\r\n\t var splitterRurles = [];\r\n\t for (var i = 0; i < state.length; i++) {\r\n\t var rule = state[i];\r\n\t if (rule.defaultToken)\r\n\t mapping.defaultToken = rule.defaultToken;\r\n\t if (rule.caseInsensitive)\r\n\t flag = \"gi\";\r\n\t if (rule.regex == null)\r\n\t continue;\r\n\r\n\t if (rule.regex instanceof RegExp)\r\n\t rule.regex = rule.regex.toString().slice(1, -1);\r\n\t var adjustedregex = rule.regex;\r\n\t var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\r\n\t if (Array.isArray(rule.token)) {\r\n\t if (rule.token.length == 1 || matchcount == 1) {\r\n\t rule.token = rule.token[0];\r\n\t } else if (matchcount - 1 != rule.token.length) {\r\n\t this.reportError(\"number of classes and regexp groups doesn't match\", { \r\n\t rule: rule,\r\n\t groupCount: matchcount - 1\r\n\t });\r\n\t rule.token = rule.token[0];\r\n\t } else {\r\n\t rule.tokenArray = rule.token;\r\n\t rule.token = null;\r\n\t rule.onMatch = this.$arrayTokens;\r\n\t }\r\n\t } else if (typeof rule.token == \"function\" && !rule.onMatch) {\r\n\t if (matchcount > 1)\r\n\t rule.onMatch = this.$applyToken;\r\n\t else\r\n\t rule.onMatch = rule.token;\r\n\t }\r\n\r\n\t if (matchcount > 1) {\r\n\t if (/\\\\\\d/.test(rule.regex)) {\r\n\t adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function(match, digit) {\r\n\t return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\r\n\t });\r\n\t } else {\r\n\t matchcount = 1;\r\n\t adjustedregex = this.removeCapturingGroups(rule.regex);\r\n\t }\r\n\t if (!rule.splitRegex && typeof rule.token != \"string\")\r\n\t splitterRurles.push(rule); // flag will be known only at the very end\r\n\t }\r\n\r\n\t mapping[matchTotal] = i;\r\n\t matchTotal += matchcount;\r\n\r\n\t ruleRegExps.push(adjustedregex);\r\n\t if (!rule.onMatch)\r\n\t rule.onMatch = null;\r\n\t }\r\n\t \r\n\t if (!ruleRegExps.length) {\r\n\t mapping[0] = 0;\r\n\t ruleRegExps.push(\"$\");\r\n\t }\r\n\t \r\n\t splitterRurles.forEach(function(rule) {\r\n\t rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\r\n\t }, this);\r\n\r\n\t this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\r\n\t }\r\n\t};\r\n\r\n\t(function() {\r\n\t this.$setMaxTokenCount = function(m) {\r\n\t MAX_TOKEN_COUNT = m | 0;\r\n\t };\r\n\t \r\n\t this.$applyToken = function(str) {\r\n\t var values = this.splitRegex.exec(str).slice(1);\r\n\t var types = this.token.apply(this, values);\r\n\t if (typeof types === \"string\")\r\n\t return [{type: types, value: str}];\r\n\r\n\t var tokens = [];\r\n\t for (var i = 0, l = types.length; i < l; i++) {\r\n\t if (values[i])\r\n\t tokens[tokens.length] = {\r\n\t type: types[i],\r\n\t value: values[i]\r\n\t };\r\n\t }\r\n\t return tokens;\r\n\t };\r\n\r\n\t this.$arrayTokens = function(str) {\r\n\t if (!str)\r\n\t return [];\r\n\t var values = this.splitRegex.exec(str);\r\n\t if (!values)\r\n\t return \"text\";\r\n\t var tokens = [];\r\n\t var types = this.tokenArray;\r\n\t for (var i = 0, l = types.length; i < l; i++) {\r\n\t if (values[i + 1])\r\n\t tokens[tokens.length] = {\r\n\t type: types[i],\r\n\t value: values[i + 1]\r\n\t };\r\n\t }\r\n\t return tokens;\r\n\t };\r\n\r\n\t this.removeCapturingGroups = function(src) {\r\n\t var r = src.replace(\r\n\t /\\[(?:\\\\.|[^\\]])*?\\]|\\\\.|\\(\\?[:=!]|(\\()/g,\r\n\t function(x, y) {return y ? \"(?:\" : x;}\r\n\t );\r\n\t return r;\r\n\t };\r\n\r\n\t this.createSplitterRegexp = function(src, flag) {\r\n\t if (src.indexOf(\"(?=\") != -1) {\r\n\t var stack = 0;\r\n\t var inChClass = false;\r\n\t var lastCapture = {};\r\n\t src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function(\r\n\t m, esc, parenOpen, parenClose, square, index\r\n\t ) {\r\n\t if (inChClass) {\r\n\t inChClass = square != \"]\";\r\n\t } else if (square) {\r\n\t inChClass = true;\r\n\t } else if (parenClose) {\r\n\t if (stack == lastCapture.stack) {\r\n\t lastCapture.end = index+1;\r\n\t lastCapture.stack = -1;\r\n\t }\r\n\t stack--;\r\n\t } else if (parenOpen) {\r\n\t stack++;\r\n\t if (parenOpen.length != 1) {\r\n\t lastCapture.stack = stack\r\n\t lastCapture.start = index;\r\n\t }\r\n\t }\r\n\t return m;\r\n\t });\r\n\r\n\t if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\r\n\t src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\r\n\t }\r\n\t if (src.charAt(0) != \"^\") src = \"^\" + src;\r\n\t if (src.charAt(src.length - 1) != \"$\") src += \"$\";\r\n\t \r\n\t return new RegExp(src, (flag||\"\").replace(\"g\", \"\"));\r\n\t };\r\n\t this.getLineTokens = function(line, startState) {\r\n\t if (startState && typeof startState != \"string\") {\r\n\t var stack = startState.slice(0);\r\n\t startState = stack[0];\r\n\t if (startState === \"#tmp\") {\r\n\t stack.shift()\r\n\t startState = stack.shift()\r\n\t }\r\n\t } else\r\n\t var stack = [];\r\n\r\n\t var currentState = startState || \"start\";\r\n\t var state = this.states[currentState];\r\n\t if (!state) {\r\n\t currentState = \"start\";\r\n\t state = this.states[currentState];\r\n\t }\r\n\t var mapping = this.matchMappings[currentState];\r\n\t var re = this.regExps[currentState];\r\n\t re.lastIndex = 0;\r\n\r\n\t var match, tokens = [];\r\n\t var lastIndex = 0;\r\n\t var matchAttempts = 0;\r\n\r\n\t var token = {type: null, value: \"\"};\r\n\r\n\t while (match = re.exec(line)) {\r\n\t var type = mapping.defaultToken;\r\n\t var rule = null;\r\n\t var value = match[0];\r\n\t var index = re.lastIndex;\r\n\r\n\t if (index - value.length > lastIndex) {\r\n\t var skipped = line.substring(lastIndex, index - value.length);\r\n\t if (token.type == type) {\r\n\t token.value += skipped;\r\n\t } else {\r\n\t if (token.type)\r\n\t tokens.push(token);\r\n\t token = {type: type, value: skipped};\r\n\t }\r\n\t }\r\n\r\n\t for (var i = 0; i < match.length-2; i++) {\r\n\t if (match[i + 1] === undefined)\r\n\t continue;\r\n\r\n\t rule = state[mapping[i]];\r\n\r\n\t if (rule.onMatch)\r\n\t type = rule.onMatch(value, currentState, stack);\r\n\t else\r\n\t type = rule.token;\r\n\r\n\t if (rule.next) {\r\n\t if (typeof rule.next == \"string\") {\r\n\t currentState = rule.next;\r\n\t } else {\r\n\t currentState = rule.next(currentState, stack);\r\n\t }\r\n\t \r\n\t state = this.states[currentState];\r\n\t if (!state) {\r\n\t this.reportError(\"state doesn't exist\", currentState);\r\n\t currentState = \"start\";\r\n\t state = this.states[currentState];\r\n\t }\r\n\t mapping = this.matchMappings[currentState];\r\n\t lastIndex = index;\r\n\t re = this.regExps[currentState];\r\n\t re.lastIndex = index;\r\n\t }\r\n\t break;\r\n\t }\r\n\r\n\t if (value) {\r\n\t if (typeof type === \"string\") {\r\n\t if ((!rule || rule.merge !== false) && token.type === type) {\r\n\t token.value += value;\r\n\t } else {\r\n\t if (token.type)\r\n\t tokens.push(token);\r\n\t token = {type: type, value: value};\r\n\t }\r\n\t } else if (type) {\r\n\t if (token.type)\r\n\t tokens.push(token);\r\n\t token = {type: null, value: \"\"};\r\n\t for (var i = 0; i < type.length; i++)\r\n\t tokens.push(type[i]);\r\n\t }\r\n\t }\r\n\r\n\t if (lastIndex == line.length)\r\n\t break;\r\n\r\n\t lastIndex = index;\r\n\r\n\t if (matchAttempts++ > MAX_TOKEN_COUNT) {\r\n\t if (matchAttempts > 2 * line.length) {\r\n\t this.reportError(\"infinite loop with in ace tokenizer\", {\r\n\t startState: startState,\r\n\t line: line\r\n\t });\r\n\t }\r\n\t while (lastIndex < line.length) {\r\n\t if (token.type)\r\n\t tokens.push(token);\r\n\t token = {\r\n\t value: line.substring(lastIndex, lastIndex += 2000),\r\n\t type: \"overflow\"\r\n\t };\r\n\t }\r\n\t currentState = \"start\";\r\n\t stack = [];\r\n\t break;\r\n\t }\r\n\t }\r\n\r\n\t if (token.type)\r\n\t tokens.push(token);\r\n\t \r\n\t if (stack.length > 1) {\r\n\t if (stack[0] !== currentState)\r\n\t stack.unshift(\"#tmp\", currentState);\r\n\t }\r\n\t return {\r\n\t tokens : tokens,\r\n\t state : stack.length ? stack : currentState\r\n\t };\r\n\t };\r\n\t \r\n\t this.reportError = config.reportError;\r\n\t \r\n\t}).call(Tokenizer.prototype);\r\n\r\n\texports.Tokenizer = Tokenizer;\r\n\t});\r\n\r\n\tace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar lang = acequire(\"../lib/lang\");\r\n\r\n\tvar TextHighlightRules = function() {\r\n\r\n\t this.$rules = {\r\n\t \"start\" : [{\r\n\t token : \"empty_line\",\r\n\t regex : '^$'\r\n\t }, {\r\n\t defaultToken : \"text\"\r\n\t }]\r\n\t };\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t this.addRules = function(rules, prefix) {\r\n\t if (!prefix) {\r\n\t for (var key in rules)\r\n\t this.$rules[key] = rules[key];\r\n\t return;\r\n\t }\r\n\t for (var key in rules) {\r\n\t var state = rules[key];\r\n\t for (var i = 0; i < state.length; i++) {\r\n\t var rule = state[i];\r\n\t if (rule.next || rule.onMatch) {\r\n\t if (typeof rule.next == \"string\") {\r\n\t if (rule.next.indexOf(prefix) !== 0)\r\n\t rule.next = prefix + rule.next;\r\n\t }\r\n\t if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\r\n\t rule.nextState = prefix + rule.nextState;\r\n\t }\r\n\t }\r\n\t this.$rules[prefix + key] = state;\r\n\t }\r\n\t };\r\n\r\n\t this.getRules = function() {\r\n\t return this.$rules;\r\n\t };\r\n\r\n\t this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\r\n\t var embedRules = typeof HighlightRules == \"function\"\r\n\t ? new HighlightRules().getRules()\r\n\t : HighlightRules;\r\n\t if (states) {\r\n\t for (var i = 0; i < states.length; i++)\r\n\t states[i] = prefix + states[i];\r\n\t } else {\r\n\t states = [];\r\n\t for (var key in embedRules)\r\n\t states.push(prefix + key);\r\n\t }\r\n\r\n\t this.addRules(embedRules, prefix);\r\n\r\n\t if (escapeRules) {\r\n\t var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\r\n\t for (var i = 0; i < states.length; i++)\r\n\t addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));\r\n\t }\r\n\r\n\t if (!this.$embeds)\r\n\t this.$embeds = [];\r\n\t this.$embeds.push(prefix);\r\n\t };\r\n\r\n\t this.getEmbeds = function() {\r\n\t return this.$embeds;\r\n\t };\r\n\r\n\t var pushState = function(currentState, stack) {\r\n\t if (currentState != \"start\" || stack.length)\r\n\t stack.unshift(this.nextState, currentState);\r\n\t return this.nextState;\r\n\t };\r\n\t var popState = function(currentState, stack) {\r\n\t stack.shift();\r\n\t return stack.shift() || \"start\";\r\n\t };\r\n\r\n\t this.normalizeRules = function() {\r\n\t var id = 0;\r\n\t var rules = this.$rules;\r\n\t function processState(key) {\r\n\t var state = rules[key];\r\n\t state.processed = true;\r\n\t for (var i = 0; i < state.length; i++) {\r\n\t var rule = state[i];\r\n\t if (!rule.regex && rule.start) {\r\n\t rule.regex = rule.start;\r\n\t if (!rule.next)\r\n\t rule.next = [];\r\n\t rule.next.push({\r\n\t defaultToken: rule.token\r\n\t }, {\r\n\t token: rule.token + \".end\",\r\n\t regex: rule.end || rule.start,\r\n\t next: \"pop\"\r\n\t });\r\n\t rule.token = rule.token + \".start\";\r\n\t rule.push = true;\r\n\t }\r\n\t var next = rule.next || rule.push;\r\n\t if (next && Array.isArray(next)) {\r\n\t var stateName = rule.stateName;\r\n\t if (!stateName) {\r\n\t stateName = rule.token;\r\n\t if (typeof stateName != \"string\")\r\n\t stateName = stateName[0] || \"\";\r\n\t if (rules[stateName])\r\n\t stateName += id++;\r\n\t }\r\n\t rules[stateName] = next;\r\n\t rule.next = stateName;\r\n\t processState(stateName);\r\n\t } else if (next == \"pop\") {\r\n\t rule.next = popState;\r\n\t }\r\n\r\n\t if (rule.push) {\r\n\t rule.nextState = rule.next || rule.push;\r\n\t rule.next = pushState;\r\n\t delete rule.push;\r\n\t }\r\n\r\n\t if (rule.rules) {\r\n\t for (var r in rule.rules) {\r\n\t if (rules[r]) {\r\n\t if (rules[r].push)\r\n\t rules[r].push.apply(rules[r], rule.rules[r]);\r\n\t } else {\r\n\t rules[r] = rule.rules[r];\r\n\t }\r\n\t }\r\n\t }\r\n\t if (rule.include || typeof rule == \"string\") {\r\n\t var includeName = rule.include || rule;\r\n\t var toInsert = rules[includeName];\r\n\t } else if (Array.isArray(rule))\r\n\t toInsert = rule;\r\n\r\n\t if (toInsert) {\r\n\t var args = [i, 1].concat(toInsert);\r\n\t if (rule.noEscape)\r\n\t args = args.filter(function(x) {return !x.next;});\r\n\t state.splice.apply(state, args);\r\n\t i--;\r\n\t toInsert = null;\r\n\t }\r\n\t \r\n\t if (rule.keywordMap) {\r\n\t rule.token = this.createKeywordMapper(\r\n\t rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive\r\n\t );\r\n\t delete rule.defaultToken;\r\n\t }\r\n\t }\r\n\t }\r\n\t Object.keys(rules).forEach(processState, this);\r\n\t };\r\n\r\n\t this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {\r\n\t var keywords = Object.create(null);\r\n\t Object.keys(map).forEach(function(className) {\r\n\t var a = map[className];\r\n\t if (ignoreCase)\r\n\t a = a.toLowerCase();\r\n\t var list = a.split(splitChar || \"|\");\r\n\t for (var i = list.length; i--; )\r\n\t keywords[list[i]] = className;\r\n\t });\r\n\t if (Object.getPrototypeOf(keywords)) {\r\n\t keywords.__proto__ = null;\r\n\t }\r\n\t this.$keywordList = Object.keys(keywords);\r\n\t map = null;\r\n\t return ignoreCase\r\n\t ? function(value) {return keywords[value.toLowerCase()] || defaultToken }\r\n\t : function(value) {return keywords[value] || defaultToken };\r\n\t };\r\n\r\n\t this.getKeywords = function() {\r\n\t return this.$keywords;\r\n\t };\r\n\r\n\t}).call(TextHighlightRules.prototype);\r\n\r\n\texports.TextHighlightRules = TextHighlightRules;\r\n\t});\r\n\r\n\tace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Behaviour = function() {\r\n\t this.$behaviours = {};\r\n\t};\r\n\r\n\t(function () {\r\n\r\n\t this.add = function (name, action, callback) {\r\n\t switch (undefined) {\r\n\t case this.$behaviours:\r\n\t this.$behaviours = {};\r\n\t case this.$behaviours[name]:\r\n\t this.$behaviours[name] = {};\r\n\t }\r\n\t this.$behaviours[name][action] = callback;\r\n\t }\r\n\t \r\n\t this.addBehaviours = function (behaviours) {\r\n\t for (var key in behaviours) {\r\n\t for (var action in behaviours[key]) {\r\n\t this.add(key, action, behaviours[key][action]);\r\n\t }\r\n\t }\r\n\t }\r\n\t \r\n\t this.remove = function (name) {\r\n\t if (this.$behaviours && this.$behaviours[name]) {\r\n\t delete this.$behaviours[name];\r\n\t }\r\n\t }\r\n\t \r\n\t this.inherit = function (mode, filter) {\r\n\t if (typeof mode === \"function\") {\r\n\t var behaviours = new mode().getBehaviours(filter);\r\n\t } else {\r\n\t var behaviours = mode.getBehaviours(filter);\r\n\t }\r\n\t this.addBehaviours(behaviours);\r\n\t }\r\n\t \r\n\t this.getBehaviours = function (filter) {\r\n\t if (!filter) {\r\n\t return this.$behaviours;\r\n\t } else {\r\n\t var ret = {}\r\n\t for (var i = 0; i < filter.length; i++) {\r\n\t if (this.$behaviours[filter[i]]) {\r\n\t ret[filter[i]] = this.$behaviours[filter[i]];\r\n\t }\r\n\t }\r\n\t return ret;\r\n\t }\r\n\t }\r\n\r\n\t}).call(Behaviour.prototype);\r\n\r\n\texports.Behaviour = Behaviour;\r\n\t});\r\n\r\n\tace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\texports.packages = {};\r\n\r\n\taddUnicodePackage({\r\n\t L: \"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",\r\n\t Ll: \"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A\",\r\n\t Lu: \"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A\",\r\n\t Lt: \"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC\",\r\n\t Lm: \"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F\",\r\n\t Lo: \"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",\r\n\t M: \"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26\",\r\n\t Mn: \"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26\",\r\n\t Mc: \"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC\",\r\n\t Me: \"0488048906DE20DD-20E020E2-20E4A670-A672\",\r\n\t N: \"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",\r\n\t Nd: \"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",\r\n\t Nl: \"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF\",\r\n\t No: \"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835\",\r\n\t P: \"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65\",\r\n\t Pd: \"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D\",\r\n\t Ps: \"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62\",\r\n\t Pe: \"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63\",\r\n\t Pi: \"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20\",\r\n\t Pf: \"00BB2019201D203A2E032E052E0A2E0D2E1D2E21\",\r\n\t Pc: \"005F203F20402054FE33FE34FE4D-FE4FFF3F\",\r\n\t Po: \"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65\",\r\n\t S: \"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD\",\r\n\t Sm: \"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC\",\r\n\t Sc: \"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6\",\r\n\t Sk: \"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3\",\r\n\t So: \"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD\",\r\n\t Z: \"002000A01680180E2000-200A20282029202F205F3000\",\r\n\t Zs: \"002000A01680180E2000-200A202F205F3000\",\r\n\t Zl: \"2028\",\r\n\t Zp: \"2029\",\r\n\t C: \"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF\",\r\n\t Cc: \"0000-001F007F-009F\",\r\n\t Cf: \"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB\",\r\n\t Co: \"E000-F8FF\",\r\n\t Cs: \"D800-DFFF\",\r\n\t Cn: \"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF\"\r\n\t});\r\n\r\n\tfunction addUnicodePackage (pack) {\r\n\t var codePoint = /\\w{4}/g;\r\n\t for (var name in pack)\r\n\t exports.packages[name] = pack[name].replace(codePoint, \"\\\\u$&\");\r\n\t}\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\tvar TokenIterator = function(session, initialRow, initialColumn) {\r\n\t this.$session = session;\r\n\t this.$row = initialRow;\r\n\t this.$rowTokens = session.getTokens(initialRow);\r\n\r\n\t var token = session.getTokenAt(initialRow, initialColumn);\r\n\t this.$tokenIndex = token ? token.index : -1;\r\n\t};\r\n\r\n\t(function() { \r\n\t this.stepBackward = function() {\r\n\t this.$tokenIndex -= 1;\r\n\t \r\n\t while (this.$tokenIndex < 0) {\r\n\t this.$row -= 1;\r\n\t if (this.$row < 0) {\r\n\t this.$row = 0;\r\n\t return null;\r\n\t }\r\n\t \r\n\t this.$rowTokens = this.$session.getTokens(this.$row);\r\n\t this.$tokenIndex = this.$rowTokens.length - 1;\r\n\t }\r\n\t \r\n\t return this.$rowTokens[this.$tokenIndex];\r\n\t }; \r\n\t this.stepForward = function() {\r\n\t this.$tokenIndex += 1;\r\n\t var rowCount;\r\n\t while (this.$tokenIndex >= this.$rowTokens.length) {\r\n\t this.$row += 1;\r\n\t if (!rowCount)\r\n\t rowCount = this.$session.getLength();\r\n\t if (this.$row >= rowCount) {\r\n\t this.$row = rowCount - 1;\r\n\t return null;\r\n\t }\r\n\r\n\t this.$rowTokens = this.$session.getTokens(this.$row);\r\n\t this.$tokenIndex = 0;\r\n\t }\r\n\t \r\n\t return this.$rowTokens[this.$tokenIndex];\r\n\t }; \r\n\t this.getCurrentToken = function () {\r\n\t return this.$rowTokens[this.$tokenIndex];\r\n\t }; \r\n\t this.getCurrentTokenRow = function () {\r\n\t return this.$row;\r\n\t }; \r\n\t this.getCurrentTokenColumn = function() {\r\n\t var rowTokens = this.$rowTokens;\r\n\t var tokenIndex = this.$tokenIndex;\r\n\t var column = rowTokens[tokenIndex].start;\r\n\t if (column !== undefined)\r\n\t return column;\r\n\t \r\n\t column = 0;\r\n\t while (tokenIndex > 0) {\r\n\t tokenIndex -= 1;\r\n\t column += rowTokens[tokenIndex].value.length;\r\n\t }\r\n\t \r\n\t return column; \r\n\t };\r\n\t this.getCurrentTokenPosition = function() {\r\n\t return {row: this.$row, column: this.getCurrentTokenColumn()};\r\n\t };\r\n\t \r\n\t}).call(TokenIterator.prototype);\r\n\r\n\texports.TokenIterator = TokenIterator;\r\n\t});\r\n\r\n\tace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Tokenizer = acequire(\"../tokenizer\").Tokenizer;\r\n\tvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\r\n\tvar Behaviour = acequire(\"./behaviour\").Behaviour;\r\n\tvar unicode = acequire(\"../unicode\");\r\n\tvar lang = acequire(\"../lib/lang\");\r\n\tvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\r\n\tvar Range = acequire(\"../range\").Range;\r\n\r\n\tvar Mode = function() {\r\n\t this.HighlightRules = TextHighlightRules;\r\n\t this.$behaviour = new Behaviour();\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t this.tokenRe = new RegExp(\"^[\"\r\n\t + unicode.packages.L\r\n\t + unicode.packages.Mn + unicode.packages.Mc\r\n\t + unicode.packages.Nd\r\n\t + unicode.packages.Pc + \"\\\\$_]+\", \"g\"\r\n\t );\r\n\r\n\t this.nonTokenRe = new RegExp(\"^(?:[^\"\r\n\t + unicode.packages.L\r\n\t + unicode.packages.Mn + unicode.packages.Mc\r\n\t + unicode.packages.Nd\r\n\t + unicode.packages.Pc + \"\\\\$_]|\\\\s])+\", \"g\"\r\n\t );\r\n\r\n\t this.getTokenizer = function() {\r\n\t if (!this.$tokenizer) {\r\n\t this.$highlightRules = this.$highlightRules || new this.HighlightRules();\r\n\t this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\r\n\t }\r\n\t return this.$tokenizer;\r\n\t };\r\n\r\n\t this.lineCommentStart = \"\";\r\n\t this.blockComment = \"\";\r\n\r\n\t this.toggleCommentLines = function(state, session, startRow, endRow) {\r\n\t var doc = session.doc;\r\n\r\n\t var ignoreBlankLines = true;\r\n\t var shouldRemove = true;\r\n\t var minIndent = Infinity;\r\n\t var tabSize = session.getTabSize();\r\n\t var insertAtTabStop = false;\r\n\r\n\t if (!this.lineCommentStart) {\r\n\t if (!this.blockComment)\r\n\t return false;\r\n\t var lineCommentStart = this.blockComment.start;\r\n\t var lineCommentEnd = this.blockComment.end;\r\n\t var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\r\n\t var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\r\n\r\n\t var comment = function(line, i) {\r\n\t if (testRemove(line, i))\r\n\t return;\r\n\t if (!ignoreBlankLines || /\\S/.test(line)) {\r\n\t doc.insertInLine({row: i, column: line.length}, lineCommentEnd);\r\n\t doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\r\n\t }\r\n\t };\r\n\r\n\t var uncomment = function(line, i) {\r\n\t var m;\r\n\t if (m = line.match(regexpEnd))\r\n\t doc.removeInLine(i, line.length - m[0].length, line.length);\r\n\t if (m = line.match(regexpStart))\r\n\t doc.removeInLine(i, m[1].length, m[0].length);\r\n\t };\r\n\r\n\t var testRemove = function(line, row) {\r\n\t if (regexpStart.test(line))\r\n\t return true;\r\n\t var tokens = session.getTokens(row);\r\n\t for (var i = 0; i < tokens.length; i++) {\r\n\t if (tokens[i].type === \"comment\")\r\n\t return true;\r\n\t }\r\n\t };\r\n\t } else {\r\n\t if (Array.isArray(this.lineCommentStart)) {\r\n\t var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\r\n\t var lineCommentStart = this.lineCommentStart[0];\r\n\t } else {\r\n\t var regexpStart = lang.escapeRegExp(this.lineCommentStart);\r\n\t var lineCommentStart = this.lineCommentStart;\r\n\t }\r\n\t regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\r\n\t \r\n\t insertAtTabStop = session.getUseSoftTabs();\r\n\r\n\t var uncomment = function(line, i) {\r\n\t var m = line.match(regexpStart);\r\n\t if (!m) return;\r\n\t var start = m[1].length, end = m[0].length;\r\n\t if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\r\n\t end--;\r\n\t doc.removeInLine(i, start, end);\r\n\t };\r\n\t var commentWithSpace = lineCommentStart + \" \";\r\n\t var comment = function(line, i) {\r\n\t if (!ignoreBlankLines || /\\S/.test(line)) {\r\n\t if (shouldInsertSpace(line, minIndent, minIndent))\r\n\t doc.insertInLine({row: i, column: minIndent}, commentWithSpace);\r\n\t else\r\n\t doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\r\n\t }\r\n\t };\r\n\t var testRemove = function(line, i) {\r\n\t return regexpStart.test(line);\r\n\t };\r\n\t \r\n\t var shouldInsertSpace = function(line, before, after) {\r\n\t var spaces = 0;\r\n\t while (before-- && line.charAt(before) == \" \")\r\n\t spaces++;\r\n\t if (spaces % tabSize != 0)\r\n\t return false;\r\n\t var spaces = 0;\r\n\t while (line.charAt(after++) == \" \")\r\n\t spaces++;\r\n\t if (tabSize > 2)\r\n\t return spaces % tabSize != tabSize - 1;\r\n\t else\r\n\t return spaces % tabSize == 0;\r\n\t return true;\r\n\t };\r\n\t }\r\n\r\n\t function iter(fun) {\r\n\t for (var i = startRow; i <= endRow; i++)\r\n\t fun(doc.getLine(i), i);\r\n\t }\r\n\r\n\r\n\t var minEmptyLength = Infinity;\r\n\t iter(function(line, i) {\r\n\t var indent = line.search(/\\S/);\r\n\t if (indent !== -1) {\r\n\t if (indent < minIndent)\r\n\t minIndent = indent;\r\n\t if (shouldRemove && !testRemove(line, i))\r\n\t shouldRemove = false;\r\n\t } else if (minEmptyLength > line.length) {\r\n\t minEmptyLength = line.length;\r\n\t }\r\n\t });\r\n\r\n\t if (minIndent == Infinity) {\r\n\t minIndent = minEmptyLength;\r\n\t ignoreBlankLines = false;\r\n\t shouldRemove = false;\r\n\t }\r\n\r\n\t if (insertAtTabStop && minIndent % tabSize != 0)\r\n\t minIndent = Math.floor(minIndent / tabSize) * tabSize;\r\n\r\n\t iter(shouldRemove ? uncomment : comment);\r\n\t };\r\n\r\n\t this.toggleBlockComment = function(state, session, range, cursor) {\r\n\t var comment = this.blockComment;\r\n\t if (!comment)\r\n\t return;\r\n\t if (!comment.start && comment[0])\r\n\t comment = comment[0];\r\n\r\n\t var iterator = new TokenIterator(session, cursor.row, cursor.column);\r\n\t var token = iterator.getCurrentToken();\r\n\r\n\t var sel = session.selection;\r\n\t var initialRange = session.selection.toOrientedRange();\r\n\t var startRow, colDiff;\r\n\r\n\t if (token && /comment/.test(token.type)) {\r\n\t var startRange, endRange;\r\n\t while (token && /comment/.test(token.type)) {\r\n\t var i = token.value.indexOf(comment.start);\r\n\t if (i != -1) {\r\n\t var row = iterator.getCurrentTokenRow();\r\n\t var column = iterator.getCurrentTokenColumn() + i;\r\n\t startRange = new Range(row, column, row, column + comment.start.length);\r\n\t break;\r\n\t }\r\n\t token = iterator.stepBackward();\r\n\t }\r\n\r\n\t var iterator = new TokenIterator(session, cursor.row, cursor.column);\r\n\t var token = iterator.getCurrentToken();\r\n\t while (token && /comment/.test(token.type)) {\r\n\t var i = token.value.indexOf(comment.end);\r\n\t if (i != -1) {\r\n\t var row = iterator.getCurrentTokenRow();\r\n\t var column = iterator.getCurrentTokenColumn() + i;\r\n\t endRange = new Range(row, column, row, column + comment.end.length);\r\n\t break;\r\n\t }\r\n\t token = iterator.stepForward();\r\n\t }\r\n\t if (endRange)\r\n\t session.remove(endRange);\r\n\t if (startRange) {\r\n\t session.remove(startRange);\r\n\t startRow = startRange.start.row;\r\n\t colDiff = -comment.start.length;\r\n\t }\r\n\t } else {\r\n\t colDiff = comment.start.length;\r\n\t startRow = range.start.row;\r\n\t session.insert(range.end, comment.end);\r\n\t session.insert(range.start, comment.start);\r\n\t }\r\n\t if (initialRange.start.row == startRow)\r\n\t initialRange.start.column += colDiff;\r\n\t if (initialRange.end.row == startRow)\r\n\t initialRange.end.column += colDiff;\r\n\t session.selection.fromOrientedRange(initialRange);\r\n\t };\r\n\r\n\t this.getNextLineIndent = function(state, line, tab) {\r\n\t return this.$getIndent(line);\r\n\t };\r\n\r\n\t this.checkOutdent = function(state, line, input) {\r\n\t return false;\r\n\t };\r\n\r\n\t this.autoOutdent = function(state, doc, row) {\r\n\t };\r\n\r\n\t this.$getIndent = function(line) {\r\n\t return line.match(/^\\s*/)[0];\r\n\t };\r\n\r\n\t this.createWorker = function(session) {\r\n\t return null;\r\n\t };\r\n\r\n\t this.createModeDelegates = function (mapping) {\r\n\t this.$embeds = [];\r\n\t this.$modes = {};\r\n\t for (var i in mapping) {\r\n\t if (mapping[i]) {\r\n\t this.$embeds.push(i);\r\n\t this.$modes[i] = new mapping[i]();\r\n\t }\r\n\t }\r\n\r\n\t var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\", \r\n\t \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\r\n\r\n\t for (var i = 0; i < delegations.length; i++) {\r\n\t (function(scope) {\r\n\t var functionName = delegations[i];\r\n\t var defaultHandler = scope[functionName];\r\n\t scope[delegations[i]] = function() {\r\n\t return this.$delegator(functionName, arguments, defaultHandler);\r\n\t };\r\n\t }(this));\r\n\t }\r\n\t };\r\n\r\n\t this.$delegator = function(method, args, defaultHandler) {\r\n\t var state = args[0];\r\n\t if (typeof state != \"string\")\r\n\t state = state[0];\r\n\t for (var i = 0; i < this.$embeds.length; i++) {\r\n\t if (!this.$modes[this.$embeds[i]]) continue;\r\n\r\n\t var split = state.split(this.$embeds[i]);\r\n\t if (!split[0] && split[1]) {\r\n\t args[0] = split[1];\r\n\t var mode = this.$modes[this.$embeds[i]];\r\n\t return mode[method].apply(mode, args);\r\n\t }\r\n\t }\r\n\t var ret = defaultHandler.apply(this, args);\r\n\t return defaultHandler ? ret : undefined;\r\n\t };\r\n\r\n\t this.transformAction = function(state, action, editor, session, param) {\r\n\t if (this.$behaviour) {\r\n\t var behaviours = this.$behaviour.getBehaviours();\r\n\t for (var key in behaviours) {\r\n\t if (behaviours[key][action]) {\r\n\t var ret = behaviours[key][action].apply(this, arguments);\r\n\t if (ret) {\r\n\t return ret;\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t };\r\n\t \r\n\t this.getKeywords = function(append) {\r\n\t if (!this.completionKeywords) {\r\n\t var rules = this.$tokenizer.rules;\r\n\t var completionKeywords = [];\r\n\t for (var rule in rules) {\r\n\t var ruleItr = rules[rule];\r\n\t for (var r = 0, l = ruleItr.length; r < l; r++) {\r\n\t if (typeof ruleItr[r].token === \"string\") {\r\n\t if (/keyword|support|storage/.test(ruleItr[r].token))\r\n\t completionKeywords.push(ruleItr[r].regex);\r\n\t }\r\n\t else if (typeof ruleItr[r].token === \"object\") {\r\n\t for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { \r\n\t if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\r\n\t var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\r\n\t completionKeywords.push(rule.substr(1, rule.length - 2));\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t this.completionKeywords = completionKeywords;\r\n\t }\r\n\t if (!append)\r\n\t return this.$keywordList;\r\n\t return completionKeywords.concat(this.$keywordList || []);\r\n\t };\r\n\t \r\n\t this.$createKeywordList = function() {\r\n\t if (!this.$highlightRules)\r\n\t this.getTokenizer();\r\n\t return this.$keywordList = this.$highlightRules.$keywordList || [];\r\n\t };\r\n\r\n\t this.getCompletions = function(state, session, pos, prefix) {\r\n\t var keywords = this.$keywordList || this.$createKeywordList();\r\n\t return keywords.map(function(word) {\r\n\t return {\r\n\t name: word,\r\n\t value: word,\r\n\t score: 0,\r\n\t meta: \"keyword\"\r\n\t };\r\n\t });\r\n\t };\r\n\r\n\t this.$id = \"ace/mode/text\";\r\n\t}).call(Mode.prototype);\r\n\r\n\texports.Mode = Mode;\r\n\t});\r\n\r\n\tace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tfunction throwDeltaError(delta, errorText){\r\n\t console.log(\"Invalid Delta:\", delta);\r\n\t throw \"Invalid Delta: \" + errorText;\r\n\t}\r\n\r\n\tfunction positionInDocument(docLines, position) {\r\n\t return position.row >= 0 && position.row < docLines.length &&\r\n\t position.column >= 0 && position.column <= docLines[position.row].length;\r\n\t}\r\n\r\n\tfunction validateDelta(docLines, delta) {\r\n\t if (delta.action != \"insert\" && delta.action != \"remove\")\r\n\t throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\r\n\t if (!(delta.lines instanceof Array))\r\n\t throwDeltaError(delta, \"delta.lines must be an Array\");\r\n\t if (!delta.start || !delta.end)\r\n\t throwDeltaError(delta, \"delta.start/end must be an present\");\r\n\t var start = delta.start;\r\n\t if (!positionInDocument(docLines, delta.start))\r\n\t throwDeltaError(delta, \"delta.start must be contained in document\");\r\n\t var end = delta.end;\r\n\t if (delta.action == \"remove\" && !positionInDocument(docLines, end))\r\n\t throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\r\n\t var numRangeRows = end.row - start.row;\r\n\t var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\r\n\t if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\r\n\t throwDeltaError(delta, \"delta.range must match delta lines\");\r\n\t}\r\n\r\n\texports.applyDelta = function(docLines, delta, doNotValidate) {\r\n\t \r\n\t var row = delta.start.row;\r\n\t var startColumn = delta.start.column;\r\n\t var line = docLines[row] || \"\";\r\n\t switch (delta.action) {\r\n\t case \"insert\":\r\n\t var lines = delta.lines;\r\n\t if (lines.length === 1) {\r\n\t docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\r\n\t } else {\r\n\t var args = [row, 1].concat(delta.lines);\r\n\t docLines.splice.apply(docLines, args);\r\n\t docLines[row] = line.substring(0, startColumn) + docLines[row];\r\n\t docLines[row + delta.lines.length - 1] += line.substring(startColumn);\r\n\t }\r\n\t break;\r\n\t case \"remove\":\r\n\t var endColumn = delta.end.column;\r\n\t var endRow = delta.end.row;\r\n\t if (row === endRow) {\r\n\t docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\r\n\t } else {\r\n\t docLines.splice(\r\n\t row, endRow - row + 1,\r\n\t line.substring(0, startColumn) + docLines[endRow].substring(endColumn)\r\n\t );\r\n\t }\r\n\t break;\r\n\t }\r\n\t}\r\n\t});\r\n\r\n\tace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\r\n\tvar Anchor = exports.Anchor = function(doc, row, column) {\r\n\t this.$onChange = this.onChange.bind(this);\r\n\t this.attach(doc);\r\n\t \r\n\t if (typeof column == \"undefined\")\r\n\t this.setPosition(row.row, row.column);\r\n\t else\r\n\t this.setPosition(row, column);\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\t this.getPosition = function() {\r\n\t return this.$clipPositionToDocument(this.row, this.column);\r\n\t };\r\n\t this.getDocument = function() {\r\n\t return this.document;\r\n\t };\r\n\t this.$insertRight = false;\r\n\t this.onChange = function(delta) {\r\n\t if (delta.start.row == delta.end.row && delta.start.row != this.row)\r\n\t return;\r\n\r\n\t if (delta.start.row > this.row)\r\n\t return;\r\n\t \r\n\t var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);\r\n\t this.setPosition(point.row, point.column, true);\r\n\t };\r\n\t \r\n\t function $pointsInOrder(point1, point2, equalPointsInOrder) {\r\n\t var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\r\n\t return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\r\n\t }\r\n\t \r\n\t function $getTransformedPoint(delta, point, moveIfEqual) {\r\n\t var deltaIsInsert = delta.action == \"insert\";\r\n\t var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\r\n\t var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\r\n\t var deltaStart = delta.start;\r\n\t var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\r\n\t if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\r\n\t return {\r\n\t row: point.row,\r\n\t column: point.column\r\n\t };\r\n\t }\r\n\t if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\r\n\t return {\r\n\t row: point.row + deltaRowShift,\r\n\t column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\r\n\t };\r\n\t }\r\n\t \r\n\t return {\r\n\t row: deltaStart.row,\r\n\t column: deltaStart.column\r\n\t };\r\n\t }\r\n\t this.setPosition = function(row, column, noClip) {\r\n\t var pos;\r\n\t if (noClip) {\r\n\t pos = {\r\n\t row: row,\r\n\t column: column\r\n\t };\r\n\t } else {\r\n\t pos = this.$clipPositionToDocument(row, column);\r\n\t }\r\n\r\n\t if (this.row == pos.row && this.column == pos.column)\r\n\t return;\r\n\r\n\t var old = {\r\n\t row: this.row,\r\n\t column: this.column\r\n\t };\r\n\r\n\t this.row = pos.row;\r\n\t this.column = pos.column;\r\n\t this._signal(\"change\", {\r\n\t old: old,\r\n\t value: pos\r\n\t });\r\n\t };\r\n\t this.detach = function() {\r\n\t this.document.removeEventListener(\"change\", this.$onChange);\r\n\t };\r\n\t this.attach = function(doc) {\r\n\t this.document = doc || this.document;\r\n\t this.document.on(\"change\", this.$onChange);\r\n\t };\r\n\t this.$clipPositionToDocument = function(row, column) {\r\n\t var pos = {};\r\n\r\n\t if (row >= this.document.getLength()) {\r\n\t pos.row = Math.max(0, this.document.getLength() - 1);\r\n\t pos.column = this.document.getLine(pos.row).length;\r\n\t }\r\n\t else if (row < 0) {\r\n\t pos.row = 0;\r\n\t pos.column = 0;\r\n\t }\r\n\t else {\r\n\t pos.row = row;\r\n\t pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\r\n\t }\r\n\r\n\t if (column < 0)\r\n\t pos.column = 0;\r\n\r\n\t return pos;\r\n\t };\r\n\r\n\t}).call(Anchor.prototype);\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar applyDelta = acequire(\"./apply_delta\").applyDelta;\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\tvar Range = acequire(\"./range\").Range;\r\n\tvar Anchor = acequire(\"./anchor\").Anchor;\r\n\r\n\tvar Document = function(textOrLines) {\r\n\t this.$lines = [\"\"];\r\n\t if (textOrLines.length === 0) {\r\n\t this.$lines = [\"\"];\r\n\t } else if (Array.isArray(textOrLines)) {\r\n\t this.insertMergedLines({row: 0, column: 0}, textOrLines);\r\n\t } else {\r\n\t this.insert({row: 0, column:0}, textOrLines);\r\n\t }\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\t this.setValue = function(text) {\r\n\t var len = this.getLength() - 1;\r\n\t this.remove(new Range(0, 0, len, this.getLine(len).length));\r\n\t this.insert({row: 0, column: 0}, text);\r\n\t };\r\n\t this.getValue = function() {\r\n\t return this.getAllLines().join(this.getNewLineCharacter());\r\n\t };\r\n\t this.createAnchor = function(row, column) {\r\n\t return new Anchor(this, row, column);\r\n\t };\r\n\t if (\"aaa\".split(/a/).length === 0) {\r\n\t this.$split = function(text) {\r\n\t return text.replace(/\\r\\n|\\r/g, \"\\n\").split(\"\\n\");\r\n\t };\r\n\t } else {\r\n\t this.$split = function(text) {\r\n\t return text.split(/\\r\\n|\\r|\\n/);\r\n\t };\r\n\t }\r\n\r\n\r\n\t this.$detectNewLine = function(text) {\r\n\t var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\r\n\t this.$autoNewLine = match ? match[1] : \"\\n\";\r\n\t this._signal(\"changeNewLineMode\");\r\n\t };\r\n\t this.getNewLineCharacter = function() {\r\n\t switch (this.$newLineMode) {\r\n\t case \"windows\":\r\n\t return \"\\r\\n\";\r\n\t case \"unix\":\r\n\t return \"\\n\";\r\n\t default:\r\n\t return this.$autoNewLine || \"\\n\";\r\n\t }\r\n\t };\r\n\r\n\t this.$autoNewLine = \"\";\r\n\t this.$newLineMode = \"auto\";\r\n\t this.setNewLineMode = function(newLineMode) {\r\n\t if (this.$newLineMode === newLineMode)\r\n\t return;\r\n\r\n\t this.$newLineMode = newLineMode;\r\n\t this._signal(\"changeNewLineMode\");\r\n\t };\r\n\t this.getNewLineMode = function() {\r\n\t return this.$newLineMode;\r\n\t };\r\n\t this.isNewLine = function(text) {\r\n\t return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\r\n\t };\r\n\t this.getLine = function(row) {\r\n\t return this.$lines[row] || \"\";\r\n\t };\r\n\t this.getLines = function(firstRow, lastRow) {\r\n\t return this.$lines.slice(firstRow, lastRow + 1);\r\n\t };\r\n\t this.getAllLines = function() {\r\n\t return this.getLines(0, this.getLength());\r\n\t };\r\n\t this.getLength = function() {\r\n\t return this.$lines.length;\r\n\t };\r\n\t this.getTextRange = function(range) {\r\n\t return this.getLinesForRange(range).join(this.getNewLineCharacter());\r\n\t };\r\n\t this.getLinesForRange = function(range) {\r\n\t var lines;\r\n\t if (range.start.row === range.end.row) {\r\n\t lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\r\n\t } else {\r\n\t lines = this.getLines(range.start.row, range.end.row);\r\n\t lines[0] = (lines[0] || \"\").substring(range.start.column);\r\n\t var l = lines.length - 1;\r\n\t if (range.end.row - range.start.row == l)\r\n\t lines[l] = lines[l].substring(0, range.end.column);\r\n\t }\r\n\t return lines;\r\n\t };\r\n\t this.insertLines = function(row, lines) {\r\n\t console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\r\n\t return this.insertFullLines(row, lines);\r\n\t };\r\n\t this.removeLines = function(firstRow, lastRow) {\r\n\t console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\r\n\t return this.removeFullLines(firstRow, lastRow);\r\n\t };\r\n\t this.insertNewLine = function(position) {\r\n\t console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\\'\\', \\'\\']) instead.\");\r\n\t return this.insertMergedLines(position, [\"\", \"\"]);\r\n\t };\r\n\t this.insert = function(position, text) {\r\n\t if (this.getLength() <= 1)\r\n\t this.$detectNewLine(text);\r\n\t \r\n\t return this.insertMergedLines(position, this.$split(text));\r\n\t };\r\n\t this.insertInLine = function(position, text) {\r\n\t var start = this.clippedPos(position.row, position.column);\r\n\t var end = this.pos(position.row, position.column + text.length);\r\n\t \r\n\t this.applyDelta({\r\n\t start: start,\r\n\t end: end,\r\n\t action: \"insert\",\r\n\t lines: [text]\r\n\t }, true);\r\n\t \r\n\t return this.clonePos(end);\r\n\t };\r\n\t \r\n\t this.clippedPos = function(row, column) {\r\n\t var length = this.getLength();\r\n\t if (row === undefined) {\r\n\t row = length;\r\n\t } else if (row < 0) {\r\n\t row = 0;\r\n\t } else if (row >= length) {\r\n\t row = length - 1;\r\n\t column = undefined;\r\n\t }\r\n\t var line = this.getLine(row);\r\n\t if (column == undefined)\r\n\t column = line.length;\r\n\t column = Math.min(Math.max(column, 0), line.length);\r\n\t return {row: row, column: column};\r\n\t };\r\n\t \r\n\t this.clonePos = function(pos) {\r\n\t return {row: pos.row, column: pos.column};\r\n\t };\r\n\t \r\n\t this.pos = function(row, column) {\r\n\t return {row: row, column: column};\r\n\t };\r\n\t \r\n\t this.$clipPosition = function(position) {\r\n\t var length = this.getLength();\r\n\t if (position.row >= length) {\r\n\t position.row = Math.max(0, length - 1);\r\n\t position.column = this.getLine(length - 1).length;\r\n\t } else {\r\n\t position.row = Math.max(0, position.row);\r\n\t position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\r\n\t }\r\n\t return position;\r\n\t };\r\n\t this.insertFullLines = function(row, lines) {\r\n\t row = Math.min(Math.max(row, 0), this.getLength());\r\n\t var column = 0;\r\n\t if (row < this.getLength()) {\r\n\t lines = lines.concat([\"\"]);\r\n\t column = 0;\r\n\t } else {\r\n\t lines = [\"\"].concat(lines);\r\n\t row--;\r\n\t column = this.$lines[row].length;\r\n\t }\r\n\t this.insertMergedLines({row: row, column: column}, lines);\r\n\t }; \r\n\t this.insertMergedLines = function(position, lines) {\r\n\t var start = this.clippedPos(position.row, position.column);\r\n\t var end = {\r\n\t row: start.row + lines.length - 1,\r\n\t column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\r\n\t };\r\n\t \r\n\t this.applyDelta({\r\n\t start: start,\r\n\t end: end,\r\n\t action: \"insert\",\r\n\t lines: lines\r\n\t });\r\n\t \r\n\t return this.clonePos(end);\r\n\t };\r\n\t this.remove = function(range) {\r\n\t var start = this.clippedPos(range.start.row, range.start.column);\r\n\t var end = this.clippedPos(range.end.row, range.end.column);\r\n\t this.applyDelta({\r\n\t start: start,\r\n\t end: end,\r\n\t action: \"remove\",\r\n\t lines: this.getLinesForRange({start: start, end: end})\r\n\t });\r\n\t return this.clonePos(start);\r\n\t };\r\n\t this.removeInLine = function(row, startColumn, endColumn) {\r\n\t var start = this.clippedPos(row, startColumn);\r\n\t var end = this.clippedPos(row, endColumn);\r\n\t \r\n\t this.applyDelta({\r\n\t start: start,\r\n\t end: end,\r\n\t action: \"remove\",\r\n\t lines: this.getLinesForRange({start: start, end: end})\r\n\t }, true);\r\n\t \r\n\t return this.clonePos(start);\r\n\t };\r\n\t this.removeFullLines = function(firstRow, lastRow) {\r\n\t firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\r\n\t lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1);\r\n\t var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\r\n\t var deleteLastNewLine = lastRow < this.getLength() - 1;\r\n\t var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow );\r\n\t var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 );\r\n\t var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow );\r\n\t var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); \r\n\t var range = new Range(startRow, startCol, endRow, endCol);\r\n\t var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\r\n\t \r\n\t this.applyDelta({\r\n\t start: range.start,\r\n\t end: range.end,\r\n\t action: \"remove\",\r\n\t lines: this.getLinesForRange(range)\r\n\t });\r\n\t return deletedLines;\r\n\t };\r\n\t this.removeNewLine = function(row) {\r\n\t if (row < this.getLength() - 1 && row >= 0) {\r\n\t this.applyDelta({\r\n\t start: this.pos(row, this.getLine(row).length),\r\n\t end: this.pos(row + 1, 0),\r\n\t action: \"remove\",\r\n\t lines: [\"\", \"\"]\r\n\t });\r\n\t }\r\n\t };\r\n\t this.replace = function(range, text) {\r\n\t if (!(range instanceof Range))\r\n\t range = Range.fromPoints(range.start, range.end);\r\n\t if (text.length === 0 && range.isEmpty())\r\n\t return range.start;\r\n\t if (text == this.getTextRange(range))\r\n\t return range.end;\r\n\r\n\t this.remove(range);\r\n\t var end;\r\n\t if (text) {\r\n\t end = this.insert(range.start, text);\r\n\t }\r\n\t else {\r\n\t end = range.start;\r\n\t }\r\n\t \r\n\t return end;\r\n\t };\r\n\t this.applyDeltas = function(deltas) {\r\n\t for (var i=0; i=0; i--) {\r\n\t this.revertDelta(deltas[i]);\r\n\t }\r\n\t };\r\n\t this.applyDelta = function(delta, doNotValidate) {\r\n\t var isInsert = delta.action == \"insert\";\r\n\t if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\r\n\t : !Range.comparePoints(delta.start, delta.end)) {\r\n\t return;\r\n\t }\r\n\t \r\n\t if (isInsert && delta.lines.length > 20000)\r\n\t this.$splitAndapplyLargeDelta(delta, 20000);\r\n\t applyDelta(this.$lines, delta, doNotValidate);\r\n\t this._signal(\"change\", delta);\r\n\t };\r\n\t \r\n\t this.$splitAndapplyLargeDelta = function(delta, MAX) {\r\n\t var lines = delta.lines;\r\n\t var l = lines.length;\r\n\t var row = delta.start.row; \r\n\t var column = delta.start.column;\r\n\t var from = 0, to = 0;\r\n\t do {\r\n\t from = to;\r\n\t to += MAX - 1;\r\n\t var chunk = lines.slice(from, to);\r\n\t if (to > l) {\r\n\t delta.lines = chunk;\r\n\t delta.start.row = row + from;\r\n\t delta.start.column = column;\r\n\t break;\r\n\t }\r\n\t chunk.push(\"\");\r\n\t this.applyDelta({\r\n\t start: this.pos(row + from, column),\r\n\t end: this.pos(row + to, column = 0),\r\n\t action: delta.action,\r\n\t lines: chunk\r\n\t }, true);\r\n\t } while(true);\r\n\t };\r\n\t this.revertDelta = function(delta) {\r\n\t this.applyDelta({\r\n\t start: this.clonePos(delta.start),\r\n\t end: this.clonePos(delta.end),\r\n\t action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\r\n\t lines: delta.lines.slice()\r\n\t });\r\n\t };\r\n\t this.indexToPosition = function(index, startRow) {\r\n\t var lines = this.$lines || this.getAllLines();\r\n\t var newlineLength = this.getNewLineCharacter().length;\r\n\t for (var i = startRow || 0, l = lines.length; i < l; i++) {\r\n\t index -= lines[i].length + newlineLength;\r\n\t if (index < 0)\r\n\t return {row: i, column: index + lines[i].length + newlineLength};\r\n\t }\r\n\t return {row: l-1, column: lines[l-1].length};\r\n\t };\r\n\t this.positionToIndex = function(pos, startRow) {\r\n\t var lines = this.$lines || this.getAllLines();\r\n\t var newlineLength = this.getNewLineCharacter().length;\r\n\t var index = 0;\r\n\t var row = Math.min(pos.row, lines.length);\r\n\t for (var i = startRow || 0; i < row; ++i)\r\n\t index += lines[i].length + newlineLength;\r\n\r\n\t return index + pos.column;\r\n\t };\r\n\r\n\t}).call(Document.prototype);\r\n\r\n\texports.Document = Document;\r\n\t});\r\n\r\n\tace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\r\n\tvar BackgroundTokenizer = function(tokenizer, editor) {\r\n\t this.running = false;\r\n\t this.lines = [];\r\n\t this.states = [];\r\n\t this.currentLine = 0;\r\n\t this.tokenizer = tokenizer;\r\n\r\n\t var self = this;\r\n\r\n\t this.$worker = function() {\r\n\t if (!self.running) { return; }\r\n\r\n\t var workerStart = new Date();\r\n\t var currentLine = self.currentLine;\r\n\t var endLine = -1;\r\n\t var doc = self.doc;\r\n\r\n\t var startLine = currentLine;\r\n\t while (self.lines[currentLine])\r\n\t currentLine++;\r\n\t \r\n\t var len = doc.getLength();\r\n\t var processedLines = 0;\r\n\t self.running = false;\r\n\t while (currentLine < len) {\r\n\t self.$tokenizeRow(currentLine);\r\n\t endLine = currentLine;\r\n\t do {\r\n\t currentLine++;\r\n\t } while (self.lines[currentLine]);\r\n\t processedLines ++;\r\n\t if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { \r\n\t self.running = setTimeout(self.$worker, 20);\r\n\t break;\r\n\t }\r\n\t }\r\n\t self.currentLine = currentLine;\r\n\t \r\n\t if (startLine <= endLine)\r\n\t self.fireUpdateEvent(startLine, endLine);\r\n\t };\r\n\t};\r\n\r\n\t(function(){\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\t this.setTokenizer = function(tokenizer) {\r\n\t this.tokenizer = tokenizer;\r\n\t this.lines = [];\r\n\t this.states = [];\r\n\r\n\t this.start(0);\r\n\t };\r\n\t this.setDocument = function(doc) {\r\n\t this.doc = doc;\r\n\t this.lines = [];\r\n\t this.states = [];\r\n\r\n\t this.stop();\r\n\t };\r\n\t this.fireUpdateEvent = function(firstRow, lastRow) {\r\n\t var data = {\r\n\t first: firstRow,\r\n\t last: lastRow\r\n\t };\r\n\t this._signal(\"update\", {data: data});\r\n\t };\r\n\t this.start = function(startRow) {\r\n\t this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\r\n\t this.lines.splice(this.currentLine, this.lines.length);\r\n\t this.states.splice(this.currentLine, this.states.length);\r\n\r\n\t this.stop();\r\n\t this.running = setTimeout(this.$worker, 700);\r\n\t };\r\n\t \r\n\t this.scheduleStart = function() {\r\n\t if (!this.running)\r\n\t this.running = setTimeout(this.$worker, 700);\r\n\t }\r\n\r\n\t this.$updateOnChange = function(delta) {\r\n\t var startRow = delta.start.row;\r\n\t var len = delta.end.row - startRow;\r\n\r\n\t if (len === 0) {\r\n\t this.lines[startRow] = null;\r\n\t } else if (delta.action == \"remove\") {\r\n\t this.lines.splice(startRow, len + 1, null);\r\n\t this.states.splice(startRow, len + 1, null);\r\n\t } else {\r\n\t var args = Array(len + 1);\r\n\t args.unshift(startRow, 1);\r\n\t this.lines.splice.apply(this.lines, args);\r\n\t this.states.splice.apply(this.states, args);\r\n\t }\r\n\r\n\t this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\r\n\r\n\t this.stop();\r\n\t };\r\n\t this.stop = function() {\r\n\t if (this.running)\r\n\t clearTimeout(this.running);\r\n\t this.running = false;\r\n\t };\r\n\t this.getTokens = function(row) {\r\n\t return this.lines[row] || this.$tokenizeRow(row);\r\n\t };\r\n\t this.getState = function(row) {\r\n\t if (this.currentLine == row)\r\n\t this.$tokenizeRow(row);\r\n\t return this.states[row] || \"start\";\r\n\t };\r\n\r\n\t this.$tokenizeRow = function(row) {\r\n\t var line = this.doc.getLine(row);\r\n\t var state = this.states[row - 1];\r\n\r\n\t var data = this.tokenizer.getLineTokens(line, state, row);\r\n\r\n\t if (this.states[row] + \"\" !== data.state + \"\") {\r\n\t this.states[row] = data.state;\r\n\t this.lines[row + 1] = null;\r\n\t if (this.currentLine > row + 1)\r\n\t this.currentLine = row + 1;\r\n\t } else if (this.currentLine == row) {\r\n\t this.currentLine = row + 1;\r\n\t }\r\n\r\n\t return this.lines[row] = data.tokens;\r\n\t };\r\n\r\n\t}).call(BackgroundTokenizer.prototype);\r\n\r\n\texports.BackgroundTokenizer = BackgroundTokenizer;\r\n\t});\r\n\r\n\tace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar lang = acequire(\"./lib/lang\");\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar Range = acequire(\"./range\").Range;\r\n\r\n\tvar SearchHighlight = function(regExp, clazz, type) {\r\n\t this.setRegexp(regExp);\r\n\t this.clazz = clazz;\r\n\t this.type = type || \"text\";\r\n\t};\r\n\r\n\t(function() {\r\n\t this.MAX_RANGES = 500;\r\n\t \r\n\t this.setRegexp = function(regExp) {\r\n\t if (this.regExp+\"\" == regExp+\"\")\r\n\t return;\r\n\t this.regExp = regExp;\r\n\t this.cache = [];\r\n\t };\r\n\r\n\t this.update = function(html, markerLayer, session, config) {\r\n\t if (!this.regExp)\r\n\t return;\r\n\t var start = config.firstRow, end = config.lastRow;\r\n\r\n\t for (var i = start; i <= end; i++) {\r\n\t var ranges = this.cache[i];\r\n\t if (ranges == null) {\r\n\t ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\r\n\t if (ranges.length > this.MAX_RANGES)\r\n\t ranges = ranges.slice(0, this.MAX_RANGES);\r\n\t ranges = ranges.map(function(match) {\r\n\t return new Range(i, match.offset, i, match.offset + match.length);\r\n\t });\r\n\t this.cache[i] = ranges.length ? ranges : \"\";\r\n\t }\r\n\r\n\t for (var j = ranges.length; j --; ) {\r\n\t markerLayer.drawSingleLineMarker(\r\n\t html, ranges[j].toScreenRange(session), this.clazz, config);\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t}).call(SearchHighlight.prototype);\r\n\r\n\texports.SearchHighlight = SearchHighlight;\r\n\t});\r\n\r\n\tace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Range = acequire(\"../range\").Range;\r\n\tfunction FoldLine(foldData, folds) {\r\n\t this.foldData = foldData;\r\n\t if (Array.isArray(folds)) {\r\n\t this.folds = folds;\r\n\t } else {\r\n\t folds = this.folds = [ folds ];\r\n\t }\r\n\r\n\t var last = folds[folds.length - 1];\r\n\t this.range = new Range(folds[0].start.row, folds[0].start.column,\r\n\t last.end.row, last.end.column);\r\n\t this.start = this.range.start;\r\n\t this.end = this.range.end;\r\n\r\n\t this.folds.forEach(function(fold) {\r\n\t fold.setFoldLine(this);\r\n\t }, this);\r\n\t}\r\n\r\n\t(function() {\r\n\t this.shiftRow = function(shift) {\r\n\t this.start.row += shift;\r\n\t this.end.row += shift;\r\n\t this.folds.forEach(function(fold) {\r\n\t fold.start.row += shift;\r\n\t fold.end.row += shift;\r\n\t });\r\n\t };\r\n\r\n\t this.addFold = function(fold) {\r\n\t if (fold.sameRow) {\r\n\t if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\r\n\t throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\r\n\t }\r\n\t this.folds.push(fold);\r\n\t this.folds.sort(function(a, b) {\r\n\t return -a.range.compareEnd(b.start.row, b.start.column);\r\n\t });\r\n\t if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\r\n\t this.end.row = fold.end.row;\r\n\t this.end.column = fold.end.column;\r\n\t } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\r\n\t this.start.row = fold.start.row;\r\n\t this.start.column = fold.start.column;\r\n\t }\r\n\t } else if (fold.start.row == this.end.row) {\r\n\t this.folds.push(fold);\r\n\t this.end.row = fold.end.row;\r\n\t this.end.column = fold.end.column;\r\n\t } else if (fold.end.row == this.start.row) {\r\n\t this.folds.unshift(fold);\r\n\t this.start.row = fold.start.row;\r\n\t this.start.column = fold.start.column;\r\n\t } else {\r\n\t throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\r\n\t }\r\n\t fold.foldLine = this;\r\n\t };\r\n\r\n\t this.containsRow = function(row) {\r\n\t return row >= this.start.row && row <= this.end.row;\r\n\t };\r\n\r\n\t this.walk = function(callback, endRow, endColumn) {\r\n\t var lastEnd = 0,\r\n\t folds = this.folds,\r\n\t fold,\r\n\t cmp, stop, isNewRow = true;\r\n\r\n\t if (endRow == null) {\r\n\t endRow = this.end.row;\r\n\t endColumn = this.end.column;\r\n\t }\r\n\r\n\t for (var i = 0; i < folds.length; i++) {\r\n\t fold = folds[i];\r\n\r\n\t cmp = fold.range.compareStart(endRow, endColumn);\r\n\t if (cmp == -1) {\r\n\t callback(null, endRow, endColumn, lastEnd, isNewRow);\r\n\t return;\r\n\t }\r\n\r\n\t stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\r\n\t stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\r\n\t if (stop || cmp === 0) {\r\n\t return;\r\n\t }\r\n\t isNewRow = !fold.sameRow;\r\n\t lastEnd = fold.end.column;\r\n\t }\r\n\t callback(null, endRow, endColumn, lastEnd, isNewRow);\r\n\t };\r\n\r\n\t this.getNextFoldTo = function(row, column) {\r\n\t var fold, cmp;\r\n\t for (var i = 0; i < this.folds.length; i++) {\r\n\t fold = this.folds[i];\r\n\t cmp = fold.range.compareEnd(row, column);\r\n\t if (cmp == -1) {\r\n\t return {\r\n\t fold: fold,\r\n\t kind: \"after\"\r\n\t };\r\n\t } else if (cmp === 0) {\r\n\t return {\r\n\t fold: fold,\r\n\t kind: \"inside\"\r\n\t };\r\n\t }\r\n\t }\r\n\t return null;\r\n\t };\r\n\r\n\t this.addRemoveChars = function(row, column, len) {\r\n\t var ret = this.getNextFoldTo(row, column),\r\n\t fold, folds;\r\n\t if (ret) {\r\n\t fold = ret.fold;\r\n\t if (ret.kind == \"inside\"\r\n\t && fold.start.column != column\r\n\t && fold.start.row != row)\r\n\t {\r\n\t window.console && window.console.log(row, column, fold);\r\n\t } else if (fold.start.row == row) {\r\n\t folds = this.folds;\r\n\t var i = folds.indexOf(fold);\r\n\t if (i === 0) {\r\n\t this.start.column += len;\r\n\t }\r\n\t for (i; i < folds.length; i++) {\r\n\t fold = folds[i];\r\n\t fold.start.column += len;\r\n\t if (!fold.sameRow) {\r\n\t return;\r\n\t }\r\n\t fold.end.column += len;\r\n\t }\r\n\t this.end.column += len;\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t this.split = function(row, column) {\r\n\t var pos = this.getNextFoldTo(row, column);\r\n\t \r\n\t if (!pos || pos.kind == \"inside\")\r\n\t return null;\r\n\t \r\n\t var fold = pos.fold;\r\n\t var folds = this.folds;\r\n\t var foldData = this.foldData;\r\n\t \r\n\t var i = folds.indexOf(fold);\r\n\t var foldBefore = folds[i - 1];\r\n\t this.end.row = foldBefore.end.row;\r\n\t this.end.column = foldBefore.end.column;\r\n\t folds = folds.splice(i, folds.length - i);\r\n\r\n\t var newFoldLine = new FoldLine(foldData, folds);\r\n\t foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\r\n\t return newFoldLine;\r\n\t };\r\n\r\n\t this.merge = function(foldLineNext) {\r\n\t var folds = foldLineNext.folds;\r\n\t for (var i = 0; i < folds.length; i++) {\r\n\t this.addFold(folds[i]);\r\n\t }\r\n\t var foldData = this.foldData;\r\n\t foldData.splice(foldData.indexOf(foldLineNext), 1);\r\n\t };\r\n\r\n\t this.toString = function() {\r\n\t var ret = [this.range.toString() + \": [\" ];\r\n\r\n\t this.folds.forEach(function(fold) {\r\n\t ret.push(\" \" + fold.toString());\r\n\t });\r\n\t ret.push(\"]\");\r\n\t return ret.join(\"\\n\");\r\n\t };\r\n\r\n\t this.idxToPosition = function(idx) {\r\n\t var lastFoldEndColumn = 0;\r\n\r\n\t for (var i = 0; i < this.folds.length; i++) {\r\n\t var fold = this.folds[i];\r\n\r\n\t idx -= fold.start.column - lastFoldEndColumn;\r\n\t if (idx < 0) {\r\n\t return {\r\n\t row: fold.start.row,\r\n\t column: fold.start.column + idx\r\n\t };\r\n\t }\r\n\r\n\t idx -= fold.placeholder.length;\r\n\t if (idx < 0) {\r\n\t return fold.start;\r\n\t }\r\n\r\n\t lastFoldEndColumn = fold.end.column;\r\n\t }\r\n\r\n\t return {\r\n\t row: this.end.row,\r\n\t column: this.end.column + idx\r\n\t };\r\n\t };\r\n\t}).call(FoldLine.prototype);\r\n\r\n\texports.FoldLine = FoldLine;\r\n\t});\r\n\r\n\tace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\tvar Range = acequire(\"./range\").Range;\r\n\tvar comparePoints = Range.comparePoints;\r\n\r\n\tvar RangeList = function() {\r\n\t this.ranges = [];\r\n\t};\r\n\r\n\t(function() {\r\n\t this.comparePoints = comparePoints;\r\n\r\n\t this.pointIndex = function(pos, excludeEdges, startIndex) {\r\n\t var list = this.ranges;\r\n\r\n\t for (var i = startIndex || 0; i < list.length; i++) {\r\n\t var range = list[i];\r\n\t var cmpEnd = comparePoints(pos, range.end);\r\n\t if (cmpEnd > 0)\r\n\t continue;\r\n\t var cmpStart = comparePoints(pos, range.start);\r\n\t if (cmpEnd === 0)\r\n\t return excludeEdges && cmpStart !== 0 ? -i-2 : i;\r\n\t if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\r\n\t return i;\r\n\r\n\t return -i-1;\r\n\t }\r\n\t return -i - 1;\r\n\t };\r\n\r\n\t this.add = function(range) {\r\n\t var excludeEdges = !range.isEmpty();\r\n\t var startIndex = this.pointIndex(range.start, excludeEdges);\r\n\t if (startIndex < 0)\r\n\t startIndex = -startIndex - 1;\r\n\r\n\t var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\r\n\r\n\t if (endIndex < 0)\r\n\t endIndex = -endIndex - 1;\r\n\t else\r\n\t endIndex++;\r\n\t return this.ranges.splice(startIndex, endIndex - startIndex, range);\r\n\t };\r\n\r\n\t this.addList = function(list) {\r\n\t var removed = [];\r\n\t for (var i = list.length; i--; ) {\r\n\t removed.push.apply(removed, this.add(list[i]));\r\n\t }\r\n\t return removed;\r\n\t };\r\n\r\n\t this.substractPoint = function(pos) {\r\n\t var i = this.pointIndex(pos);\r\n\r\n\t if (i >= 0)\r\n\t return this.ranges.splice(i, 1);\r\n\t };\r\n\t this.merge = function() {\r\n\t var removed = [];\r\n\t var list = this.ranges;\r\n\t \r\n\t list = list.sort(function(a, b) {\r\n\t return comparePoints(a.start, b.start);\r\n\t });\r\n\t \r\n\t var next = list[0], range;\r\n\t for (var i = 1; i < list.length; i++) {\r\n\t range = next;\r\n\t next = list[i];\r\n\t var cmp = comparePoints(range.end, next.start);\r\n\t if (cmp < 0)\r\n\t continue;\r\n\r\n\t if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\r\n\t continue;\r\n\r\n\t if (comparePoints(range.end, next.end) < 0) {\r\n\t range.end.row = next.end.row;\r\n\t range.end.column = next.end.column;\r\n\t }\r\n\r\n\t list.splice(i, 1);\r\n\t removed.push(next);\r\n\t next = range;\r\n\t i--;\r\n\t }\r\n\t \r\n\t this.ranges = list;\r\n\r\n\t return removed;\r\n\t };\r\n\r\n\t this.contains = function(row, column) {\r\n\t return this.pointIndex({row: row, column: column}) >= 0;\r\n\t };\r\n\r\n\t this.containsPoint = function(pos) {\r\n\t return this.pointIndex(pos) >= 0;\r\n\t };\r\n\r\n\t this.rangeAtPoint = function(pos) {\r\n\t var i = this.pointIndex(pos);\r\n\t if (i >= 0)\r\n\t return this.ranges[i];\r\n\t };\r\n\r\n\r\n\t this.clipRows = function(startRow, endRow) {\r\n\t var list = this.ranges;\r\n\t if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\r\n\t return [];\r\n\r\n\t var startIndex = this.pointIndex({row: startRow, column: 0});\r\n\t if (startIndex < 0)\r\n\t startIndex = -startIndex - 1;\r\n\t var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex);\r\n\t if (endIndex < 0)\r\n\t endIndex = -endIndex - 1;\r\n\r\n\t var clipped = [];\r\n\t for (var i = startIndex; i < endIndex; i++) {\r\n\t clipped.push(list[i]);\r\n\t }\r\n\t return clipped;\r\n\t };\r\n\r\n\t this.removeAll = function() {\r\n\t return this.ranges.splice(0, this.ranges.length);\r\n\t };\r\n\r\n\t this.attach = function(session) {\r\n\t if (this.session)\r\n\t this.detach();\r\n\r\n\t this.session = session;\r\n\t this.onChange = this.$onChange.bind(this);\r\n\r\n\t this.session.on('change', this.onChange);\r\n\t };\r\n\r\n\t this.detach = function() {\r\n\t if (!this.session)\r\n\t return;\r\n\t this.session.removeListener('change', this.onChange);\r\n\t this.session = null;\r\n\t };\r\n\r\n\t this.$onChange = function(delta) {\r\n\t if (delta.action == \"insert\"){\r\n\t var start = delta.start;\r\n\t var end = delta.end;\r\n\t } else {\r\n\t var end = delta.start;\r\n\t var start = delta.end;\r\n\t }\r\n\t var startRow = start.row;\r\n\t var endRow = end.row;\r\n\t var lineDif = endRow - startRow;\r\n\r\n\t var colDiff = -start.column + end.column;\r\n\t var ranges = this.ranges;\r\n\r\n\t for (var i = 0, n = ranges.length; i < n; i++) {\r\n\t var r = ranges[i];\r\n\t if (r.end.row < startRow)\r\n\t continue;\r\n\t if (r.start.row > startRow)\r\n\t break;\r\n\r\n\t if (r.start.row == startRow && r.start.column >= start.column ) {\r\n\t if (r.start.column == start.column && this.$insertRight) {\r\n\t } else {\r\n\t r.start.column += colDiff;\r\n\t r.start.row += lineDif;\r\n\t }\r\n\t }\r\n\t if (r.end.row == startRow && r.end.column >= start.column) {\r\n\t if (r.end.column == start.column && this.$insertRight) {\r\n\t continue;\r\n\t }\r\n\t if (r.end.column == start.column && colDiff > 0 && i < n - 1) { \r\n\t if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column)\r\n\t r.end.column -= colDiff;\r\n\t }\r\n\t r.end.column += colDiff;\r\n\t r.end.row += lineDif;\r\n\t }\r\n\t }\r\n\r\n\t if (lineDif != 0 && i < n) {\r\n\t for (; i < n; i++) {\r\n\t var r = ranges[i];\r\n\t r.start.row += lineDif;\r\n\t r.end.row += lineDif;\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t}).call(RangeList.prototype);\r\n\r\n\texports.RangeList = RangeList;\r\n\t});\r\n\r\n\tace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/range_list\",\"ace/lib/oop\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Range = acequire(\"../range\").Range;\r\n\tvar RangeList = acequire(\"../range_list\").RangeList;\r\n\tvar oop = acequire(\"../lib/oop\")\r\n\tvar Fold = exports.Fold = function(range, placeholder) {\r\n\t this.foldLine = null;\r\n\t this.placeholder = placeholder;\r\n\t this.range = range;\r\n\t this.start = range.start;\r\n\t this.end = range.end;\r\n\r\n\t this.sameRow = range.start.row == range.end.row;\r\n\t this.subFolds = this.ranges = [];\r\n\t};\r\n\r\n\toop.inherits(Fold, RangeList);\r\n\r\n\t(function() {\r\n\r\n\t this.toString = function() {\r\n\t return '\"' + this.placeholder + '\" ' + this.range.toString();\r\n\t };\r\n\r\n\t this.setFoldLine = function(foldLine) {\r\n\t this.foldLine = foldLine;\r\n\t this.subFolds.forEach(function(fold) {\r\n\t fold.setFoldLine(foldLine);\r\n\t });\r\n\t };\r\n\r\n\t this.clone = function() {\r\n\t var range = this.range.clone();\r\n\t var fold = new Fold(range, this.placeholder);\r\n\t this.subFolds.forEach(function(subFold) {\r\n\t fold.subFolds.push(subFold.clone());\r\n\t });\r\n\t fold.collapseChildren = this.collapseChildren;\r\n\t return fold;\r\n\t };\r\n\r\n\t this.addSubFold = function(fold) {\r\n\t if (this.range.isEqual(fold))\r\n\t return;\r\n\r\n\t if (!this.range.containsRange(fold))\r\n\t throw new Error(\"A fold can't intersect already existing fold\" + fold.range + this.range);\r\n\t consumeRange(fold, this.start);\r\n\r\n\t var row = fold.start.row, column = fold.start.column;\r\n\t for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\r\n\t cmp = this.subFolds[i].range.compare(row, column);\r\n\t if (cmp != 1)\r\n\t break;\r\n\t }\r\n\t var afterStart = this.subFolds[i];\r\n\r\n\t if (cmp == 0)\r\n\t return afterStart.addSubFold(fold);\r\n\t var row = fold.range.end.row, column = fold.range.end.column;\r\n\t for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\r\n\t cmp = this.subFolds[j].range.compare(row, column);\r\n\t if (cmp != 1)\r\n\t break;\r\n\t }\r\n\t var afterEnd = this.subFolds[j];\r\n\r\n\t if (cmp == 0)\r\n\t throw new Error(\"A fold can't intersect already existing fold\" + fold.range + this.range);\r\n\r\n\t var consumedFolds = this.subFolds.splice(i, j - i, fold);\r\n\t fold.setFoldLine(this.foldLine);\r\n\r\n\t return fold;\r\n\t };\r\n\t \r\n\t this.restoreRange = function(range) {\r\n\t return restoreRange(range, this.start);\r\n\t };\r\n\r\n\t}).call(Fold.prototype);\r\n\r\n\tfunction consumePoint(point, anchor) {\r\n\t point.row -= anchor.row;\r\n\t if (point.row == 0)\r\n\t point.column -= anchor.column;\r\n\t}\r\n\tfunction consumeRange(range, anchor) {\r\n\t consumePoint(range.start, anchor);\r\n\t consumePoint(range.end, anchor);\r\n\t}\r\n\tfunction restorePoint(point, anchor) {\r\n\t if (point.row == 0)\r\n\t point.column += anchor.column;\r\n\t point.row += anchor.row;\r\n\t}\r\n\tfunction restoreRange(range, anchor) {\r\n\t restorePoint(range.start, anchor);\r\n\t restorePoint(range.end, anchor);\r\n\t}\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Range = acequire(\"../range\").Range;\r\n\tvar FoldLine = acequire(\"./fold_line\").FoldLine;\r\n\tvar Fold = acequire(\"./fold\").Fold;\r\n\tvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\r\n\r\n\tfunction Folding() {\r\n\t this.getFoldAt = function(row, column, side) {\r\n\t var foldLine = this.getFoldLine(row);\r\n\t if (!foldLine)\r\n\t return null;\r\n\r\n\t var folds = foldLine.folds;\r\n\t for (var i = 0; i < folds.length; i++) {\r\n\t var fold = folds[i];\r\n\t if (fold.range.contains(row, column)) {\r\n\t if (side == 1 && fold.range.isEnd(row, column)) {\r\n\t continue;\r\n\t } else if (side == -1 && fold.range.isStart(row, column)) {\r\n\t continue;\r\n\t }\r\n\t return fold;\r\n\t }\r\n\t }\r\n\t };\r\n\t this.getFoldsInRange = function(range) {\r\n\t var start = range.start;\r\n\t var end = range.end;\r\n\t var foldLines = this.$foldData;\r\n\t var foundFolds = [];\r\n\r\n\t start.column += 1;\r\n\t end.column -= 1;\r\n\r\n\t for (var i = 0; i < foldLines.length; i++) {\r\n\t var cmp = foldLines[i].range.compareRange(range);\r\n\t if (cmp == 2) {\r\n\t continue;\r\n\t }\r\n\t else if (cmp == -2) {\r\n\t break;\r\n\t }\r\n\r\n\t var folds = foldLines[i].folds;\r\n\t for (var j = 0; j < folds.length; j++) {\r\n\t var fold = folds[j];\r\n\t cmp = fold.range.compareRange(range);\r\n\t if (cmp == -2) {\r\n\t break;\r\n\t } else if (cmp == 2) {\r\n\t continue;\r\n\t } else\r\n\t if (cmp == 42) {\r\n\t break;\r\n\t }\r\n\t foundFolds.push(fold);\r\n\t }\r\n\t }\r\n\t start.column -= 1;\r\n\t end.column += 1;\r\n\r\n\t return foundFolds;\r\n\t };\r\n\r\n\t this.getFoldsInRangeList = function(ranges) {\r\n\t if (Array.isArray(ranges)) {\r\n\t var folds = [];\r\n\t ranges.forEach(function(range) {\r\n\t folds = folds.concat(this.getFoldsInRange(range));\r\n\t }, this);\r\n\t } else {\r\n\t var folds = this.getFoldsInRange(ranges);\r\n\t }\r\n\t return folds;\r\n\t };\r\n\t this.getAllFolds = function() {\r\n\t var folds = [];\r\n\t var foldLines = this.$foldData;\r\n\t \r\n\t for (var i = 0; i < foldLines.length; i++)\r\n\t for (var j = 0; j < foldLines[i].folds.length; j++)\r\n\t folds.push(foldLines[i].folds[j]);\r\n\r\n\t return folds;\r\n\t };\r\n\t this.getFoldStringAt = function(row, column, trim, foldLine) {\r\n\t foldLine = foldLine || this.getFoldLine(row);\r\n\t if (!foldLine)\r\n\t return null;\r\n\r\n\t var lastFold = {\r\n\t end: { column: 0 }\r\n\t };\r\n\t var str, fold;\r\n\t for (var i = 0; i < foldLine.folds.length; i++) {\r\n\t fold = foldLine.folds[i];\r\n\t var cmp = fold.range.compareEnd(row, column);\r\n\t if (cmp == -1) {\r\n\t str = this\r\n\t .getLine(fold.start.row)\r\n\t .substring(lastFold.end.column, fold.start.column);\r\n\t break;\r\n\t }\r\n\t else if (cmp === 0) {\r\n\t return null;\r\n\t }\r\n\t lastFold = fold;\r\n\t }\r\n\t if (!str)\r\n\t str = this.getLine(fold.start.row).substring(lastFold.end.column);\r\n\r\n\t if (trim == -1)\r\n\t return str.substring(0, column - lastFold.end.column);\r\n\t else if (trim == 1)\r\n\t return str.substring(column - lastFold.end.column);\r\n\t else\r\n\t return str;\r\n\t };\r\n\r\n\t this.getFoldLine = function(docRow, startFoldLine) {\r\n\t var foldData = this.$foldData;\r\n\t var i = 0;\r\n\t if (startFoldLine)\r\n\t i = foldData.indexOf(startFoldLine);\r\n\t if (i == -1)\r\n\t i = 0;\r\n\t for (i; i < foldData.length; i++) {\r\n\t var foldLine = foldData[i];\r\n\t if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\r\n\t return foldLine;\r\n\t } else if (foldLine.end.row > docRow) {\r\n\t return null;\r\n\t }\r\n\t }\r\n\t return null;\r\n\t };\r\n\t this.getNextFoldLine = function(docRow, startFoldLine) {\r\n\t var foldData = this.$foldData;\r\n\t var i = 0;\r\n\t if (startFoldLine)\r\n\t i = foldData.indexOf(startFoldLine);\r\n\t if (i == -1)\r\n\t i = 0;\r\n\t for (i; i < foldData.length; i++) {\r\n\t var foldLine = foldData[i];\r\n\t if (foldLine.end.row >= docRow) {\r\n\t return foldLine;\r\n\t }\r\n\t }\r\n\t return null;\r\n\t };\r\n\r\n\t this.getFoldedRowCount = function(first, last) {\r\n\t var foldData = this.$foldData, rowCount = last-first+1;\r\n\t for (var i = 0; i < foldData.length; i++) {\r\n\t var foldLine = foldData[i],\r\n\t end = foldLine.end.row,\r\n\t start = foldLine.start.row;\r\n\t if (end >= last) {\r\n\t if (start < last) {\r\n\t if (start >= first)\r\n\t rowCount -= last-start;\r\n\t else\r\n\t rowCount = 0; // in one fold\r\n\t }\r\n\t break;\r\n\t } else if (end >= first){\r\n\t if (start >= first) // fold inside range\r\n\t rowCount -= end-start;\r\n\t else\r\n\t rowCount -= end-first+1;\r\n\t }\r\n\t }\r\n\t return rowCount;\r\n\t };\r\n\r\n\t this.$addFoldLine = function(foldLine) {\r\n\t this.$foldData.push(foldLine);\r\n\t this.$foldData.sort(function(a, b) {\r\n\t return a.start.row - b.start.row;\r\n\t });\r\n\t return foldLine;\r\n\t };\r\n\t this.addFold = function(placeholder, range) {\r\n\t var foldData = this.$foldData;\r\n\t var added = false;\r\n\t var fold;\r\n\t \r\n\t if (placeholder instanceof Fold)\r\n\t fold = placeholder;\r\n\t else {\r\n\t fold = new Fold(range, placeholder);\r\n\t fold.collapseChildren = range.collapseChildren;\r\n\t }\r\n\t this.$clipRangeToDocument(fold.range);\r\n\r\n\t var startRow = fold.start.row;\r\n\t var startColumn = fold.start.column;\r\n\t var endRow = fold.end.row;\r\n\t var endColumn = fold.end.column;\r\n\t if (!(startRow < endRow || \r\n\t startRow == endRow && startColumn <= endColumn - 2))\r\n\t throw new Error(\"The range has to be at least 2 characters width\");\r\n\r\n\t var startFold = this.getFoldAt(startRow, startColumn, 1);\r\n\t var endFold = this.getFoldAt(endRow, endColumn, -1);\r\n\t if (startFold && endFold == startFold)\r\n\t return startFold.addSubFold(fold);\r\n\r\n\t if (startFold && !startFold.range.isStart(startRow, startColumn))\r\n\t this.removeFold(startFold);\r\n\t \r\n\t if (endFold && !endFold.range.isEnd(endRow, endColumn))\r\n\t this.removeFold(endFold);\r\n\t var folds = this.getFoldsInRange(fold.range);\r\n\t if (folds.length > 0) {\r\n\t this.removeFolds(folds);\r\n\t folds.forEach(function(subFold) {\r\n\t fold.addSubFold(subFold);\r\n\t });\r\n\t }\r\n\r\n\t for (var i = 0; i < foldData.length; i++) {\r\n\t var foldLine = foldData[i];\r\n\t if (endRow == foldLine.start.row) {\r\n\t foldLine.addFold(fold);\r\n\t added = true;\r\n\t break;\r\n\t } else if (startRow == foldLine.end.row) {\r\n\t foldLine.addFold(fold);\r\n\t added = true;\r\n\t if (!fold.sameRow) {\r\n\t var foldLineNext = foldData[i + 1];\r\n\t if (foldLineNext && foldLineNext.start.row == endRow) {\r\n\t foldLine.merge(foldLineNext);\r\n\t break;\r\n\t }\r\n\t }\r\n\t break;\r\n\t } else if (endRow <= foldLine.start.row) {\r\n\t break;\r\n\t }\r\n\t }\r\n\r\n\t if (!added)\r\n\t foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\r\n\r\n\t if (this.$useWrapMode)\r\n\t this.$updateWrapData(foldLine.start.row, foldLine.start.row);\r\n\t else\r\n\t this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\r\n\t this.$modified = true;\r\n\t this._signal(\"changeFold\", { data: fold, action: \"add\" });\r\n\r\n\t return fold;\r\n\t };\r\n\r\n\t this.addFolds = function(folds) {\r\n\t folds.forEach(function(fold) {\r\n\t this.addFold(fold);\r\n\t }, this);\r\n\t };\r\n\r\n\t this.removeFold = function(fold) {\r\n\t var foldLine = fold.foldLine;\r\n\t var startRow = foldLine.start.row;\r\n\t var endRow = foldLine.end.row;\r\n\r\n\t var foldLines = this.$foldData;\r\n\t var folds = foldLine.folds;\r\n\t if (folds.length == 1) {\r\n\t foldLines.splice(foldLines.indexOf(foldLine), 1);\r\n\t } else\r\n\t if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\r\n\t folds.pop();\r\n\t foldLine.end.row = folds[folds.length - 1].end.row;\r\n\t foldLine.end.column = folds[folds.length - 1].end.column;\r\n\t } else\r\n\t if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\r\n\t folds.shift();\r\n\t foldLine.start.row = folds[0].start.row;\r\n\t foldLine.start.column = folds[0].start.column;\r\n\t } else\r\n\t if (fold.sameRow) {\r\n\t folds.splice(folds.indexOf(fold), 1);\r\n\t } else\r\n\t {\r\n\t var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\r\n\t folds = newFoldLine.folds;\r\n\t folds.shift();\r\n\t newFoldLine.start.row = folds[0].start.row;\r\n\t newFoldLine.start.column = folds[0].start.column;\r\n\t }\r\n\r\n\t if (!this.$updating) {\r\n\t if (this.$useWrapMode)\r\n\t this.$updateWrapData(startRow, endRow);\r\n\t else\r\n\t this.$updateRowLengthCache(startRow, endRow);\r\n\t }\r\n\t this.$modified = true;\r\n\t this._signal(\"changeFold\", { data: fold, action: \"remove\" });\r\n\t };\r\n\r\n\t this.removeFolds = function(folds) {\r\n\t var cloneFolds = [];\r\n\t for (var i = 0; i < folds.length; i++) {\r\n\t cloneFolds.push(folds[i]);\r\n\t }\r\n\r\n\t cloneFolds.forEach(function(fold) {\r\n\t this.removeFold(fold);\r\n\t }, this);\r\n\t this.$modified = true;\r\n\t };\r\n\r\n\t this.expandFold = function(fold) {\r\n\t this.removeFold(fold);\r\n\t fold.subFolds.forEach(function(subFold) {\r\n\t fold.restoreRange(subFold);\r\n\t this.addFold(subFold);\r\n\t }, this);\r\n\t if (fold.collapseChildren > 0) {\r\n\t this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1);\r\n\t }\r\n\t fold.subFolds = [];\r\n\t };\r\n\r\n\t this.expandFolds = function(folds) {\r\n\t folds.forEach(function(fold) {\r\n\t this.expandFold(fold);\r\n\t }, this);\r\n\t };\r\n\r\n\t this.unfold = function(location, expandInner) {\r\n\t var range, folds;\r\n\t if (location == null) {\r\n\t range = new Range(0, 0, this.getLength(), 0);\r\n\t expandInner = true;\r\n\t } else if (typeof location == \"number\")\r\n\t range = new Range(location, 0, location, this.getLine(location).length);\r\n\t else if (\"row\" in location)\r\n\t range = Range.fromPoints(location, location);\r\n\t else\r\n\t range = location;\r\n\t \r\n\t folds = this.getFoldsInRangeList(range);\r\n\t if (expandInner) {\r\n\t this.removeFolds(folds);\r\n\t } else {\r\n\t var subFolds = folds;\r\n\t while (subFolds.length) {\r\n\t this.expandFolds(subFolds);\r\n\t subFolds = this.getFoldsInRangeList(range);\r\n\t }\r\n\t }\r\n\t if (folds.length)\r\n\t return folds;\r\n\t };\r\n\t this.isRowFolded = function(docRow, startFoldRow) {\r\n\t return !!this.getFoldLine(docRow, startFoldRow);\r\n\t };\r\n\r\n\t this.getRowFoldEnd = function(docRow, startFoldRow) {\r\n\t var foldLine = this.getFoldLine(docRow, startFoldRow);\r\n\t return foldLine ? foldLine.end.row : docRow;\r\n\t };\r\n\r\n\t this.getRowFoldStart = function(docRow, startFoldRow) {\r\n\t var foldLine = this.getFoldLine(docRow, startFoldRow);\r\n\t return foldLine ? foldLine.start.row : docRow;\r\n\t };\r\n\r\n\t this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) {\r\n\t if (startRow == null)\r\n\t startRow = foldLine.start.row;\r\n\t if (startColumn == null)\r\n\t startColumn = 0;\r\n\t if (endRow == null)\r\n\t endRow = foldLine.end.row;\r\n\t if (endColumn == null)\r\n\t endColumn = this.getLine(endRow).length;\r\n\t var doc = this.doc;\r\n\t var textLine = \"\";\r\n\r\n\t foldLine.walk(function(placeholder, row, column, lastColumn) {\r\n\t if (row < startRow)\r\n\t return;\r\n\t if (row == startRow) {\r\n\t if (column < startColumn)\r\n\t return;\r\n\t lastColumn = Math.max(startColumn, lastColumn);\r\n\t }\r\n\r\n\t if (placeholder != null) {\r\n\t textLine += placeholder;\r\n\t } else {\r\n\t textLine += doc.getLine(row).substring(lastColumn, column);\r\n\t }\r\n\t }, endRow, endColumn);\r\n\t return textLine;\r\n\t };\r\n\r\n\t this.getDisplayLine = function(row, endColumn, startRow, startColumn) {\r\n\t var foldLine = this.getFoldLine(row);\r\n\r\n\t if (!foldLine) {\r\n\t var line;\r\n\t line = this.doc.getLine(row);\r\n\t return line.substring(startColumn || 0, endColumn || line.length);\r\n\t } else {\r\n\t return this.getFoldDisplayLine(\r\n\t foldLine, row, endColumn, startRow, startColumn);\r\n\t }\r\n\t };\r\n\r\n\t this.$cloneFoldData = function() {\r\n\t var fd = [];\r\n\t fd = this.$foldData.map(function(foldLine) {\r\n\t var folds = foldLine.folds.map(function(fold) {\r\n\t return fold.clone();\r\n\t });\r\n\t return new FoldLine(fd, folds);\r\n\t });\r\n\r\n\t return fd;\r\n\t };\r\n\r\n\t this.toggleFold = function(tryToUnfold) {\r\n\t var selection = this.selection;\r\n\t var range = selection.getRange();\r\n\t var fold;\r\n\t var bracketPos;\r\n\r\n\t if (range.isEmpty()) {\r\n\t var cursor = range.start;\r\n\t fold = this.getFoldAt(cursor.row, cursor.column);\r\n\r\n\t if (fold) {\r\n\t this.expandFold(fold);\r\n\t return;\r\n\t } else if (bracketPos = this.findMatchingBracket(cursor)) {\r\n\t if (range.comparePoint(bracketPos) == 1) {\r\n\t range.end = bracketPos;\r\n\t } else {\r\n\t range.start = bracketPos;\r\n\t range.start.column++;\r\n\t range.end.column--;\r\n\t }\r\n\t } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) {\r\n\t if (range.comparePoint(bracketPos) == 1)\r\n\t range.end = bracketPos;\r\n\t else\r\n\t range.start = bracketPos;\r\n\r\n\t range.start.column++;\r\n\t } else {\r\n\t range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\r\n\t }\r\n\t } else {\r\n\t var folds = this.getFoldsInRange(range);\r\n\t if (tryToUnfold && folds.length) {\r\n\t this.expandFolds(folds);\r\n\t return;\r\n\t } else if (folds.length == 1 ) {\r\n\t fold = folds[0];\r\n\t }\r\n\t }\r\n\r\n\t if (!fold)\r\n\t fold = this.getFoldAt(range.start.row, range.start.column);\r\n\r\n\t if (fold && fold.range.toString() == range.toString()) {\r\n\t this.expandFold(fold);\r\n\t return;\r\n\t }\r\n\r\n\t var placeholder = \"...\";\r\n\t if (!range.isMultiLine()) {\r\n\t placeholder = this.getTextRange(range);\r\n\t if (placeholder.length < 4)\r\n\t return;\r\n\t placeholder = placeholder.trim().substring(0, 2) + \"..\";\r\n\t }\r\n\r\n\t this.addFold(placeholder, range);\r\n\t };\r\n\r\n\t this.getCommentFoldRange = function(row, column, dir) {\r\n\t var iterator = new TokenIterator(this, row, column);\r\n\t var token = iterator.getCurrentToken();\r\n\t if (token && /^comment|string/.test(token.type)) {\r\n\t var range = new Range();\r\n\t var re = new RegExp(token.type.replace(/\\..*/, \"\\\\.\"));\r\n\t if (dir != 1) {\r\n\t do {\r\n\t token = iterator.stepBackward();\r\n\t } while (token && re.test(token.type));\r\n\t iterator.stepForward();\r\n\t }\r\n\t \r\n\t range.start.row = iterator.getCurrentTokenRow();\r\n\t range.start.column = iterator.getCurrentTokenColumn() + 2;\r\n\r\n\t iterator = new TokenIterator(this, row, column);\r\n\t \r\n\t if (dir != -1) {\r\n\t do {\r\n\t token = iterator.stepForward();\r\n\t } while (token && re.test(token.type));\r\n\t token = iterator.stepBackward();\r\n\t } else\r\n\t token = iterator.getCurrentToken();\r\n\r\n\t range.end.row = iterator.getCurrentTokenRow();\r\n\t range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2;\r\n\t return range;\r\n\t }\r\n\t };\r\n\r\n\t this.foldAll = function(startRow, endRow, depth) {\r\n\t if (depth == undefined)\r\n\t depth = 100000; // JSON.stringify doesn't hanle Infinity\r\n\t var foldWidgets = this.foldWidgets;\r\n\t if (!foldWidgets)\r\n\t return; // mode doesn't support folding\r\n\t endRow = endRow || this.getLength();\r\n\t startRow = startRow || 0;\r\n\t for (var row = startRow; row < endRow; row++) {\r\n\t if (foldWidgets[row] == null)\r\n\t foldWidgets[row] = this.getFoldWidget(row);\r\n\t if (foldWidgets[row] != \"start\")\r\n\t continue;\r\n\r\n\t var range = this.getFoldWidgetRange(row);\r\n\t if (range && range.isMultiLine()\r\n\t && range.end.row <= endRow\r\n\t && range.start.row >= startRow\r\n\t ) {\r\n\t row = range.end.row;\r\n\t try {\r\n\t var fold = this.addFold(\"...\", range);\r\n\t if (fold)\r\n\t fold.collapseChildren = depth;\r\n\t } catch(e) {}\r\n\t }\r\n\t }\r\n\t };\r\n\t this.$foldStyles = {\r\n\t \"manual\": 1,\r\n\t \"markbegin\": 1,\r\n\t \"markbeginend\": 1\r\n\t };\r\n\t this.$foldStyle = \"markbegin\";\r\n\t this.setFoldStyle = function(style) {\r\n\t if (!this.$foldStyles[style])\r\n\t throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\r\n\t \r\n\t if (this.$foldStyle == style)\r\n\t return;\r\n\r\n\t this.$foldStyle = style;\r\n\t \r\n\t if (style == \"manual\")\r\n\t this.unfold();\r\n\t var mode = this.$foldMode;\r\n\t this.$setFolding(null);\r\n\t this.$setFolding(mode);\r\n\t };\r\n\r\n\t this.$setFolding = function(foldMode) {\r\n\t if (this.$foldMode == foldMode)\r\n\t return;\r\n\t \r\n\t this.$foldMode = foldMode;\r\n\t \r\n\t this.off('change', this.$updateFoldWidgets);\r\n\t this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\r\n\t this._signal(\"changeAnnotation\");\r\n\t \r\n\t if (!foldMode || this.$foldStyle == \"manual\") {\r\n\t this.foldWidgets = null;\r\n\t return;\r\n\t }\r\n\t \r\n\t this.foldWidgets = [];\r\n\t this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\r\n\t this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\r\n\t \r\n\t this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\r\n\t this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\r\n\t this.on('change', this.$updateFoldWidgets);\r\n\t this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\r\n\t };\r\n\r\n\t this.getParentFoldRangeData = function (row, ignoreCurrent) {\r\n\t var fw = this.foldWidgets;\r\n\t if (!fw || (ignoreCurrent && fw[row]))\r\n\t return {};\r\n\r\n\t var i = row - 1, firstRange;\r\n\t while (i >= 0) {\r\n\t var c = fw[i];\r\n\t if (c == null)\r\n\t c = fw[i] = this.getFoldWidget(i);\r\n\r\n\t if (c == \"start\") {\r\n\t var range = this.getFoldWidgetRange(i);\r\n\t if (!firstRange)\r\n\t firstRange = range;\r\n\t if (range && range.end.row >= row)\r\n\t break;\r\n\t }\r\n\t i--;\r\n\t }\r\n\r\n\t return {\r\n\t range: i !== -1 && range,\r\n\t firstRange: firstRange\r\n\t };\r\n\t };\r\n\r\n\t this.onFoldWidgetClick = function(row, e) {\r\n\t e = e.domEvent;\r\n\t var options = {\r\n\t children: e.shiftKey,\r\n\t all: e.ctrlKey || e.metaKey,\r\n\t siblings: e.altKey\r\n\t };\r\n\t \r\n\t var range = this.$toggleFoldWidget(row, options);\r\n\t if (!range) {\r\n\t var el = (e.target || e.srcElement);\r\n\t if (el && /ace_fold-widget/.test(el.className))\r\n\t el.className += \" ace_invalid\";\r\n\t }\r\n\t };\r\n\t \r\n\t this.$toggleFoldWidget = function(row, options) {\r\n\t if (!this.getFoldWidget)\r\n\t return;\r\n\t var type = this.getFoldWidget(row);\r\n\t var line = this.getLine(row);\r\n\r\n\t var dir = type === \"end\" ? -1 : 1;\r\n\t var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\r\n\r\n\t if (fold) {\r\n\t if (options.children || options.all)\r\n\t this.removeFold(fold);\r\n\t else\r\n\t this.expandFold(fold);\r\n\t return;\r\n\t }\r\n\r\n\t var range = this.getFoldWidgetRange(row, true);\r\n\t if (range && !range.isMultiLine()) {\r\n\t fold = this.getFoldAt(range.start.row, range.start.column, 1);\r\n\t if (fold && range.isEqual(fold.range)) {\r\n\t this.removeFold(fold);\r\n\t return;\r\n\t }\r\n\t }\r\n\t \r\n\t if (options.siblings) {\r\n\t var data = this.getParentFoldRangeData(row);\r\n\t if (data.range) {\r\n\t var startRow = data.range.start.row + 1;\r\n\t var endRow = data.range.end.row;\r\n\t }\r\n\t this.foldAll(startRow, endRow, options.all ? 10000 : 0);\r\n\t } else if (options.children) {\r\n\t endRow = range ? range.end.row : this.getLength();\r\n\t this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\r\n\t } else if (range) {\r\n\t if (options.all) \r\n\t range.collapseChildren = 10000;\r\n\t this.addFold(\"...\", range);\r\n\t }\r\n\t \r\n\t return range;\r\n\t };\r\n\t \r\n\t \r\n\t \r\n\t this.toggleFoldWidget = function(toggleParent) {\r\n\t var row = this.selection.getCursor().row;\r\n\t row = this.getRowFoldStart(row);\r\n\t var range = this.$toggleFoldWidget(row, {});\r\n\t \r\n\t if (range)\r\n\t return;\r\n\t var data = this.getParentFoldRangeData(row, true);\r\n\t range = data.range || data.firstRange;\r\n\t \r\n\t if (range) {\r\n\t row = range.start.row;\r\n\t var fold = this.getFoldAt(row, this.getLine(row).length, 1);\r\n\r\n\t if (fold) {\r\n\t this.removeFold(fold);\r\n\t } else {\r\n\t this.addFold(\"...\", range);\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t this.updateFoldWidgets = function(delta) {\r\n\t var firstRow = delta.start.row;\r\n\t var len = delta.end.row - firstRow;\r\n\r\n\t if (len === 0) {\r\n\t this.foldWidgets[firstRow] = null;\r\n\t } else if (delta.action == 'remove') {\r\n\t this.foldWidgets.splice(firstRow, len + 1, null);\r\n\t } else {\r\n\t var args = Array(len + 1);\r\n\t args.unshift(firstRow, 1);\r\n\t this.foldWidgets.splice.apply(this.foldWidgets, args);\r\n\t }\r\n\t };\r\n\t this.tokenizerUpdateFoldWidgets = function(e) {\r\n\t var rows = e.data;\r\n\t if (rows.first != rows.last) {\r\n\t if (this.foldWidgets.length > rows.first)\r\n\t this.foldWidgets.splice(rows.first, this.foldWidgets.length);\r\n\t }\r\n\t };\r\n\t}\r\n\r\n\texports.Folding = Folding;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\r\n\tvar Range = acequire(\"../range\").Range;\r\n\r\n\r\n\tfunction BracketMatch() {\r\n\r\n\t this.findMatchingBracket = function(position, chr) {\r\n\t if (position.column == 0) return null;\r\n\r\n\t var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1);\r\n\t if (charBeforeCursor == \"\") return null;\r\n\r\n\t var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\r\n\t if (!match)\r\n\t return null;\r\n\r\n\t if (match[1])\r\n\t return this.$findClosingBracket(match[1], position);\r\n\t else\r\n\t return this.$findOpeningBracket(match[2], position);\r\n\t };\r\n\t \r\n\t this.getBracketRange = function(pos) {\r\n\t var line = this.getLine(pos.row);\r\n\t var before = true, range;\r\n\r\n\t var chr = line.charAt(pos.column-1);\r\n\t var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\r\n\t if (!match) {\r\n\t chr = line.charAt(pos.column);\r\n\t pos = {row: pos.row, column: pos.column + 1};\r\n\t match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\r\n\t before = false;\r\n\t }\r\n\t if (!match)\r\n\t return null;\r\n\r\n\t if (match[1]) {\r\n\t var bracketPos = this.$findClosingBracket(match[1], pos);\r\n\t if (!bracketPos)\r\n\t return null;\r\n\t range = Range.fromPoints(pos, bracketPos);\r\n\t if (!before) {\r\n\t range.end.column++;\r\n\t range.start.column--;\r\n\t }\r\n\t range.cursor = range.end;\r\n\t } else {\r\n\t var bracketPos = this.$findOpeningBracket(match[2], pos);\r\n\t if (!bracketPos)\r\n\t return null;\r\n\t range = Range.fromPoints(bracketPos, pos);\r\n\t if (!before) {\r\n\t range.start.column++;\r\n\t range.end.column--;\r\n\t }\r\n\t range.cursor = range.start;\r\n\t }\r\n\t \r\n\t return range;\r\n\t };\r\n\r\n\t this.$brackets = {\r\n\t \")\": \"(\",\r\n\t \"(\": \")\",\r\n\t \"]\": \"[\",\r\n\t \"[\": \"]\",\r\n\t \"{\": \"}\",\r\n\t \"}\": \"{\"\r\n\t };\r\n\r\n\t this.$findOpeningBracket = function(bracket, position, typeRe) {\r\n\t var openBracket = this.$brackets[bracket];\r\n\t var depth = 1;\r\n\r\n\t var iterator = new TokenIterator(this, position.row, position.column);\r\n\t var token = iterator.getCurrentToken();\r\n\t if (!token)\r\n\t token = iterator.stepForward();\r\n\t if (!token)\r\n\t return;\r\n\t \r\n\t if (!typeRe){\r\n\t typeRe = new RegExp(\r\n\t \"(\\\\.?\" +\r\n\t token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\r\n\t .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\r\n\t + \")+\"\r\n\t );\r\n\t }\r\n\t var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\r\n\t var value = token.value;\r\n\t \r\n\t while (true) {\r\n\t \r\n\t while (valueIndex >= 0) {\r\n\t var chr = value.charAt(valueIndex);\r\n\t if (chr == openBracket) {\r\n\t depth -= 1;\r\n\t if (depth == 0) {\r\n\t return {row: iterator.getCurrentTokenRow(),\r\n\t column: valueIndex + iterator.getCurrentTokenColumn()};\r\n\t }\r\n\t }\r\n\t else if (chr == bracket) {\r\n\t depth += 1;\r\n\t }\r\n\t valueIndex -= 1;\r\n\t }\r\n\t do {\r\n\t token = iterator.stepBackward();\r\n\t } while (token && !typeRe.test(token.type));\r\n\r\n\t if (token == null)\r\n\t break;\r\n\t \r\n\t value = token.value;\r\n\t valueIndex = value.length - 1;\r\n\t }\r\n\t \r\n\t return null;\r\n\t };\r\n\r\n\t this.$findClosingBracket = function(bracket, position, typeRe) {\r\n\t var closingBracket = this.$brackets[bracket];\r\n\t var depth = 1;\r\n\r\n\t var iterator = new TokenIterator(this, position.row, position.column);\r\n\t var token = iterator.getCurrentToken();\r\n\t if (!token)\r\n\t token = iterator.stepForward();\r\n\t if (!token)\r\n\t return;\r\n\r\n\t if (!typeRe){\r\n\t typeRe = new RegExp(\r\n\t \"(\\\\.?\" +\r\n\t token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\r\n\t .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\r\n\t + \")+\"\r\n\t );\r\n\t }\r\n\t var valueIndex = position.column - iterator.getCurrentTokenColumn();\r\n\r\n\t while (true) {\r\n\r\n\t var value = token.value;\r\n\t var valueLength = value.length;\r\n\t while (valueIndex < valueLength) {\r\n\t var chr = value.charAt(valueIndex);\r\n\t if (chr == closingBracket) {\r\n\t depth -= 1;\r\n\t if (depth == 0) {\r\n\t return {row: iterator.getCurrentTokenRow(),\r\n\t column: valueIndex + iterator.getCurrentTokenColumn()};\r\n\t }\r\n\t }\r\n\t else if (chr == bracket) {\r\n\t depth += 1;\r\n\t }\r\n\t valueIndex += 1;\r\n\t }\r\n\t do {\r\n\t token = iterator.stepForward();\r\n\t } while (token && !typeRe.test(token.type));\r\n\r\n\t if (token == null)\r\n\t break;\r\n\r\n\t valueIndex = 0;\r\n\t }\r\n\t \r\n\t return null;\r\n\t };\r\n\t}\r\n\texports.BracketMatch = BracketMatch;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar lang = acequire(\"./lib/lang\");\r\n\tvar config = acequire(\"./config\");\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\tvar Selection = acequire(\"./selection\").Selection;\r\n\tvar TextMode = acequire(\"./mode/text\").Mode;\r\n\tvar Range = acequire(\"./range\").Range;\r\n\tvar Document = acequire(\"./document\").Document;\r\n\tvar BackgroundTokenizer = acequire(\"./background_tokenizer\").BackgroundTokenizer;\r\n\tvar SearchHighlight = acequire(\"./search_highlight\").SearchHighlight;\r\n\r\n\tvar EditSession = function(text, mode) {\r\n\t this.$breakpoints = [];\r\n\t this.$decorations = [];\r\n\t this.$frontMarkers = {};\r\n\t this.$backMarkers = {};\r\n\t this.$markerId = 1;\r\n\t this.$undoSelect = true;\r\n\r\n\t this.$foldData = [];\r\n\t this.$foldData.toString = function() {\r\n\t return this.join(\"\\n\");\r\n\t };\r\n\t this.on(\"changeFold\", this.onChangeFold.bind(this));\r\n\t this.$onChange = this.onChange.bind(this);\r\n\r\n\t if (typeof text != \"object\" || !text.getLine)\r\n\t text = new Document(text);\r\n\r\n\t this.setDocument(text);\r\n\t this.selection = new Selection(this);\r\n\r\n\t config.resetOptions(this);\r\n\t this.setMode(mode);\r\n\t config._signal(\"session\", this);\r\n\t};\r\n\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\t this.setDocument = function(doc) {\r\n\t if (this.doc)\r\n\t this.doc.removeListener(\"change\", this.$onChange);\r\n\r\n\t this.doc = doc;\r\n\t doc.on(\"change\", this.$onChange);\r\n\r\n\t if (this.bgTokenizer)\r\n\t this.bgTokenizer.setDocument(this.getDocument());\r\n\r\n\t this.resetCaches();\r\n\t };\r\n\t this.getDocument = function() {\r\n\t return this.doc;\r\n\t };\r\n\t this.$resetRowCache = function(docRow) {\r\n\t if (!docRow) {\r\n\t this.$docRowCache = [];\r\n\t this.$screenRowCache = [];\r\n\t return;\r\n\t }\r\n\t var l = this.$docRowCache.length;\r\n\t var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\r\n\t if (l > i) {\r\n\t this.$docRowCache.splice(i, l);\r\n\t this.$screenRowCache.splice(i, l);\r\n\t }\r\n\t };\r\n\r\n\t this.$getRowCacheIndex = function(cacheArray, val) {\r\n\t var low = 0;\r\n\t var hi = cacheArray.length - 1;\r\n\r\n\t while (low <= hi) {\r\n\t var mid = (low + hi) >> 1;\r\n\t var c = cacheArray[mid];\r\n\r\n\t if (val > c)\r\n\t low = mid + 1;\r\n\t else if (val < c)\r\n\t hi = mid - 1;\r\n\t else\r\n\t return mid;\r\n\t }\r\n\r\n\t return low -1;\r\n\t };\r\n\r\n\t this.resetCaches = function() {\r\n\t this.$modified = true;\r\n\t this.$wrapData = [];\r\n\t this.$rowLengthCache = [];\r\n\t this.$resetRowCache(0);\r\n\t if (this.bgTokenizer)\r\n\t this.bgTokenizer.start(0);\r\n\t };\r\n\r\n\t this.onChangeFold = function(e) {\r\n\t var fold = e.data;\r\n\t this.$resetRowCache(fold.start.row);\r\n\t };\r\n\r\n\t this.onChange = function(delta) {\r\n\t this.$modified = true;\r\n\r\n\t this.$resetRowCache(delta.start.row);\r\n\r\n\t var removedFolds = this.$updateInternalDataOnChange(delta);\r\n\t if (!this.$fromUndo && this.$undoManager && !delta.ignore) {\r\n\t this.$deltasDoc.push(delta);\r\n\t if (removedFolds && removedFolds.length != 0) {\r\n\t this.$deltasFold.push({\r\n\t action: \"removeFolds\",\r\n\t folds: removedFolds\r\n\t });\r\n\t }\r\n\r\n\t this.$informUndoManager.schedule();\r\n\t }\r\n\r\n\t this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta);\r\n\t this._signal(\"change\", delta);\r\n\t };\r\n\t this.setValue = function(text) {\r\n\t this.doc.setValue(text);\r\n\t this.selection.moveTo(0, 0);\r\n\r\n\t this.$resetRowCache(0);\r\n\t this.$deltas = [];\r\n\t this.$deltasDoc = [];\r\n\t this.$deltasFold = [];\r\n\t this.setUndoManager(this.$undoManager);\r\n\t this.getUndoManager().reset();\r\n\t };\r\n\t this.getValue =\r\n\t this.toString = function() {\r\n\t return this.doc.getValue();\r\n\t };\r\n\t this.getSelection = function() {\r\n\t return this.selection;\r\n\t };\r\n\t this.getState = function(row) {\r\n\t return this.bgTokenizer.getState(row);\r\n\t };\r\n\t this.getTokens = function(row) {\r\n\t return this.bgTokenizer.getTokens(row);\r\n\t };\r\n\t this.getTokenAt = function(row, column) {\r\n\t var tokens = this.bgTokenizer.getTokens(row);\r\n\t var token, c = 0;\r\n\t if (column == null) {\r\n\t i = tokens.length - 1;\r\n\t c = this.getLine(row).length;\r\n\t } else {\r\n\t for (var i = 0; i < tokens.length; i++) {\r\n\t c += tokens[i].value.length;\r\n\t if (c >= column)\r\n\t break;\r\n\t }\r\n\t }\r\n\t token = tokens[i];\r\n\t if (!token)\r\n\t return null;\r\n\t token.index = i;\r\n\t token.start = c - token.value.length;\r\n\t return token;\r\n\t };\r\n\t this.setUndoManager = function(undoManager) {\r\n\t this.$undoManager = undoManager;\r\n\t this.$deltas = [];\r\n\t this.$deltasDoc = [];\r\n\t this.$deltasFold = [];\r\n\r\n\t if (this.$informUndoManager)\r\n\t this.$informUndoManager.cancel();\r\n\r\n\t if (undoManager) {\r\n\t var self = this;\r\n\r\n\t this.$syncInformUndoManager = function() {\r\n\t self.$informUndoManager.cancel();\r\n\r\n\t if (self.$deltasFold.length) {\r\n\t self.$deltas.push({\r\n\t group: \"fold\",\r\n\t deltas: self.$deltasFold\r\n\t });\r\n\t self.$deltasFold = [];\r\n\t }\r\n\r\n\t if (self.$deltasDoc.length) {\r\n\t self.$deltas.push({\r\n\t group: \"doc\",\r\n\t deltas: self.$deltasDoc\r\n\t });\r\n\t self.$deltasDoc = [];\r\n\t }\r\n\r\n\t if (self.$deltas.length > 0) {\r\n\t undoManager.execute({\r\n\t action: \"aceupdate\",\r\n\t args: [self.$deltas, self],\r\n\t merge: self.mergeUndoDeltas\r\n\t });\r\n\t }\r\n\t self.mergeUndoDeltas = false;\r\n\t self.$deltas = [];\r\n\t };\r\n\t this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\r\n\t }\r\n\t };\r\n\t this.markUndoGroup = function() {\r\n\t if (this.$syncInformUndoManager)\r\n\t this.$syncInformUndoManager();\r\n\t };\r\n\t \r\n\t this.$defaultUndoManager = {\r\n\t undo: function() {},\r\n\t redo: function() {},\r\n\t reset: function() {}\r\n\t };\r\n\t this.getUndoManager = function() {\r\n\t return this.$undoManager || this.$defaultUndoManager;\r\n\t };\r\n\t this.getTabString = function() {\r\n\t if (this.getUseSoftTabs()) {\r\n\t return lang.stringRepeat(\" \", this.getTabSize());\r\n\t } else {\r\n\t return \"\\t\";\r\n\t }\r\n\t };\r\n\t this.setUseSoftTabs = function(val) {\r\n\t this.setOption(\"useSoftTabs\", val);\r\n\t };\r\n\t this.getUseSoftTabs = function() {\r\n\t return this.$useSoftTabs && !this.$mode.$indentWithTabs;\r\n\t };\r\n\t this.setTabSize = function(tabSize) {\r\n\t this.setOption(\"tabSize\", tabSize);\r\n\t };\r\n\t this.getTabSize = function() {\r\n\t return this.$tabSize;\r\n\t };\r\n\t this.isTabStop = function(position) {\r\n\t return this.$useSoftTabs && (position.column % this.$tabSize === 0);\r\n\t };\r\n\r\n\t this.$overwrite = false;\r\n\t this.setOverwrite = function(overwrite) {\r\n\t this.setOption(\"overwrite\", overwrite);\r\n\t };\r\n\t this.getOverwrite = function() {\r\n\t return this.$overwrite;\r\n\t };\r\n\t this.toggleOverwrite = function() {\r\n\t this.setOverwrite(!this.$overwrite);\r\n\t };\r\n\t this.addGutterDecoration = function(row, className) {\r\n\t if (!this.$decorations[row])\r\n\t this.$decorations[row] = \"\";\r\n\t this.$decorations[row] += \" \" + className;\r\n\t this._signal(\"changeBreakpoint\", {});\r\n\t };\r\n\t this.removeGutterDecoration = function(row, className) {\r\n\t this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\r\n\t this._signal(\"changeBreakpoint\", {});\r\n\t };\r\n\t this.getBreakpoints = function() {\r\n\t return this.$breakpoints;\r\n\t };\r\n\t this.setBreakpoints = function(rows) {\r\n\t this.$breakpoints = [];\r\n\t for (var i=0; i 0)\r\n\t inToken = !!line.charAt(column - 1).match(this.tokenRe);\r\n\r\n\t if (!inToken)\r\n\t inToken = !!line.charAt(column).match(this.tokenRe);\r\n\r\n\t if (inToken)\r\n\t var re = this.tokenRe;\r\n\t else if (/^\\s+$/.test(line.slice(column-1, column+1)))\r\n\t var re = /\\s/;\r\n\t else\r\n\t var re = this.nonTokenRe;\r\n\r\n\t var start = column;\r\n\t if (start > 0) {\r\n\t do {\r\n\t start--;\r\n\t }\r\n\t while (start >= 0 && line.charAt(start).match(re));\r\n\t start++;\r\n\t }\r\n\r\n\t var end = column;\r\n\t while (end < line.length && line.charAt(end).match(re)) {\r\n\t end++;\r\n\t }\r\n\r\n\t return new Range(row, start, row, end);\r\n\t };\r\n\t this.getAWordRange = function(row, column) {\r\n\t var wordRange = this.getWordRange(row, column);\r\n\t var line = this.getLine(wordRange.end.row);\r\n\r\n\t while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\r\n\t wordRange.end.column += 1;\r\n\t }\r\n\t return wordRange;\r\n\t };\r\n\t this.setNewLineMode = function(newLineMode) {\r\n\t this.doc.setNewLineMode(newLineMode);\r\n\t };\r\n\t this.getNewLineMode = function() {\r\n\t return this.doc.getNewLineMode();\r\n\t };\r\n\t this.setUseWorker = function(useWorker) { this.setOption(\"useWorker\", useWorker); };\r\n\t this.getUseWorker = function() { return this.$useWorker; };\r\n\t this.onReloadTokenizer = function(e) {\r\n\t var rows = e.data;\r\n\t this.bgTokenizer.start(rows.first);\r\n\t this._signal(\"tokenizerUpdate\", e);\r\n\t };\r\n\r\n\t this.$modes = {};\r\n\t this.$mode = null;\r\n\t this.$modeId = null;\r\n\t this.setMode = function(mode, cb) {\r\n\t if (mode && typeof mode === \"object\") {\r\n\t if (mode.getTokenizer)\r\n\t return this.$onChangeMode(mode);\r\n\t var options = mode;\r\n\t var path = options.path;\r\n\t } else {\r\n\t path = mode || \"ace/mode/text\";\r\n\t }\r\n\t if (!this.$modes[\"ace/mode/text\"])\r\n\t this.$modes[\"ace/mode/text\"] = new TextMode();\r\n\r\n\t if (this.$modes[path] && !options) {\r\n\t this.$onChangeMode(this.$modes[path]);\r\n\t cb && cb();\r\n\t return;\r\n\t }\r\n\t this.$modeId = path;\r\n\t config.loadModule([\"mode\", path], function(m) {\r\n\t if (this.$modeId !== path)\r\n\t return cb && cb();\r\n\t if (this.$modes[path] && !options) {\r\n\t this.$onChangeMode(this.$modes[path]);\r\n\t } else if (m && m.Mode) {\r\n\t m = new m.Mode(options);\r\n\t if (!options) {\r\n\t this.$modes[path] = m;\r\n\t m.$id = path;\r\n\t }\r\n\t this.$onChangeMode(m);\r\n\t }\r\n\t cb && cb();\r\n\t }.bind(this));\r\n\t if (!this.$mode)\r\n\t this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\r\n\t };\r\n\r\n\t this.$onChangeMode = function(mode, $isPlaceholder) {\r\n\t if (!$isPlaceholder)\r\n\t this.$modeId = mode.$id;\r\n\t if (this.$mode === mode) \r\n\t return;\r\n\r\n\t this.$mode = mode;\r\n\r\n\t this.$stopWorker();\r\n\r\n\t if (this.$useWorker)\r\n\t this.$startWorker();\r\n\r\n\t var tokenizer = mode.getTokenizer();\r\n\r\n\t if(tokenizer.addEventListener !== undefined) {\r\n\t var onReloadTokenizer = this.onReloadTokenizer.bind(this);\r\n\t tokenizer.addEventListener(\"update\", onReloadTokenizer);\r\n\t }\r\n\r\n\t if (!this.bgTokenizer) {\r\n\t this.bgTokenizer = new BackgroundTokenizer(tokenizer);\r\n\t var _self = this;\r\n\t this.bgTokenizer.addEventListener(\"update\", function(e) {\r\n\t _self._signal(\"tokenizerUpdate\", e);\r\n\t });\r\n\t } else {\r\n\t this.bgTokenizer.setTokenizer(tokenizer);\r\n\t }\r\n\r\n\t this.bgTokenizer.setDocument(this.getDocument());\r\n\r\n\t this.tokenRe = mode.tokenRe;\r\n\t this.nonTokenRe = mode.nonTokenRe;\r\n\r\n\t \r\n\t if (!$isPlaceholder) {\r\n\t if (mode.attachToSession)\r\n\t mode.attachToSession(this);\r\n\t this.$options.wrapMethod.set.call(this, this.$wrapMethod);\r\n\t this.$setFolding(mode.foldingRules);\r\n\t this.bgTokenizer.start(0);\r\n\t this._emit(\"changeMode\");\r\n\t }\r\n\t };\r\n\r\n\t this.$stopWorker = function() {\r\n\t if (this.$worker) {\r\n\t this.$worker.terminate();\r\n\t this.$worker = null;\r\n\t }\r\n\t };\r\n\r\n\t this.$startWorker = function() {\r\n\t try {\r\n\t this.$worker = this.$mode.createWorker(this);\r\n\t } catch (e) {\r\n\t config.warn(\"Could not load worker\", e);\r\n\t this.$worker = null;\r\n\t }\r\n\t };\r\n\t this.getMode = function() {\r\n\t return this.$mode;\r\n\t };\r\n\r\n\t this.$scrollTop = 0;\r\n\t this.setScrollTop = function(scrollTop) {\r\n\t if (this.$scrollTop === scrollTop || isNaN(scrollTop))\r\n\t return;\r\n\r\n\t this.$scrollTop = scrollTop;\r\n\t this._signal(\"changeScrollTop\", scrollTop);\r\n\t };\r\n\t this.getScrollTop = function() {\r\n\t return this.$scrollTop;\r\n\t };\r\n\r\n\t this.$scrollLeft = 0;\r\n\t this.setScrollLeft = function(scrollLeft) {\r\n\t if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\r\n\t return;\r\n\r\n\t this.$scrollLeft = scrollLeft;\r\n\t this._signal(\"changeScrollLeft\", scrollLeft);\r\n\t };\r\n\t this.getScrollLeft = function() {\r\n\t return this.$scrollLeft;\r\n\t };\r\n\t this.getScreenWidth = function() {\r\n\t this.$computeWidth();\r\n\t if (this.lineWidgets) \r\n\t return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\r\n\t return this.screenWidth;\r\n\t };\r\n\t \r\n\t this.getLineWidgetMaxWidth = function() {\r\n\t if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth;\r\n\t var width = 0;\r\n\t this.lineWidgets.forEach(function(w) {\r\n\t if (w && w.screenWidth > width)\r\n\t width = w.screenWidth;\r\n\t });\r\n\t return this.lineWidgetWidth = width;\r\n\t };\r\n\r\n\t this.$computeWidth = function(force) {\r\n\t if (this.$modified || force) {\r\n\t this.$modified = false;\r\n\r\n\t if (this.$useWrapMode)\r\n\t return this.screenWidth = this.$wrapLimit;\r\n\r\n\t var lines = this.doc.getAllLines();\r\n\t var cache = this.$rowLengthCache;\r\n\t var longestScreenLine = 0;\r\n\t var foldIndex = 0;\r\n\t var foldLine = this.$foldData[foldIndex];\r\n\t var foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\t var len = lines.length;\r\n\r\n\t for (var i = 0; i < len; i++) {\r\n\t if (i > foldStart) {\r\n\t i = foldLine.end.row + 1;\r\n\t if (i >= len)\r\n\t break;\r\n\t foldLine = this.$foldData[foldIndex++];\r\n\t foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\t }\r\n\r\n\t if (cache[i] == null)\r\n\t cache[i] = this.$getStringScreenWidth(lines[i])[0];\r\n\r\n\t if (cache[i] > longestScreenLine)\r\n\t longestScreenLine = cache[i];\r\n\t }\r\n\t this.screenWidth = longestScreenLine;\r\n\t }\r\n\t };\r\n\t this.getLine = function(row) {\r\n\t return this.doc.getLine(row);\r\n\t };\r\n\t this.getLines = function(firstRow, lastRow) {\r\n\t return this.doc.getLines(firstRow, lastRow);\r\n\t };\r\n\t this.getLength = function() {\r\n\t return this.doc.getLength();\r\n\t };\r\n\t this.getTextRange = function(range) {\r\n\t return this.doc.getTextRange(range || this.selection.getRange());\r\n\t };\r\n\t this.insert = function(position, text) {\r\n\t return this.doc.insert(position, text);\r\n\t };\r\n\t this.remove = function(range) {\r\n\t return this.doc.remove(range);\r\n\t };\r\n\t this.removeFullLines = function(firstRow, lastRow){\r\n\t return this.doc.removeFullLines(firstRow, lastRow);\r\n\t };\r\n\t this.undoChanges = function(deltas, dontSelect) {\r\n\t if (!deltas.length)\r\n\t return;\r\n\r\n\t this.$fromUndo = true;\r\n\t var lastUndoRange = null;\r\n\t for (var i = deltas.length - 1; i != -1; i--) {\r\n\t var delta = deltas[i];\r\n\t if (delta.group == \"doc\") {\r\n\t this.doc.revertDeltas(delta.deltas);\r\n\t lastUndoRange =\r\n\t this.$getUndoSelection(delta.deltas, true, lastUndoRange);\r\n\t } else {\r\n\t delta.deltas.forEach(function(foldDelta) {\r\n\t this.addFolds(foldDelta.folds);\r\n\t }, this);\r\n\t }\r\n\t }\r\n\t this.$fromUndo = false;\r\n\t lastUndoRange &&\r\n\t this.$undoSelect &&\r\n\t !dontSelect &&\r\n\t this.selection.setSelectionRange(lastUndoRange);\r\n\t return lastUndoRange;\r\n\t };\r\n\t this.redoChanges = function(deltas, dontSelect) {\r\n\t if (!deltas.length)\r\n\t return;\r\n\r\n\t this.$fromUndo = true;\r\n\t var lastUndoRange = null;\r\n\t for (var i = 0; i < deltas.length; i++) {\r\n\t var delta = deltas[i];\r\n\t if (delta.group == \"doc\") {\r\n\t this.doc.applyDeltas(delta.deltas);\r\n\t lastUndoRange =\r\n\t this.$getUndoSelection(delta.deltas, false, lastUndoRange);\r\n\t }\r\n\t }\r\n\t this.$fromUndo = false;\r\n\t lastUndoRange &&\r\n\t this.$undoSelect &&\r\n\t !dontSelect &&\r\n\t this.selection.setSelectionRange(lastUndoRange);\r\n\t return lastUndoRange;\r\n\t };\r\n\t this.setUndoSelect = function(enable) {\r\n\t this.$undoSelect = enable;\r\n\t };\r\n\r\n\t this.$getUndoSelection = function(deltas, isUndo, lastUndoRange) {\r\n\t function isInsert(delta) {\r\n\t return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\r\n\t }\r\n\r\n\t var delta = deltas[0];\r\n\t var range, point;\r\n\t var lastDeltaIsInsert = false;\r\n\t if (isInsert(delta)) {\r\n\t range = Range.fromPoints(delta.start, delta.end);\r\n\t lastDeltaIsInsert = true;\r\n\t } else {\r\n\t range = Range.fromPoints(delta.start, delta.start);\r\n\t lastDeltaIsInsert = false;\r\n\t }\r\n\r\n\t for (var i = 1; i < deltas.length; i++) {\r\n\t delta = deltas[i];\r\n\t if (isInsert(delta)) {\r\n\t point = delta.start;\r\n\t if (range.compare(point.row, point.column) == -1) {\r\n\t range.setStart(point);\r\n\t }\r\n\t point = delta.end;\r\n\t if (range.compare(point.row, point.column) == 1) {\r\n\t range.setEnd(point);\r\n\t }\r\n\t lastDeltaIsInsert = true;\r\n\t } else {\r\n\t point = delta.start;\r\n\t if (range.compare(point.row, point.column) == -1) {\r\n\t range = Range.fromPoints(delta.start, delta.start);\r\n\t }\r\n\t lastDeltaIsInsert = false;\r\n\t }\r\n\t }\r\n\t if (lastUndoRange != null) {\r\n\t if (Range.comparePoints(lastUndoRange.start, range.start) === 0) {\r\n\t lastUndoRange.start.column += range.end.column - range.start.column;\r\n\t lastUndoRange.end.column += range.end.column - range.start.column;\r\n\t }\r\n\r\n\t var cmp = lastUndoRange.compareRange(range);\r\n\t if (cmp == 1) {\r\n\t range.setStart(lastUndoRange.start);\r\n\t } else if (cmp == -1) {\r\n\t range.setEnd(lastUndoRange.end);\r\n\t }\r\n\t }\r\n\r\n\t return range;\r\n\t };\r\n\t this.replace = function(range, text) {\r\n\t return this.doc.replace(range, text);\r\n\t };\r\n\t this.moveText = function(fromRange, toPosition, copy) {\r\n\t var text = this.getTextRange(fromRange);\r\n\t var folds = this.getFoldsInRange(fromRange);\r\n\r\n\t var toRange = Range.fromPoints(toPosition, toPosition);\r\n\t if (!copy) {\r\n\t this.remove(fromRange);\r\n\t var rowDiff = fromRange.start.row - fromRange.end.row;\r\n\t var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\r\n\t if (collDiff) {\r\n\t if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\r\n\t toRange.start.column += collDiff;\r\n\t if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\r\n\t toRange.end.column += collDiff;\r\n\t }\r\n\t if (rowDiff && toRange.start.row >= fromRange.end.row) {\r\n\t toRange.start.row += rowDiff;\r\n\t toRange.end.row += rowDiff;\r\n\t }\r\n\t }\r\n\r\n\t toRange.end = this.insert(toRange.start, text);\r\n\t if (folds.length) {\r\n\t var oldStart = fromRange.start;\r\n\t var newStart = toRange.start;\r\n\t var rowDiff = newStart.row - oldStart.row;\r\n\t var collDiff = newStart.column - oldStart.column;\r\n\t this.addFolds(folds.map(function(x) {\r\n\t x = x.clone();\r\n\t if (x.start.row == oldStart.row)\r\n\t x.start.column += collDiff;\r\n\t if (x.end.row == oldStart.row)\r\n\t x.end.column += collDiff;\r\n\t x.start.row += rowDiff;\r\n\t x.end.row += rowDiff;\r\n\t return x;\r\n\t }));\r\n\t }\r\n\r\n\t return toRange;\r\n\t };\r\n\t this.indentRows = function(startRow, endRow, indentString) {\r\n\t indentString = indentString.replace(/\\t/g, this.getTabString());\r\n\t for (var row=startRow; row<=endRow; row++)\r\n\t this.doc.insertInLine({row: row, column: 0}, indentString);\r\n\t };\r\n\t this.outdentRows = function (range) {\r\n\t var rowRange = range.collapseRows();\r\n\t var deleteRange = new Range(0, 0, 0, 0);\r\n\t var size = this.getTabSize();\r\n\r\n\t for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\r\n\t var line = this.getLine(i);\r\n\r\n\t deleteRange.start.row = i;\r\n\t deleteRange.end.row = i;\r\n\t for (var j = 0; j < size; ++j)\r\n\t if (line.charAt(j) != ' ')\r\n\t break;\r\n\t if (j < size && line.charAt(j) == '\\t') {\r\n\t deleteRange.start.column = j;\r\n\t deleteRange.end.column = j + 1;\r\n\t } else {\r\n\t deleteRange.start.column = 0;\r\n\t deleteRange.end.column = j;\r\n\t }\r\n\t this.remove(deleteRange);\r\n\t }\r\n\t };\r\n\r\n\t this.$moveLines = function(firstRow, lastRow, dir) {\r\n\t firstRow = this.getRowFoldStart(firstRow);\r\n\t lastRow = this.getRowFoldEnd(lastRow);\r\n\t if (dir < 0) {\r\n\t var row = this.getRowFoldStart(firstRow + dir);\r\n\t if (row < 0) return 0;\r\n\t var diff = row-firstRow;\r\n\t } else if (dir > 0) {\r\n\t var row = this.getRowFoldEnd(lastRow + dir);\r\n\t if (row > this.doc.getLength()-1) return 0;\r\n\t var diff = row-lastRow;\r\n\t } else {\r\n\t firstRow = this.$clipRowToDocument(firstRow);\r\n\t lastRow = this.$clipRowToDocument(lastRow);\r\n\t var diff = lastRow - firstRow + 1;\r\n\t }\r\n\r\n\t var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\r\n\t var folds = this.getFoldsInRange(range).map(function(x){\r\n\t x = x.clone();\r\n\t x.start.row += diff;\r\n\t x.end.row += diff;\r\n\t return x;\r\n\t });\r\n\t \r\n\t var lines = dir == 0\r\n\t ? this.doc.getLines(firstRow, lastRow)\r\n\t : this.doc.removeFullLines(firstRow, lastRow);\r\n\t this.doc.insertFullLines(firstRow+diff, lines);\r\n\t folds.length && this.addFolds(folds);\r\n\t return diff;\r\n\t };\r\n\t this.moveLinesUp = function(firstRow, lastRow) {\r\n\t return this.$moveLines(firstRow, lastRow, -1);\r\n\t };\r\n\t this.moveLinesDown = function(firstRow, lastRow) {\r\n\t return this.$moveLines(firstRow, lastRow, 1);\r\n\t };\r\n\t this.duplicateLines = function(firstRow, lastRow) {\r\n\t return this.$moveLines(firstRow, lastRow, 0);\r\n\t };\r\n\r\n\r\n\t this.$clipRowToDocument = function(row) {\r\n\t return Math.max(0, Math.min(row, this.doc.getLength()-1));\r\n\t };\r\n\r\n\t this.$clipColumnToRow = function(row, column) {\r\n\t if (column < 0)\r\n\t return 0;\r\n\t return Math.min(this.doc.getLine(row).length, column);\r\n\t };\r\n\r\n\r\n\t this.$clipPositionToDocument = function(row, column) {\r\n\t column = Math.max(0, column);\r\n\r\n\t if (row < 0) {\r\n\t row = 0;\r\n\t column = 0;\r\n\t } else {\r\n\t var len = this.doc.getLength();\r\n\t if (row >= len) {\r\n\t row = len - 1;\r\n\t column = this.doc.getLine(len-1).length;\r\n\t } else {\r\n\t column = Math.min(this.doc.getLine(row).length, column);\r\n\t }\r\n\t }\r\n\r\n\t return {\r\n\t row: row,\r\n\t column: column\r\n\t };\r\n\t };\r\n\r\n\t this.$clipRangeToDocument = function(range) {\r\n\t if (range.start.row < 0) {\r\n\t range.start.row = 0;\r\n\t range.start.column = 0;\r\n\t } else {\r\n\t range.start.column = this.$clipColumnToRow(\r\n\t range.start.row,\r\n\t range.start.column\r\n\t );\r\n\t }\r\n\r\n\t var len = this.doc.getLength() - 1;\r\n\t if (range.end.row > len) {\r\n\t range.end.row = len;\r\n\t range.end.column = this.doc.getLine(len).length;\r\n\t } else {\r\n\t range.end.column = this.$clipColumnToRow(\r\n\t range.end.row,\r\n\t range.end.column\r\n\t );\r\n\t }\r\n\t return range;\r\n\t };\r\n\t this.$wrapLimit = 80;\r\n\t this.$useWrapMode = false;\r\n\t this.$wrapLimitRange = {\r\n\t min : null,\r\n\t max : null\r\n\t };\r\n\t this.setUseWrapMode = function(useWrapMode) {\r\n\t if (useWrapMode != this.$useWrapMode) {\r\n\t this.$useWrapMode = useWrapMode;\r\n\t this.$modified = true;\r\n\t this.$resetRowCache(0);\r\n\t if (useWrapMode) {\r\n\t var len = this.getLength();\r\n\t this.$wrapData = Array(len);\r\n\t this.$updateWrapData(0, len - 1);\r\n\t }\r\n\r\n\t this._signal(\"changeWrapMode\");\r\n\t }\r\n\t };\r\n\t this.getUseWrapMode = function() {\r\n\t return this.$useWrapMode;\r\n\t };\r\n\t this.setWrapLimitRange = function(min, max) {\r\n\t if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\r\n\t this.$wrapLimitRange = { min: min, max: max };\r\n\t this.$modified = true;\r\n\t if (this.$useWrapMode)\r\n\t this._signal(\"changeWrapMode\");\r\n\t }\r\n\t };\r\n\t this.adjustWrapLimit = function(desiredLimit, $printMargin) {\r\n\t var limits = this.$wrapLimitRange;\r\n\t if (limits.max < 0)\r\n\t limits = {min: $printMargin, max: $printMargin};\r\n\t var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\r\n\t if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\r\n\t this.$wrapLimit = wrapLimit;\r\n\t this.$modified = true;\r\n\t if (this.$useWrapMode) {\r\n\t this.$updateWrapData(0, this.getLength() - 1);\r\n\t this.$resetRowCache(0);\r\n\t this._signal(\"changeWrapLimit\");\r\n\t }\r\n\t return true;\r\n\t }\r\n\t return false;\r\n\t };\r\n\r\n\t this.$constrainWrapLimit = function(wrapLimit, min, max) {\r\n\t if (min)\r\n\t wrapLimit = Math.max(min, wrapLimit);\r\n\r\n\t if (max)\r\n\t wrapLimit = Math.min(max, wrapLimit);\r\n\r\n\t return wrapLimit;\r\n\t };\r\n\t this.getWrapLimit = function() {\r\n\t return this.$wrapLimit;\r\n\t };\r\n\t this.setWrapLimit = function (limit) {\r\n\t this.setWrapLimitRange(limit, limit);\r\n\t };\r\n\t this.getWrapLimitRange = function() {\r\n\t return {\r\n\t min : this.$wrapLimitRange.min,\r\n\t max : this.$wrapLimitRange.max\r\n\t };\r\n\t };\r\n\r\n\t this.$updateInternalDataOnChange = function(delta) {\r\n\t var useWrapMode = this.$useWrapMode;\r\n\t var action = delta.action;\r\n\t var start = delta.start;\r\n\t var end = delta.end;\r\n\t var firstRow = start.row;\r\n\t var lastRow = end.row;\r\n\t var len = lastRow - firstRow;\r\n\t var removedFolds = null;\r\n\t \r\n\t this.$updating = true;\r\n\t if (len != 0) {\r\n\t if (action === \"remove\") {\r\n\t this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\r\n\r\n\t var foldLines = this.$foldData;\r\n\t removedFolds = this.getFoldsInRange(delta);\r\n\t this.removeFolds(removedFolds);\r\n\r\n\t var foldLine = this.getFoldLine(end.row);\r\n\t var idx = 0;\r\n\t if (foldLine) {\r\n\t foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\r\n\t foldLine.shiftRow(-len);\r\n\r\n\t var foldLineBefore = this.getFoldLine(firstRow);\r\n\t if (foldLineBefore && foldLineBefore !== foldLine) {\r\n\t foldLineBefore.merge(foldLine);\r\n\t foldLine = foldLineBefore;\r\n\t }\r\n\t idx = foldLines.indexOf(foldLine) + 1;\r\n\t }\r\n\r\n\t for (idx; idx < foldLines.length; idx++) {\r\n\t var foldLine = foldLines[idx];\r\n\t if (foldLine.start.row >= end.row) {\r\n\t foldLine.shiftRow(-len);\r\n\t }\r\n\t }\r\n\r\n\t lastRow = firstRow;\r\n\t } else {\r\n\t var args = Array(len);\r\n\t args.unshift(firstRow, 0);\r\n\t var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache\r\n\t arr.splice.apply(arr, args);\r\n\t var foldLines = this.$foldData;\r\n\t var foldLine = this.getFoldLine(firstRow);\r\n\t var idx = 0;\r\n\t if (foldLine) {\r\n\t var cmp = foldLine.range.compareInside(start.row, start.column);\r\n\t if (cmp == 0) {\r\n\t foldLine = foldLine.split(start.row, start.column);\r\n\t if (foldLine) {\r\n\t foldLine.shiftRow(len);\r\n\t foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\r\n\t }\r\n\t } else\r\n\t if (cmp == -1) {\r\n\t foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\r\n\t foldLine.shiftRow(len);\r\n\t }\r\n\t idx = foldLines.indexOf(foldLine) + 1;\r\n\t }\r\n\r\n\t for (idx; idx < foldLines.length; idx++) {\r\n\t var foldLine = foldLines[idx];\r\n\t if (foldLine.start.row >= firstRow) {\r\n\t foldLine.shiftRow(len);\r\n\t }\r\n\t }\r\n\t }\r\n\t } else {\r\n\t len = Math.abs(delta.start.column - delta.end.column);\r\n\t if (action === \"remove\") {\r\n\t removedFolds = this.getFoldsInRange(delta);\r\n\t this.removeFolds(removedFolds);\r\n\r\n\t len = -len;\r\n\t }\r\n\t var foldLine = this.getFoldLine(firstRow);\r\n\t if (foldLine) {\r\n\t foldLine.addRemoveChars(firstRow, start.column, len);\r\n\t }\r\n\t }\r\n\r\n\t if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\r\n\t console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\r\n\t }\r\n\t this.$updating = false;\r\n\r\n\t if (useWrapMode)\r\n\t this.$updateWrapData(firstRow, lastRow);\r\n\t else\r\n\t this.$updateRowLengthCache(firstRow, lastRow);\r\n\r\n\t return removedFolds;\r\n\t };\r\n\r\n\t this.$updateRowLengthCache = function(firstRow, lastRow, b) {\r\n\t this.$rowLengthCache[firstRow] = null;\r\n\t this.$rowLengthCache[lastRow] = null;\r\n\t };\r\n\r\n\t this.$updateWrapData = function(firstRow, lastRow) {\r\n\t var lines = this.doc.getAllLines();\r\n\t var tabSize = this.getTabSize();\r\n\t var wrapData = this.$wrapData;\r\n\t var wrapLimit = this.$wrapLimit;\r\n\t var tokens;\r\n\t var foldLine;\r\n\r\n\t var row = firstRow;\r\n\t lastRow = Math.min(lastRow, lines.length - 1);\r\n\t while (row <= lastRow) {\r\n\t foldLine = this.getFoldLine(row, foldLine);\r\n\t if (!foldLine) {\r\n\t tokens = this.$getDisplayTokens(lines[row]);\r\n\t wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\r\n\t row ++;\r\n\t } else {\r\n\t tokens = [];\r\n\t foldLine.walk(function(placeholder, row, column, lastColumn) {\r\n\t var walkTokens;\r\n\t if (placeholder != null) {\r\n\t walkTokens = this.$getDisplayTokens(\r\n\t placeholder, tokens.length);\r\n\t walkTokens[0] = PLACEHOLDER_START;\r\n\t for (var i = 1; i < walkTokens.length; i++) {\r\n\t walkTokens[i] = PLACEHOLDER_BODY;\r\n\t }\r\n\t } else {\r\n\t walkTokens = this.$getDisplayTokens(\r\n\t lines[row].substring(lastColumn, column),\r\n\t tokens.length);\r\n\t }\r\n\t tokens = tokens.concat(walkTokens);\r\n\t }.bind(this),\r\n\t foldLine.end.row,\r\n\t lines[foldLine.end.row].length + 1\r\n\t );\r\n\r\n\t wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\r\n\t row = foldLine.end.row + 1;\r\n\t }\r\n\t }\r\n\t };\r\n\t var CHAR = 1,\r\n\t CHAR_EXT = 2,\r\n\t PLACEHOLDER_START = 3,\r\n\t PLACEHOLDER_BODY = 4,\r\n\t PUNCTUATION = 9,\r\n\t SPACE = 10,\r\n\t TAB = 11,\r\n\t TAB_SPACE = 12;\r\n\r\n\r\n\t this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) {\r\n\t if (tokens.length == 0) {\r\n\t return [];\r\n\t }\r\n\r\n\t var splits = [];\r\n\t var displayLength = tokens.length;\r\n\t var lastSplit = 0, lastDocSplit = 0;\r\n\r\n\t var isCode = this.$wrapAsCode;\r\n\r\n\t var indentedSoftWrap = this.$indentedSoftWrap;\r\n\t var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\r\n\t || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\r\n\r\n\t function getWrapIndent() {\r\n\t var indentation = 0;\r\n\t if (maxIndent === 0)\r\n\t return indentation;\r\n\t if (indentedSoftWrap) {\r\n\t for (var i = 0; i < tokens.length; i++) {\r\n\t var token = tokens[i];\r\n\t if (token == SPACE)\r\n\t indentation += 1;\r\n\t else if (token == TAB)\r\n\t indentation += tabSize;\r\n\t else if (token == TAB_SPACE)\r\n\t continue;\r\n\t else\r\n\t break;\r\n\t }\r\n\t }\r\n\t if (isCode && indentedSoftWrap !== false)\r\n\t indentation += tabSize;\r\n\t return Math.min(indentation, maxIndent);\r\n\t }\r\n\t function addSplit(screenPos) {\r\n\t var displayed = tokens.slice(lastSplit, screenPos);\r\n\t var len = displayed.length;\r\n\t displayed.join(\"\")\r\n\t .replace(/12/g, function() {\r\n\t len -= 1;\r\n\t })\r\n\t .replace(/2/g, function() {\r\n\t len -= 1;\r\n\t });\r\n\r\n\t if (!splits.length) {\r\n\t indent = getWrapIndent();\r\n\t splits.indent = indent;\r\n\t }\r\n\t lastDocSplit += len;\r\n\t splits.push(lastDocSplit);\r\n\t lastSplit = screenPos;\r\n\t }\r\n\t var indent = 0;\r\n\t while (displayLength - lastSplit > wrapLimit - indent) {\r\n\t var split = lastSplit + wrapLimit - indent;\r\n\t if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\r\n\t addSplit(split);\r\n\t continue;\r\n\t }\r\n\t if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\r\n\t for (split; split != lastSplit - 1; split--) {\r\n\t if (tokens[split] == PLACEHOLDER_START) {\r\n\t break;\r\n\t }\r\n\t }\r\n\t if (split > lastSplit) {\r\n\t addSplit(split);\r\n\t continue;\r\n\t }\r\n\t split = lastSplit + wrapLimit;\r\n\t for (split; split < tokens.length; split++) {\r\n\t if (tokens[split] != PLACEHOLDER_BODY) {\r\n\t break;\r\n\t }\r\n\t }\r\n\t if (split == tokens.length) {\r\n\t break; // Breaks the while-loop.\r\n\t }\r\n\t addSplit(split);\r\n\t continue;\r\n\t }\r\n\t var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1);\r\n\t while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\r\n\t split --;\r\n\t }\r\n\t if (isCode) {\r\n\t while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\r\n\t split --;\r\n\t }\r\n\t while (split > minSplit && tokens[split] == PUNCTUATION) {\r\n\t split --;\r\n\t }\r\n\t } else {\r\n\t while (split > minSplit && tokens[split] < SPACE) {\r\n\t split --;\r\n\t }\r\n\t }\r\n\t if (split > minSplit) {\r\n\t addSplit(++split);\r\n\t continue;\r\n\t }\r\n\t split = lastSplit + wrapLimit;\r\n\t if (tokens[split] == CHAR_EXT)\r\n\t split--;\r\n\t addSplit(split - indent);\r\n\t }\r\n\t return splits;\r\n\t };\r\n\t this.$getDisplayTokens = function(str, offset) {\r\n\t var arr = [];\r\n\t var tabSize;\r\n\t offset = offset || 0;\r\n\r\n\t for (var i = 0; i < str.length; i++) {\r\n\t var c = str.charCodeAt(i);\r\n\t if (c == 9) {\r\n\t tabSize = this.getScreenTabSize(arr.length + offset);\r\n\t arr.push(TAB);\r\n\t for (var n = 1; n < tabSize; n++) {\r\n\t arr.push(TAB_SPACE);\r\n\t }\r\n\t }\r\n\t else if (c == 32) {\r\n\t arr.push(SPACE);\r\n\t } else if((c > 39 && c < 48) || (c > 57 && c < 64)) {\r\n\t arr.push(PUNCTUATION);\r\n\t }\r\n\t else if (c >= 0x1100 && isFullWidth(c)) {\r\n\t arr.push(CHAR, CHAR_EXT);\r\n\t } else {\r\n\t arr.push(CHAR);\r\n\t }\r\n\t }\r\n\t return arr;\r\n\t };\r\n\t this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\r\n\t if (maxScreenColumn == 0)\r\n\t return [0, 0];\r\n\t if (maxScreenColumn == null)\r\n\t maxScreenColumn = Infinity;\r\n\t screenColumn = screenColumn || 0;\r\n\r\n\t var c, column;\r\n\t for (column = 0; column < str.length; column++) {\r\n\t c = str.charCodeAt(column);\r\n\t if (c == 9) {\r\n\t screenColumn += this.getScreenTabSize(screenColumn);\r\n\t }\r\n\t else if (c >= 0x1100 && isFullWidth(c)) {\r\n\t screenColumn += 2;\r\n\t } else {\r\n\t screenColumn += 1;\r\n\t }\r\n\t if (screenColumn > maxScreenColumn) {\r\n\t break;\r\n\t }\r\n\t }\r\n\r\n\t return [screenColumn, column];\r\n\t };\r\n\r\n\t this.lineWidgets = null;\r\n\t this.getRowLength = function(row) {\r\n\t if (this.lineWidgets)\r\n\t var h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\r\n\t else \r\n\t h = 0\r\n\t if (!this.$useWrapMode || !this.$wrapData[row]) {\r\n\t return 1 + h;\r\n\t } else {\r\n\t return this.$wrapData[row].length + 1 + h;\r\n\t }\r\n\t };\r\n\t this.getRowLineCount = function(row) {\r\n\t if (!this.$useWrapMode || !this.$wrapData[row]) {\r\n\t return 1;\r\n\t } else {\r\n\t return this.$wrapData[row].length + 1;\r\n\t }\r\n\t };\r\n\r\n\t this.getRowWrapIndent = function(screenRow) {\r\n\t if (this.$useWrapMode) {\r\n\t var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\r\n\t var splits = this.$wrapData[pos.row];\r\n\t return splits.length && splits[0] < pos.column ? splits.indent : 0;\r\n\t } else {\r\n\t return 0;\r\n\t }\r\n\t }\r\n\t this.getScreenLastRowColumn = function(screenRow) {\r\n\t var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\r\n\t return this.documentToScreenColumn(pos.row, pos.column);\r\n\t };\r\n\t this.getDocumentLastRowColumn = function(docRow, docColumn) {\r\n\t var screenRow = this.documentToScreenRow(docRow, docColumn);\r\n\t return this.getScreenLastRowColumn(screenRow);\r\n\t };\r\n\t this.getDocumentLastRowColumnPosition = function(docRow, docColumn) {\r\n\t var screenRow = this.documentToScreenRow(docRow, docColumn);\r\n\t return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\r\n\t };\r\n\t this.getRowSplitData = function(row) {\r\n\t if (!this.$useWrapMode) {\r\n\t return undefined;\r\n\t } else {\r\n\t return this.$wrapData[row];\r\n\t }\r\n\t };\r\n\t this.getScreenTabSize = function(screenColumn) {\r\n\t return this.$tabSize - screenColumn % this.$tabSize;\r\n\t };\r\n\r\n\r\n\t this.screenToDocumentRow = function(screenRow, screenColumn) {\r\n\t return this.screenToDocumentPosition(screenRow, screenColumn).row;\r\n\t };\r\n\r\n\r\n\t this.screenToDocumentColumn = function(screenRow, screenColumn) {\r\n\t return this.screenToDocumentPosition(screenRow, screenColumn).column;\r\n\t };\r\n\t this.screenToDocumentPosition = function(screenRow, screenColumn) {\r\n\t if (screenRow < 0)\r\n\t return {row: 0, column: 0};\r\n\r\n\t var line;\r\n\t var docRow = 0;\r\n\t var docColumn = 0;\r\n\t var column;\r\n\t var row = 0;\r\n\t var rowLength = 0;\r\n\r\n\t var rowCache = this.$screenRowCache;\r\n\t var i = this.$getRowCacheIndex(rowCache, screenRow);\r\n\t var l = rowCache.length;\r\n\t if (l && i >= 0) {\r\n\t var row = rowCache[i];\r\n\t var docRow = this.$docRowCache[i];\r\n\t var doCache = screenRow > rowCache[l - 1];\r\n\t } else {\r\n\t var doCache = !l;\r\n\t }\r\n\r\n\t var maxRow = this.getLength() - 1;\r\n\t var foldLine = this.getNextFoldLine(docRow);\r\n\t var foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\r\n\t while (row <= screenRow) {\r\n\t rowLength = this.getRowLength(docRow);\r\n\t if (row + rowLength > screenRow || docRow >= maxRow) {\r\n\t break;\r\n\t } else {\r\n\t row += rowLength;\r\n\t docRow++;\r\n\t if (docRow > foldStart) {\r\n\t docRow = foldLine.end.row+1;\r\n\t foldLine = this.getNextFoldLine(docRow, foldLine);\r\n\t foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\t }\r\n\t }\r\n\r\n\t if (doCache) {\r\n\t this.$docRowCache.push(docRow);\r\n\t this.$screenRowCache.push(row);\r\n\t }\r\n\t }\r\n\r\n\t if (foldLine && foldLine.start.row <= docRow) {\r\n\t line = this.getFoldDisplayLine(foldLine);\r\n\t docRow = foldLine.start.row;\r\n\t } else if (row + rowLength <= screenRow || docRow > maxRow) {\r\n\t return {\r\n\t row: maxRow,\r\n\t column: this.getLine(maxRow).length\r\n\t };\r\n\t } else {\r\n\t line = this.getLine(docRow);\r\n\t foldLine = null;\r\n\t }\r\n\t var wrapIndent = 0;\r\n\t if (this.$useWrapMode) {\r\n\t var splits = this.$wrapData[docRow];\r\n\t if (splits) {\r\n\t var splitIndex = Math.floor(screenRow - row);\r\n\t column = splits[splitIndex];\r\n\t if(splitIndex > 0 && splits.length) {\r\n\t wrapIndent = splits.indent;\r\n\t docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\r\n\t line = line.substring(docColumn);\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\r\n\t if (this.$useWrapMode && docColumn >= column)\r\n\t docColumn = column - 1;\r\n\r\n\t if (foldLine)\r\n\t return foldLine.idxToPosition(docColumn);\r\n\r\n\t return {row: docRow, column: docColumn};\r\n\t };\r\n\t this.documentToScreenPosition = function(docRow, docColumn) {\r\n\t if (typeof docColumn === \"undefined\")\r\n\t var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\r\n\t else\r\n\t pos = this.$clipPositionToDocument(docRow, docColumn);\r\n\r\n\t docRow = pos.row;\r\n\t docColumn = pos.column;\r\n\r\n\t var screenRow = 0;\r\n\t var foldStartRow = null;\r\n\t var fold = null;\r\n\t fold = this.getFoldAt(docRow, docColumn, 1);\r\n\t if (fold) {\r\n\t docRow = fold.start.row;\r\n\t docColumn = fold.start.column;\r\n\t }\r\n\r\n\t var rowEnd, row = 0;\r\n\r\n\r\n\t var rowCache = this.$docRowCache;\r\n\t var i = this.$getRowCacheIndex(rowCache, docRow);\r\n\t var l = rowCache.length;\r\n\t if (l && i >= 0) {\r\n\t var row = rowCache[i];\r\n\t var screenRow = this.$screenRowCache[i];\r\n\t var doCache = docRow > rowCache[l - 1];\r\n\t } else {\r\n\t var doCache = !l;\r\n\t }\r\n\r\n\t var foldLine = this.getNextFoldLine(row);\r\n\t var foldStart = foldLine ?foldLine.start.row :Infinity;\r\n\r\n\t while (row < docRow) {\r\n\t if (row >= foldStart) {\r\n\t rowEnd = foldLine.end.row + 1;\r\n\t if (rowEnd > docRow)\r\n\t break;\r\n\t foldLine = this.getNextFoldLine(rowEnd, foldLine);\r\n\t foldStart = foldLine ?foldLine.start.row :Infinity;\r\n\t }\r\n\t else {\r\n\t rowEnd = row + 1;\r\n\t }\r\n\r\n\t screenRow += this.getRowLength(row);\r\n\t row = rowEnd;\r\n\r\n\t if (doCache) {\r\n\t this.$docRowCache.push(row);\r\n\t this.$screenRowCache.push(screenRow);\r\n\t }\r\n\t }\r\n\t var textLine = \"\";\r\n\t if (foldLine && row >= foldStart) {\r\n\t textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\r\n\t foldStartRow = foldLine.start.row;\r\n\t } else {\r\n\t textLine = this.getLine(docRow).substring(0, docColumn);\r\n\t foldStartRow = docRow;\r\n\t }\r\n\t var wrapIndent = 0;\r\n\t if (this.$useWrapMode) {\r\n\t var wrapRow = this.$wrapData[foldStartRow];\r\n\t if (wrapRow) {\r\n\t var screenRowOffset = 0;\r\n\t while (textLine.length >= wrapRow[screenRowOffset]) {\r\n\t screenRow ++;\r\n\t screenRowOffset++;\r\n\t }\r\n\t textLine = textLine.substring(\r\n\t wrapRow[screenRowOffset - 1] || 0, textLine.length\r\n\t );\r\n\t wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\r\n\t }\r\n\t }\r\n\r\n\t return {\r\n\t row: screenRow,\r\n\t column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\r\n\t };\r\n\t };\r\n\t this.documentToScreenColumn = function(row, docColumn) {\r\n\t return this.documentToScreenPosition(row, docColumn).column;\r\n\t };\r\n\t this.documentToScreenRow = function(docRow, docColumn) {\r\n\t return this.documentToScreenPosition(docRow, docColumn).row;\r\n\t };\r\n\t this.getScreenLength = function() {\r\n\t var screenRows = 0;\r\n\t var fold = null;\r\n\t if (!this.$useWrapMode) {\r\n\t screenRows = this.getLength();\r\n\t var foldData = this.$foldData;\r\n\t for (var i = 0; i < foldData.length; i++) {\r\n\t fold = foldData[i];\r\n\t screenRows -= fold.end.row - fold.start.row;\r\n\t }\r\n\t } else {\r\n\t var lastRow = this.$wrapData.length;\r\n\t var row = 0, i = 0;\r\n\t var fold = this.$foldData[i++];\r\n\t var foldStart = fold ? fold.start.row :Infinity;\r\n\r\n\t while (row < lastRow) {\r\n\t var splits = this.$wrapData[row];\r\n\t screenRows += splits ? splits.length + 1 : 1;\r\n\t row ++;\r\n\t if (row > foldStart) {\r\n\t row = fold.end.row+1;\r\n\t fold = this.$foldData[i++];\r\n\t foldStart = fold ?fold.start.row :Infinity;\r\n\t }\r\n\t }\r\n\t }\r\n\t if (this.lineWidgets)\r\n\t screenRows += this.$getWidgetScreenLength();\r\n\r\n\t return screenRows;\r\n\t };\r\n\t this.$setFontMetrics = function(fm) {\r\n\t if (!this.$enableVarChar) return;\r\n\t this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\r\n\t if (maxScreenColumn === 0)\r\n\t return [0, 0];\r\n\t if (!maxScreenColumn)\r\n\t maxScreenColumn = Infinity;\r\n\t screenColumn = screenColumn || 0;\r\n\t \r\n\t var c, column;\r\n\t for (column = 0; column < str.length; column++) {\r\n\t c = str.charAt(column);\r\n\t if (c === \"\\t\") {\r\n\t screenColumn += this.getScreenTabSize(screenColumn);\r\n\t } else {\r\n\t screenColumn += fm.getCharacterWidth(c);\r\n\t }\r\n\t if (screenColumn > maxScreenColumn) {\r\n\t break;\r\n\t }\r\n\t }\r\n\t \r\n\t return [screenColumn, column];\r\n\t };\r\n\t };\r\n\t \r\n\t this.destroy = function() {\r\n\t if (this.bgTokenizer) {\r\n\t this.bgTokenizer.setDocument(null);\r\n\t this.bgTokenizer = null;\r\n\t }\r\n\t this.$stopWorker();\r\n\t };\r\n\t function isFullWidth(c) {\r\n\t if (c < 0x1100)\r\n\t return false;\r\n\t return c >= 0x1100 && c <= 0x115F ||\r\n\t c >= 0x11A3 && c <= 0x11A7 ||\r\n\t c >= 0x11FA && c <= 0x11FF ||\r\n\t c >= 0x2329 && c <= 0x232A ||\r\n\t c >= 0x2E80 && c <= 0x2E99 ||\r\n\t c >= 0x2E9B && c <= 0x2EF3 ||\r\n\t c >= 0x2F00 && c <= 0x2FD5 ||\r\n\t c >= 0x2FF0 && c <= 0x2FFB ||\r\n\t c >= 0x3000 && c <= 0x303E ||\r\n\t c >= 0x3041 && c <= 0x3096 ||\r\n\t c >= 0x3099 && c <= 0x30FF ||\r\n\t c >= 0x3105 && c <= 0x312D ||\r\n\t c >= 0x3131 && c <= 0x318E ||\r\n\t c >= 0x3190 && c <= 0x31BA ||\r\n\t c >= 0x31C0 && c <= 0x31E3 ||\r\n\t c >= 0x31F0 && c <= 0x321E ||\r\n\t c >= 0x3220 && c <= 0x3247 ||\r\n\t c >= 0x3250 && c <= 0x32FE ||\r\n\t c >= 0x3300 && c <= 0x4DBF ||\r\n\t c >= 0x4E00 && c <= 0xA48C ||\r\n\t c >= 0xA490 && c <= 0xA4C6 ||\r\n\t c >= 0xA960 && c <= 0xA97C ||\r\n\t c >= 0xAC00 && c <= 0xD7A3 ||\r\n\t c >= 0xD7B0 && c <= 0xD7C6 ||\r\n\t c >= 0xD7CB && c <= 0xD7FB ||\r\n\t c >= 0xF900 && c <= 0xFAFF ||\r\n\t c >= 0xFE10 && c <= 0xFE19 ||\r\n\t c >= 0xFE30 && c <= 0xFE52 ||\r\n\t c >= 0xFE54 && c <= 0xFE66 ||\r\n\t c >= 0xFE68 && c <= 0xFE6B ||\r\n\t c >= 0xFF01 && c <= 0xFF60 ||\r\n\t c >= 0xFFE0 && c <= 0xFFE6;\r\n\t }\r\n\r\n\t}).call(EditSession.prototype);\r\n\r\n\tacequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\r\n\tacequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\r\n\r\n\r\n\tconfig.defineOptions(EditSession.prototype, \"session\", {\r\n\t wrap: {\r\n\t set: function(value) {\r\n\t if (!value || value == \"off\")\r\n\t value = false;\r\n\t else if (value == \"free\")\r\n\t value = true;\r\n\t else if (value == \"printMargin\")\r\n\t value = -1;\r\n\t else if (typeof value == \"string\")\r\n\t value = parseInt(value, 10) || false;\r\n\r\n\t if (this.$wrap == value)\r\n\t return;\r\n\t this.$wrap = value;\r\n\t if (!value) {\r\n\t this.setUseWrapMode(false);\r\n\t } else {\r\n\t var col = typeof value == \"number\" ? value : null;\r\n\t this.setWrapLimitRange(col, col);\r\n\t this.setUseWrapMode(true);\r\n\t }\r\n\t },\r\n\t get: function() {\r\n\t if (this.getUseWrapMode()) {\r\n\t if (this.$wrap == -1)\r\n\t return \"printMargin\";\r\n\t if (!this.getWrapLimitRange().min)\r\n\t return \"free\";\r\n\t return this.$wrap;\r\n\t }\r\n\t return \"off\";\r\n\t },\r\n\t handlesSet: true\r\n\t }, \r\n\t wrapMethod: {\r\n\t set: function(val) {\r\n\t val = val == \"auto\"\r\n\t ? this.$mode.type != \"text\"\r\n\t : val != \"text\";\r\n\t if (val != this.$wrapAsCode) {\r\n\t this.$wrapAsCode = val;\r\n\t if (this.$useWrapMode) {\r\n\t this.$modified = true;\r\n\t this.$resetRowCache(0);\r\n\t this.$updateWrapData(0, this.getLength() - 1);\r\n\t }\r\n\t }\r\n\t },\r\n\t initialValue: \"auto\"\r\n\t },\r\n\t indentedSoftWrap: { initialValue: true },\r\n\t firstLineNumber: {\r\n\t set: function() {this._signal(\"changeBreakpoint\");},\r\n\t initialValue: 1\r\n\t },\r\n\t useWorker: {\r\n\t set: function(useWorker) {\r\n\t this.$useWorker = useWorker;\r\n\r\n\t this.$stopWorker();\r\n\t if (useWorker)\r\n\t this.$startWorker();\r\n\t },\r\n\t initialValue: true\r\n\t },\r\n\t useSoftTabs: {initialValue: true},\r\n\t tabSize: {\r\n\t set: function(tabSize) {\r\n\t if (isNaN(tabSize) || this.$tabSize === tabSize) return;\r\n\r\n\t this.$modified = true;\r\n\t this.$rowLengthCache = [];\r\n\t this.$tabSize = tabSize;\r\n\t this._signal(\"changeTabSize\");\r\n\t },\r\n\t initialValue: 4,\r\n\t handlesSet: true\r\n\t },\r\n\t overwrite: {\r\n\t set: function(val) {this._signal(\"changeOverwrite\");},\r\n\t initialValue: false\r\n\t },\r\n\t newLineMode: {\r\n\t set: function(val) {this.doc.setNewLineMode(val)},\r\n\t get: function() {return this.doc.getNewLineMode()},\r\n\t handlesSet: true\r\n\t },\r\n\t mode: {\r\n\t set: function(val) { this.setMode(val) },\r\n\t get: function() { return this.$modeId }\r\n\t }\r\n\t});\r\n\r\n\texports.EditSession = EditSession;\r\n\t});\r\n\r\n\tace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar lang = acequire(\"./lib/lang\");\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar Range = acequire(\"./range\").Range;\r\n\r\n\tvar Search = function() {\r\n\t this.$options = {};\r\n\t};\r\n\r\n\t(function() {\r\n\t this.set = function(options) {\r\n\t oop.mixin(this.$options, options);\r\n\t return this;\r\n\t };\r\n\t this.getOptions = function() {\r\n\t return lang.copyObject(this.$options);\r\n\t };\r\n\t this.setOptions = function(options) {\r\n\t this.$options = options;\r\n\t };\r\n\t this.find = function(session) {\r\n\t var options = this.$options;\r\n\t var iterator = this.$matchIterator(session, options);\r\n\t if (!iterator)\r\n\t return false;\r\n\r\n\t var firstRange = null;\r\n\t iterator.forEach(function(range, row, offset) {\r\n\t if (!range.start) {\r\n\t var column = range.offset + (offset || 0);\r\n\t firstRange = new Range(row, column, row, column + range.length);\r\n\t if (!range.length && options.start && options.start.start\r\n\t && options.skipCurrent != false && firstRange.isEqual(options.start)\r\n\t ) {\r\n\t firstRange = null;\r\n\t return false;\r\n\t }\r\n\t } else\r\n\t firstRange = range;\r\n\t return true;\r\n\t });\r\n\r\n\t return firstRange;\r\n\t };\r\n\t this.findAll = function(session) {\r\n\t var options = this.$options;\r\n\t if (!options.needle)\r\n\t return [];\r\n\t this.$assembleRegExp(options);\r\n\r\n\t var range = options.range;\r\n\t var lines = range\r\n\t ? session.getLines(range.start.row, range.end.row)\r\n\t : session.doc.getAllLines();\r\n\r\n\t var ranges = [];\r\n\t var re = options.re;\r\n\t if (options.$isMultiLine) {\r\n\t var len = re.length;\r\n\t var maxRow = lines.length - len;\r\n\t var prevRange;\r\n\t outer: for (var row = re.offset || 0; row <= maxRow; row++) {\r\n\t for (var j = 0; j < len; j++)\r\n\t if (lines[row + j].search(re[j]) == -1)\r\n\t continue outer;\r\n\t \r\n\t var startLine = lines[row];\r\n\t var line = lines[row + len - 1];\r\n\t var startIndex = startLine.length - startLine.match(re[0])[0].length;\r\n\t var endIndex = line.match(re[len - 1])[0].length;\r\n\t \r\n\t if (prevRange && prevRange.end.row === row &&\r\n\t prevRange.end.column > startIndex\r\n\t ) {\r\n\t continue;\r\n\t }\r\n\t ranges.push(prevRange = new Range(\r\n\t row, startIndex, row + len - 1, endIndex\r\n\t ));\r\n\t if (len > 2)\r\n\t row = row + len - 2;\r\n\t }\r\n\t } else {\r\n\t for (var i = 0; i < lines.length; i++) {\r\n\t var matches = lang.getMatchOffsets(lines[i], re);\r\n\t for (var j = 0; j < matches.length; j++) {\r\n\t var match = matches[j];\r\n\t ranges.push(new Range(i, match.offset, i, match.offset + match.length));\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t if (range) {\r\n\t var startColumn = range.start.column;\r\n\t var endColumn = range.start.column;\r\n\t var i = 0, j = ranges.length - 1;\r\n\t while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row)\r\n\t i++;\r\n\r\n\t while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row)\r\n\t j--;\r\n\t \r\n\t ranges = ranges.slice(i, j + 1);\r\n\t for (i = 0, j = ranges.length; i < j; i++) {\r\n\t ranges[i].start.row += range.start.row;\r\n\t ranges[i].end.row += range.start.row;\r\n\t }\r\n\t }\r\n\r\n\t return ranges;\r\n\t };\r\n\t this.replace = function(input, replacement) {\r\n\t var options = this.$options;\r\n\r\n\t var re = this.$assembleRegExp(options);\r\n\t if (options.$isMultiLine)\r\n\t return replacement;\r\n\r\n\t if (!re)\r\n\t return;\r\n\r\n\t var match = re.exec(input);\r\n\t if (!match || match[0].length != input.length)\r\n\t return null;\r\n\t \r\n\t replacement = input.replace(re, replacement);\r\n\t if (options.preserveCase) {\r\n\t replacement = replacement.split(\"\");\r\n\t for (var i = Math.min(input.length, input.length); i--; ) {\r\n\t var ch = input[i];\r\n\t if (ch && ch.toLowerCase() != ch)\r\n\t replacement[i] = replacement[i].toUpperCase();\r\n\t else\r\n\t replacement[i] = replacement[i].toLowerCase();\r\n\t }\r\n\t replacement = replacement.join(\"\");\r\n\t }\r\n\t \r\n\t return replacement;\r\n\t };\r\n\r\n\t this.$matchIterator = function(session, options) {\r\n\t var re = this.$assembleRegExp(options);\r\n\t if (!re)\r\n\t return false;\r\n\r\n\t var callback;\r\n\t if (options.$isMultiLine) {\r\n\t var len = re.length;\r\n\t var matchIterator = function(line, row, offset) {\r\n\t var startIndex = line.search(re[0]);\r\n\t if (startIndex == -1)\r\n\t return;\r\n\t for (var i = 1; i < len; i++) {\r\n\t line = session.getLine(row + i);\r\n\t if (line.search(re[i]) == -1)\r\n\t return;\r\n\t }\r\n\r\n\t var endIndex = line.match(re[len - 1])[0].length;\r\n\r\n\t var range = new Range(row, startIndex, row + len - 1, endIndex);\r\n\t if (re.offset == 1) {\r\n\t range.start.row--;\r\n\t range.start.column = Number.MAX_VALUE;\r\n\t } else if (offset)\r\n\t range.start.column += offset;\r\n\r\n\t if (callback(range))\r\n\t return true;\r\n\t };\r\n\t } else if (options.backwards) {\r\n\t var matchIterator = function(line, row, startIndex) {\r\n\t var matches = lang.getMatchOffsets(line, re);\r\n\t for (var i = matches.length-1; i >= 0; i--)\r\n\t if (callback(matches[i], row, startIndex))\r\n\t return true;\r\n\t };\r\n\t } else {\r\n\t var matchIterator = function(line, row, startIndex) {\r\n\t var matches = lang.getMatchOffsets(line, re);\r\n\t for (var i = 0; i < matches.length; i++)\r\n\t if (callback(matches[i], row, startIndex))\r\n\t return true;\r\n\t };\r\n\t }\r\n\t \r\n\t var lineIterator = this.$lineIterator(session, options);\r\n\r\n\t return {\r\n\t forEach: function(_callback) {\r\n\t callback = _callback;\r\n\t lineIterator.forEach(matchIterator);\r\n\t }\r\n\t };\r\n\t };\r\n\r\n\t this.$assembleRegExp = function(options, $disableFakeMultiline) {\r\n\t if (options.needle instanceof RegExp)\r\n\t return options.re = options.needle;\r\n\r\n\t var needle = options.needle;\r\n\r\n\t if (!options.needle)\r\n\t return options.re = false;\r\n\r\n\t if (!options.regExp)\r\n\t needle = lang.escapeRegExp(needle);\r\n\r\n\t if (options.wholeWord)\r\n\t needle = \"\\\\b\" + needle + \"\\\\b\";\r\n\r\n\t var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\r\n\r\n\t options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\r\n\t if (options.$isMultiLine)\r\n\t return options.re = this.$assembleMultilineRegExp(needle, modifier);\r\n\r\n\t try {\r\n\t var re = new RegExp(needle, modifier);\r\n\t } catch(e) {\r\n\t re = false;\r\n\t }\r\n\t return options.re = re;\r\n\t };\r\n\r\n\t this.$assembleMultilineRegExp = function(needle, modifier) {\r\n\t var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\r\n\t var re = [];\r\n\t for (var i = 0; i < parts.length; i++) try {\r\n\t re.push(new RegExp(parts[i], modifier));\r\n\t } catch(e) {\r\n\t return false;\r\n\t }\r\n\t if (parts[0] == \"\") {\r\n\t re.shift();\r\n\t re.offset = 1;\r\n\t } else {\r\n\t re.offset = 0;\r\n\t }\r\n\t return re;\r\n\t };\r\n\r\n\t this.$lineIterator = function(session, options) {\r\n\t var backwards = options.backwards == true;\r\n\t var skipCurrent = options.skipCurrent != false;\r\n\r\n\t var range = options.range;\r\n\t var start = options.start;\r\n\t if (!start)\r\n\t start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\r\n\t \r\n\t if (start.start)\r\n\t start = start[skipCurrent != backwards ? \"end\" : \"start\"];\r\n\r\n\t var firstRow = range ? range.start.row : 0;\r\n\t var lastRow = range ? range.end.row : session.getLength() - 1;\r\n\r\n\t var forEach = backwards ? function(callback) {\r\n\t var row = start.row;\r\n\r\n\t var line = session.getLine(row).substring(0, start.column);\r\n\t if (callback(line, row))\r\n\t return;\r\n\r\n\t for (row--; row >= firstRow; row--)\r\n\t if (callback(session.getLine(row), row))\r\n\t return;\r\n\r\n\t if (options.wrap == false)\r\n\t return;\r\n\r\n\t for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\r\n\t if (callback(session.getLine(row), row))\r\n\t return;\r\n\t } : function(callback) {\r\n\t var row = start.row;\r\n\r\n\t var line = session.getLine(row).substr(start.column);\r\n\t if (callback(line, row, start.column))\r\n\t return;\r\n\r\n\t for (row = row+1; row <= lastRow; row++)\r\n\t if (callback(session.getLine(row), row))\r\n\t return;\r\n\r\n\t if (options.wrap == false)\r\n\t return;\r\n\r\n\t for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\r\n\t if (callback(session.getLine(row), row))\r\n\t return;\r\n\t };\r\n\t \r\n\t return {forEach: forEach};\r\n\t };\r\n\r\n\t}).call(Search.prototype);\r\n\r\n\texports.Search = Search;\r\n\t});\r\n\r\n\tace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar keyUtil = acequire(\"../lib/keys\");\r\n\tvar useragent = acequire(\"../lib/useragent\");\r\n\tvar KEY_MODS = keyUtil.KEY_MODS;\r\n\r\n\tfunction HashHandler(config, platform) {\r\n\t this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\r\n\t this.commands = {};\r\n\t this.commandKeyBinding = {};\r\n\t this.addCommands(config);\r\n\t this.$singleCommand = true;\r\n\t}\r\n\r\n\tfunction MultiHashHandler(config, platform) {\r\n\t HashHandler.call(this, config, platform);\r\n\t this.$singleCommand = false;\r\n\t}\r\n\r\n\tMultiHashHandler.prototype = HashHandler.prototype;\r\n\r\n\t(function() {\r\n\t \r\n\r\n\t this.addCommand = function(command) {\r\n\t if (this.commands[command.name])\r\n\t this.removeCommand(command);\r\n\r\n\t this.commands[command.name] = command;\r\n\r\n\t if (command.bindKey)\r\n\t this._buildKeyHash(command);\r\n\t };\r\n\r\n\t this.removeCommand = function(command, keepCommand) {\r\n\t var name = command && (typeof command === 'string' ? command : command.name);\r\n\t command = this.commands[name];\r\n\t if (!keepCommand)\r\n\t delete this.commands[name];\r\n\t var ckb = this.commandKeyBinding;\r\n\t for (var keyId in ckb) {\r\n\t var cmdGroup = ckb[keyId];\r\n\t if (cmdGroup == command) {\r\n\t delete ckb[keyId];\r\n\t } else if (Array.isArray(cmdGroup)) {\r\n\t var i = cmdGroup.indexOf(command);\r\n\t if (i != -1) {\r\n\t cmdGroup.splice(i, 1);\r\n\t if (cmdGroup.length == 1)\r\n\t ckb[keyId] = cmdGroup[0];\r\n\t }\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t this.bindKey = function(key, command, position) {\r\n\t if (typeof key == \"object\" && key) {\r\n\t if (position == undefined)\r\n\t position = key.position;\r\n\t key = key[this.platform];\r\n\t }\r\n\t if (!key)\r\n\t return;\r\n\t if (typeof command == \"function\")\r\n\t return this.addCommand({exec: command, bindKey: key, name: command.name || key});\r\n\t \r\n\t key.split(\"|\").forEach(function(keyPart) {\r\n\t var chain = \"\";\r\n\t if (keyPart.indexOf(\" \") != -1) {\r\n\t var parts = keyPart.split(/\\s+/);\r\n\t keyPart = parts.pop();\r\n\t parts.forEach(function(keyPart) {\r\n\t var binding = this.parseKeys(keyPart);\r\n\t var id = KEY_MODS[binding.hashId] + binding.key;\r\n\t chain += (chain ? \" \" : \"\") + id;\r\n\t this._addCommandToBinding(chain, \"chainKeys\");\r\n\t }, this);\r\n\t chain += \" \";\r\n\t }\r\n\t var binding = this.parseKeys(keyPart);\r\n\t var id = KEY_MODS[binding.hashId] + binding.key;\r\n\t this._addCommandToBinding(chain + id, command, position);\r\n\t }, this);\r\n\t };\r\n\t \r\n\t function getPosition(command) {\r\n\t return typeof command == \"object\" && command.bindKey\r\n\t && command.bindKey.position || 0;\r\n\t }\r\n\t this._addCommandToBinding = function(keyId, command, position) {\r\n\t var ckb = this.commandKeyBinding, i;\r\n\t if (!command) {\r\n\t delete ckb[keyId];\r\n\t } else if (!ckb[keyId] || this.$singleCommand) {\r\n\t ckb[keyId] = command;\r\n\t } else {\r\n\t if (!Array.isArray(ckb[keyId])) {\r\n\t ckb[keyId] = [ckb[keyId]];\r\n\t } else if ((i = ckb[keyId].indexOf(command)) != -1) {\r\n\t ckb[keyId].splice(i, 1);\r\n\t }\r\n\r\n\t if (typeof position != \"number\") {\r\n\t if (position || command.isDefault)\r\n\t position = -100;\r\n\t else\r\n\t position = getPosition(command);\r\n\t }\r\n\t var commands = ckb[keyId];\r\n\t for (i = 0; i < commands.length; i++) {\r\n\t var other = commands[i];\r\n\t var otherPos = getPosition(other);\r\n\t if (otherPos > position)\r\n\t break;\r\n\t }\r\n\t commands.splice(i, 0, command);\r\n\t }\r\n\t };\r\n\r\n\t this.addCommands = function(commands) {\r\n\t commands && Object.keys(commands).forEach(function(name) {\r\n\t var command = commands[name];\r\n\t if (!command)\r\n\t return;\r\n\t \r\n\t if (typeof command === \"string\")\r\n\t return this.bindKey(command, name);\r\n\r\n\t if (typeof command === \"function\")\r\n\t command = { exec: command };\r\n\r\n\t if (typeof command !== \"object\")\r\n\t return;\r\n\r\n\t if (!command.name)\r\n\t command.name = name;\r\n\r\n\t this.addCommand(command);\r\n\t }, this);\r\n\t };\r\n\r\n\t this.removeCommands = function(commands) {\r\n\t Object.keys(commands).forEach(function(name) {\r\n\t this.removeCommand(commands[name]);\r\n\t }, this);\r\n\t };\r\n\r\n\t this.bindKeys = function(keyList) {\r\n\t Object.keys(keyList).forEach(function(key) {\r\n\t this.bindKey(key, keyList[key]);\r\n\t }, this);\r\n\t };\r\n\r\n\t this._buildKeyHash = function(command) {\r\n\t this.bindKey(command.bindKey, command);\r\n\t };\r\n\t this.parseKeys = function(keys) {\r\n\t var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x});\r\n\t var key = parts.pop();\r\n\r\n\t var keyCode = keyUtil[key];\r\n\t if (keyUtil.FUNCTION_KEYS[keyCode])\r\n\t key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\r\n\t else if (!parts.length)\r\n\t return {key: key, hashId: -1};\r\n\t else if (parts.length == 1 && parts[0] == \"shift\")\r\n\t return {key: key.toUpperCase(), hashId: -1};\r\n\r\n\t var hashId = 0;\r\n\t for (var i = parts.length; i--;) {\r\n\t var modifier = keyUtil.KEY_MODS[parts[i]];\r\n\t if (modifier == null) {\r\n\t if (typeof console != \"undefined\")\r\n\t console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\r\n\t return false;\r\n\t }\r\n\t hashId |= modifier;\r\n\t }\r\n\t return {key: key, hashId: hashId};\r\n\t };\r\n\r\n\t this.findKeyCommand = function findKeyCommand(hashId, keyString) {\r\n\t var key = KEY_MODS[hashId] + keyString;\r\n\t return this.commandKeyBinding[key];\r\n\t };\r\n\r\n\t this.handleKeyboard = function(data, hashId, keyString, keyCode) {\r\n\t if (keyCode < 0) return;\r\n\t var key = KEY_MODS[hashId] + keyString;\r\n\t var command = this.commandKeyBinding[key];\r\n\t if (data.$keyChain) {\r\n\t data.$keyChain += \" \" + key;\r\n\t command = this.commandKeyBinding[data.$keyChain] || command;\r\n\t }\r\n\t \r\n\t if (command) {\r\n\t if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\r\n\t data.$keyChain = data.$keyChain || key;\r\n\t return {command: \"null\"};\r\n\t }\r\n\t }\r\n\t \r\n\t if (data.$keyChain) {\r\n\t if ((!hashId || hashId == 4) && keyString.length == 1)\r\n\t data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\r\n\t else if (hashId == -1 || keyCode > 0)\r\n\t data.$keyChain = \"\"; // reset keyChain\r\n\t }\r\n\t return {command: command};\r\n\t };\r\n\t \r\n\t this.getStatusText = function(editor, data) {\r\n\t return data.$keyChain || \"\";\r\n\t };\r\n\r\n\t}).call(HashHandler.prototype);\r\n\r\n\texports.HashHandler = HashHandler;\r\n\texports.MultiHashHandler = MultiHashHandler;\r\n\t});\r\n\r\n\tace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"../lib/oop\");\r\n\tvar MultiHashHandler = acequire(\"../keyboard/hash_handler\").MultiHashHandler;\r\n\tvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\r\n\r\n\tvar CommandManager = function(platform, commands) {\r\n\t MultiHashHandler.call(this, commands, platform);\r\n\t this.byName = this.commands;\r\n\t this.setDefaultHandler(\"exec\", function(e) {\r\n\t return e.command.exec(e.editor, e.args || {});\r\n\t });\r\n\t};\r\n\r\n\toop.inherits(CommandManager, MultiHashHandler);\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\r\n\t this.exec = function(command, editor, args) {\r\n\t if (Array.isArray(command)) {\r\n\t for (var i = command.length; i--; ) {\r\n\t if (this.exec(command[i], editor, args)) return true;\r\n\t }\r\n\t return false;\r\n\t }\r\n\t \r\n\t if (typeof command === \"string\")\r\n\t command = this.commands[command];\r\n\r\n\t if (!command)\r\n\t return false;\r\n\r\n\t if (editor && editor.$readOnly && !command.readOnly)\r\n\t return false;\r\n\r\n\t var e = {editor: editor, command: command, args: args};\r\n\t e.returnValue = this._emit(\"exec\", e);\r\n\t this._signal(\"afterExec\", e);\r\n\r\n\t return e.returnValue === false ? false : true;\r\n\t };\r\n\r\n\t this.toggleRecording = function(editor) {\r\n\t if (this.$inReplay)\r\n\t return;\r\n\r\n\t editor && editor._emit(\"changeStatus\");\r\n\t if (this.recording) {\r\n\t this.macro.pop();\r\n\t this.removeEventListener(\"exec\", this.$addCommandToMacro);\r\n\r\n\t if (!this.macro.length)\r\n\t this.macro = this.oldMacro;\r\n\r\n\t return this.recording = false;\r\n\t }\r\n\t if (!this.$addCommandToMacro) {\r\n\t this.$addCommandToMacro = function(e) {\r\n\t this.macro.push([e.command, e.args]);\r\n\t }.bind(this);\r\n\t }\r\n\r\n\t this.oldMacro = this.macro;\r\n\t this.macro = [];\r\n\t this.on(\"exec\", this.$addCommandToMacro);\r\n\t return this.recording = true;\r\n\t };\r\n\r\n\t this.replay = function(editor) {\r\n\t if (this.$inReplay || !this.macro)\r\n\t return;\r\n\r\n\t if (this.recording)\r\n\t return this.toggleRecording(editor);\r\n\r\n\t try {\r\n\t this.$inReplay = true;\r\n\t this.macro.forEach(function(x) {\r\n\t if (typeof x == \"string\")\r\n\t this.exec(x, editor);\r\n\t else\r\n\t this.exec(x[0], editor, x[1]);\r\n\t }, this);\r\n\t } finally {\r\n\t this.$inReplay = false;\r\n\t }\r\n\t };\r\n\r\n\t this.trimMacro = function(m) {\r\n\t return m.map(function(x){\r\n\t if (typeof x[0] != \"string\")\r\n\t x[0] = x[0].name;\r\n\t if (!x[1])\r\n\t x = x[0];\r\n\t return x;\r\n\t });\r\n\t };\r\n\r\n\t}).call(CommandManager.prototype);\r\n\r\n\texports.CommandManager = CommandManager;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar lang = acequire(\"../lib/lang\");\r\n\tvar config = acequire(\"../config\");\r\n\tvar Range = acequire(\"../range\").Range;\r\n\r\n\tfunction bindKey(win, mac) {\r\n\t return {win: win, mac: mac};\r\n\t}\r\n\texports.commands = [{\r\n\t name: \"showSettingsMenu\",\r\n\t bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\r\n\t exec: function(editor) {\r\n\t config.loadModule(\"ace/ext/settings_menu\", function(module) {\r\n\t module.init(editor);\r\n\t editor.showSettingsMenu();\r\n\t });\r\n\t },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"goToNextError\",\r\n\t bindKey: bindKey(\"Alt-E\", \"Ctrl-E\"),\r\n\t exec: function(editor) {\r\n\t config.loadModule(\"ace/ext/error_marker\", function(module) {\r\n\t module.showErrorMarker(editor, 1);\r\n\t });\r\n\t },\r\n\t scrollIntoView: \"animate\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"goToPreviousError\",\r\n\t bindKey: bindKey(\"Alt-Shift-E\", \"Ctrl-Shift-E\"),\r\n\t exec: function(editor) {\r\n\t config.loadModule(\"ace/ext/error_marker\", function(module) {\r\n\t module.showErrorMarker(editor, -1);\r\n\t });\r\n\t },\r\n\t scrollIntoView: \"animate\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectall\",\r\n\t bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\r\n\t exec: function(editor) { editor.selectAll(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"centerselection\",\r\n\t bindKey: bindKey(null, \"Ctrl-L\"),\r\n\t exec: function(editor) { editor.centerSelection(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotoline\",\r\n\t bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\r\n\t exec: function(editor) {\r\n\t var line = parseInt(prompt(\"Enter line number:\"), 10);\r\n\t if (!isNaN(line)) {\r\n\t editor.gotoLine(line);\r\n\t }\r\n\t },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"fold\",\r\n\t bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\r\n\t exec: function(editor) { editor.session.toggleFold(false); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"unfold\",\r\n\t bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\r\n\t exec: function(editor) { editor.session.toggleFold(true); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"toggleFoldWidget\",\r\n\t bindKey: bindKey(\"F2\", \"F2\"),\r\n\t exec: function(editor) { editor.session.toggleFoldWidget(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"toggleParentFoldWidget\",\r\n\t bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\r\n\t exec: function(editor) { editor.session.toggleFoldWidget(true); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"foldall\",\r\n\t bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\r\n\t exec: function(editor) { editor.session.foldAll(); },\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"foldOther\",\r\n\t bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\r\n\t exec: function(editor) { \r\n\t editor.session.foldAll();\r\n\t editor.session.unfold(editor.selection.getAllRanges());\r\n\t },\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"unfoldall\",\r\n\t bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\r\n\t exec: function(editor) { editor.session.unfold(); },\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"findnext\",\r\n\t bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\r\n\t exec: function(editor) { editor.findNext(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"findprevious\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\r\n\t exec: function(editor) { editor.findPrevious(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectOrFindNext\",\r\n\t bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\r\n\t exec: function(editor) {\r\n\t if (editor.selection.isEmpty())\r\n\t editor.selection.selectWord();\r\n\t else\r\n\t editor.findNext(); \r\n\t },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectOrFindPrevious\",\r\n\t bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\r\n\t exec: function(editor) { \r\n\t if (editor.selection.isEmpty())\r\n\t editor.selection.selectWord();\r\n\t else\r\n\t editor.findPrevious();\r\n\t },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"find\",\r\n\t bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\r\n\t exec: function(editor) {\r\n\t config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor)});\r\n\t },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"overwrite\",\r\n\t bindKey: \"Insert\",\r\n\t exec: function(editor) { editor.toggleOverwrite(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selecttostart\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Up\"),\r\n\t exec: function(editor) { editor.getSelection().selectFileStart(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t readOnly: true,\r\n\t scrollIntoView: \"animate\",\r\n\t aceCommandGroup: \"fileJump\"\r\n\t}, {\r\n\t name: \"gotostart\",\r\n\t bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\r\n\t exec: function(editor) { editor.navigateFileStart(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t readOnly: true,\r\n\t scrollIntoView: \"animate\",\r\n\t aceCommandGroup: \"fileJump\"\r\n\t}, {\r\n\t name: \"selectup\",\r\n\t bindKey: bindKey(\"Shift-Up\", \"Shift-Up\"),\r\n\t exec: function(editor) { editor.getSelection().selectUp(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"golineup\",\r\n\t bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\r\n\t exec: function(editor, args) { editor.navigateUp(args.times); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selecttoend\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-Down\"),\r\n\t exec: function(editor) { editor.getSelection().selectFileEnd(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t readOnly: true,\r\n\t scrollIntoView: \"animate\",\r\n\t aceCommandGroup: \"fileJump\"\r\n\t}, {\r\n\t name: \"gotoend\",\r\n\t bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\r\n\t exec: function(editor) { editor.navigateFileEnd(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t readOnly: true,\r\n\t scrollIntoView: \"animate\",\r\n\t aceCommandGroup: \"fileJump\"\r\n\t}, {\r\n\t name: \"selectdown\",\r\n\t bindKey: bindKey(\"Shift-Down\", \"Shift-Down\"),\r\n\t exec: function(editor) { editor.getSelection().selectDown(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"golinedown\",\r\n\t bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\r\n\t exec: function(editor, args) { editor.navigateDown(args.times); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectwordleft\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\r\n\t exec: function(editor) { editor.getSelection().selectWordLeft(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotowordleft\",\r\n\t bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\r\n\t exec: function(editor) { editor.navigateWordLeft(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selecttolinestart\",\r\n\t bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left\"),\r\n\t exec: function(editor) { editor.getSelection().selectLineStart(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotolinestart\",\r\n\t bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\r\n\t exec: function(editor) { editor.navigateLineStart(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectleft\",\r\n\t bindKey: bindKey(\"Shift-Left\", \"Shift-Left\"),\r\n\t exec: function(editor) { editor.getSelection().selectLeft(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotoleft\",\r\n\t bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\r\n\t exec: function(editor, args) { editor.navigateLeft(args.times); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectwordright\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\r\n\t exec: function(editor) { editor.getSelection().selectWordRight(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotowordright\",\r\n\t bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\r\n\t exec: function(editor) { editor.navigateWordRight(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selecttolineend\",\r\n\t bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right\"),\r\n\t exec: function(editor) { editor.getSelection().selectLineEnd(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotolineend\",\r\n\t bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\r\n\t exec: function(editor) { editor.navigateLineEnd(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectright\",\r\n\t bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\r\n\t exec: function(editor) { editor.getSelection().selectRight(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotoright\",\r\n\t bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\r\n\t exec: function(editor, args) { editor.navigateRight(args.times); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectpagedown\",\r\n\t bindKey: \"Shift-PageDown\",\r\n\t exec: function(editor) { editor.selectPageDown(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"pagedown\",\r\n\t bindKey: bindKey(null, \"Option-PageDown\"),\r\n\t exec: function(editor) { editor.scrollPageDown(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotopagedown\",\r\n\t bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\r\n\t exec: function(editor) { editor.gotoPageDown(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectpageup\",\r\n\t bindKey: \"Shift-PageUp\",\r\n\t exec: function(editor) { editor.selectPageUp(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"pageup\",\r\n\t bindKey: bindKey(null, \"Option-PageUp\"),\r\n\t exec: function(editor) { editor.scrollPageUp(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotopageup\",\r\n\t bindKey: \"PageUp\",\r\n\t exec: function(editor) { editor.gotoPageUp(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"scrollup\",\r\n\t bindKey: bindKey(\"Ctrl-Up\", null),\r\n\t exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"scrolldown\",\r\n\t bindKey: bindKey(\"Ctrl-Down\", null),\r\n\t exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectlinestart\",\r\n\t bindKey: \"Shift-Home\",\r\n\t exec: function(editor) { editor.getSelection().selectLineStart(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectlineend\",\r\n\t bindKey: \"Shift-End\",\r\n\t exec: function(editor) { editor.getSelection().selectLineEnd(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"togglerecording\",\r\n\t bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\r\n\t exec: function(editor) { editor.commands.toggleRecording(editor); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"replaymacro\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\r\n\t exec: function(editor) { editor.commands.replay(editor); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"jumptomatching\",\r\n\t bindKey: bindKey(\"Ctrl-P\", \"Ctrl-P\"),\r\n\t exec: function(editor) { editor.jumpToMatching(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"animate\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selecttomatching\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-P\", \"Ctrl-Shift-P\"),\r\n\t exec: function(editor) { editor.jumpToMatching(true); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"animate\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"expandToMatching\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\r\n\t exec: function(editor) { editor.jumpToMatching(true, true); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"animate\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"passKeysToBrowser\",\r\n\t bindKey: bindKey(null, null),\r\n\t exec: function() {},\r\n\t passEvent: true,\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"copy\",\r\n\t exec: function(editor) {\r\n\t },\r\n\t readOnly: true\r\n\t},\r\n\t{\r\n\t name: \"cut\",\r\n\t exec: function(editor) {\r\n\t var range = editor.getSelectionRange();\r\n\t editor._emit(\"cut\", range);\r\n\r\n\t if (!editor.selection.isEmpty()) {\r\n\t editor.session.remove(range);\r\n\t editor.clearSelection();\r\n\t }\r\n\t },\r\n\t scrollIntoView: \"cursor\",\r\n\t multiSelectAction: \"forEach\"\r\n\t}, {\r\n\t name: \"paste\",\r\n\t exec: function(editor, args) {\r\n\t editor.$handlePaste(args);\r\n\t },\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"removeline\",\r\n\t bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\r\n\t exec: function(editor) { editor.removeLines(); },\r\n\t scrollIntoView: \"cursor\",\r\n\t multiSelectAction: \"forEachLine\"\r\n\t}, {\r\n\t name: \"duplicateSelection\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\r\n\t exec: function(editor) { editor.duplicateSelection(); },\r\n\t scrollIntoView: \"cursor\",\r\n\t multiSelectAction: \"forEach\"\r\n\t}, {\r\n\t name: \"sortlines\",\r\n\t bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\r\n\t exec: function(editor) { editor.sortLines(); },\r\n\t scrollIntoView: \"selection\",\r\n\t multiSelectAction: \"forEachLine\"\r\n\t}, {\r\n\t name: \"togglecomment\",\r\n\t bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\r\n\t exec: function(editor) { editor.toggleCommentLines(); },\r\n\t multiSelectAction: \"forEachLine\",\r\n\t scrollIntoView: \"selectionPart\"\r\n\t}, {\r\n\t name: \"toggleBlockComment\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\r\n\t exec: function(editor) { editor.toggleBlockComment(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"selectionPart\"\r\n\t}, {\r\n\t name: \"modifyNumberUp\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\r\n\t exec: function(editor) { editor.modifyNumber(1); },\r\n\t scrollIntoView: \"cursor\",\r\n\t multiSelectAction: \"forEach\"\r\n\t}, {\r\n\t name: \"modifyNumberDown\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\r\n\t exec: function(editor) { editor.modifyNumber(-1); },\r\n\t scrollIntoView: \"cursor\",\r\n\t multiSelectAction: \"forEach\"\r\n\t}, {\r\n\t name: \"replace\",\r\n\t bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\r\n\t exec: function(editor) {\r\n\t config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor, true)});\r\n\t }\r\n\t}, {\r\n\t name: \"undo\",\r\n\t bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\r\n\t exec: function(editor) { editor.undo(); }\r\n\t}, {\r\n\t name: \"redo\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\r\n\t exec: function(editor) { editor.redo(); }\r\n\t}, {\r\n\t name: \"copylinesup\",\r\n\t bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\r\n\t exec: function(editor) { editor.copyLinesUp(); },\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"movelinesup\",\r\n\t bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\r\n\t exec: function(editor) { editor.moveLinesUp(); },\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"copylinesdown\",\r\n\t bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\r\n\t exec: function(editor) { editor.copyLinesDown(); },\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"movelinesdown\",\r\n\t bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\r\n\t exec: function(editor) { editor.moveLinesDown(); },\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"del\",\r\n\t bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\r\n\t exec: function(editor) { editor.remove(\"right\"); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"backspace\",\r\n\t bindKey: bindKey(\r\n\t \"Shift-Backspace|Backspace\",\r\n\t \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"\r\n\t ),\r\n\t exec: function(editor) { editor.remove(\"left\"); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"cut_or_delete\",\r\n\t bindKey: bindKey(\"Shift-Delete\", null),\r\n\t exec: function(editor) { \r\n\t if (editor.selection.isEmpty()) {\r\n\t editor.remove(\"left\");\r\n\t } else {\r\n\t return false;\r\n\t }\r\n\t },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"removetolinestart\",\r\n\t bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\r\n\t exec: function(editor) { editor.removeToLineStart(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"removetolineend\",\r\n\t bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K\"),\r\n\t exec: function(editor) { editor.removeToLineEnd(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"removewordleft\",\r\n\t bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\r\n\t exec: function(editor) { editor.removeWordLeft(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"removewordright\",\r\n\t bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\r\n\t exec: function(editor) { editor.removeWordRight(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"outdent\",\r\n\t bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\r\n\t exec: function(editor) { editor.blockOutdent(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"selectionPart\"\r\n\t}, {\r\n\t name: \"indent\",\r\n\t bindKey: bindKey(\"Tab\", \"Tab\"),\r\n\t exec: function(editor) { editor.indent(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"selectionPart\"\r\n\t}, {\r\n\t name: \"blockoutdent\",\r\n\t bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\r\n\t exec: function(editor) { editor.blockOutdent(); },\r\n\t multiSelectAction: \"forEachLine\",\r\n\t scrollIntoView: \"selectionPart\"\r\n\t}, {\r\n\t name: \"blockindent\",\r\n\t bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\r\n\t exec: function(editor) { editor.blockIndent(); },\r\n\t multiSelectAction: \"forEachLine\",\r\n\t scrollIntoView: \"selectionPart\"\r\n\t}, {\r\n\t name: \"insertstring\",\r\n\t exec: function(editor, str) { editor.insert(str); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"inserttext\",\r\n\t exec: function(editor, args) {\r\n\t editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\r\n\t },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"splitline\",\r\n\t bindKey: bindKey(null, \"Ctrl-O\"),\r\n\t exec: function(editor) { editor.splitLine(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"transposeletters\",\r\n\t bindKey: bindKey(\"Ctrl-T\", \"Ctrl-T\"),\r\n\t exec: function(editor) { editor.transposeLetters(); },\r\n\t multiSelectAction: function(editor) {editor.transposeSelections(1); },\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"touppercase\",\r\n\t bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\r\n\t exec: function(editor) { editor.toUpperCase(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"tolowercase\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\r\n\t exec: function(editor) { editor.toLowerCase(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"expandtoline\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\r\n\t exec: function(editor) {\r\n\t var range = editor.selection.getRange();\r\n\r\n\t range.start.column = range.end.column = 0;\r\n\t range.end.row++;\r\n\t editor.selection.setRange(range, false);\r\n\t },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"joinlines\",\r\n\t bindKey: bindKey(null, null),\r\n\t exec: function(editor) {\r\n\t var isBackwards = editor.selection.isBackwards();\r\n\t var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\r\n\t var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\r\n\t var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\r\n\t var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\r\n\t var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\r\n\t var insertLine = editor.session.doc.getLine(selectionStart.row);\r\n\r\n\t for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\r\n\t var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\r\n\t if (curLine.length !== 0) {\r\n\t curLine = \" \" + curLine;\r\n\t }\r\n\t insertLine += curLine;\r\n\t }\r\n\r\n\t if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\r\n\t insertLine += editor.session.doc.getNewLineCharacter();\r\n\t }\r\n\r\n\t editor.clearSelection();\r\n\t editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\r\n\r\n\t if (selectedCount > 0) {\r\n\t editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\r\n\t editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\r\n\t } else {\r\n\t firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\r\n\t editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\r\n\t }\r\n\t },\r\n\t multiSelectAction: \"forEach\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"invertSelection\",\r\n\t bindKey: bindKey(null, null),\r\n\t exec: function(editor) {\r\n\t var endRow = editor.session.doc.getLength() - 1;\r\n\t var endCol = editor.session.doc.getLine(endRow).length;\r\n\t var ranges = editor.selection.rangeList.ranges;\r\n\t var newRanges = [];\r\n\t if (ranges.length < 1) {\r\n\t ranges = [editor.selection.getRange()];\r\n\t }\r\n\r\n\t for (var i = 0; i < ranges.length; i++) {\r\n\t if (i == (ranges.length - 1)) {\r\n\t if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\r\n\t newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\r\n\t }\r\n\t }\r\n\r\n\t if (i === 0) {\r\n\t if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\r\n\t newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\r\n\t }\r\n\t } else {\r\n\t newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column));\r\n\t }\r\n\t }\r\n\r\n\t editor.exitMultiSelectMode();\r\n\t editor.clearSelection();\r\n\r\n\t for(var i = 0; i < newRanges.length; i++) {\r\n\t editor.selection.addRange(newRanges[i], false);\r\n\t }\r\n\t },\r\n\t readOnly: true,\r\n\t scrollIntoView: \"none\"\r\n\t}];\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tacequire(\"./lib/fixoldbrowsers\");\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar dom = acequire(\"./lib/dom\");\r\n\tvar lang = acequire(\"./lib/lang\");\r\n\tvar useragent = acequire(\"./lib/useragent\");\r\n\tvar TextInput = acequire(\"./keyboard/textinput\").TextInput;\r\n\tvar MouseHandler = acequire(\"./mouse/mouse_handler\").MouseHandler;\r\n\tvar FoldHandler = acequire(\"./mouse/fold_handler\").FoldHandler;\r\n\tvar KeyBinding = acequire(\"./keyboard/keybinding\").KeyBinding;\r\n\tvar EditSession = acequire(\"./edit_session\").EditSession;\r\n\tvar Search = acequire(\"./search\").Search;\r\n\tvar Range = acequire(\"./range\").Range;\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\tvar CommandManager = acequire(\"./commands/command_manager\").CommandManager;\r\n\tvar defaultCommands = acequire(\"./commands/default_commands\").commands;\r\n\tvar config = acequire(\"./config\");\r\n\tvar TokenIterator = acequire(\"./token_iterator\").TokenIterator;\r\n\tvar Editor = function(renderer, session) {\r\n\t var container = renderer.getContainerElement();\r\n\t this.container = container;\r\n\t this.renderer = renderer;\r\n\r\n\t this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\r\n\t this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\r\n\t this.renderer.textarea = this.textInput.getElement();\r\n\t this.keyBinding = new KeyBinding(this);\r\n\t this.$mouseHandler = new MouseHandler(this);\r\n\t new FoldHandler(this);\r\n\r\n\t this.$blockScrolling = 0;\r\n\t this.$search = new Search().set({\r\n\t wrap: true\r\n\t });\r\n\r\n\t this.$historyTracker = this.$historyTracker.bind(this);\r\n\t this.commands.on(\"exec\", this.$historyTracker);\r\n\r\n\t this.$initOperationListeners();\r\n\t \r\n\t this._$emitInputEvent = lang.delayedCall(function() {\r\n\t this._signal(\"input\", {});\r\n\t if (this.session && this.session.bgTokenizer)\r\n\t this.session.bgTokenizer.scheduleStart();\r\n\t }.bind(this));\r\n\t \r\n\t this.on(\"change\", function(_, _self) {\r\n\t _self._$emitInputEvent.schedule(31);\r\n\t });\r\n\r\n\t this.setSession(session || new EditSession(\"\"));\r\n\t config.resetOptions(this);\r\n\t config._signal(\"editor\", this);\r\n\t};\r\n\r\n\t(function(){\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\r\n\t this.$initOperationListeners = function() {\r\n\t function last(a) {return a[a.length - 1]}\r\n\r\n\t this.selections = [];\r\n\t this.commands.on(\"exec\", this.startOperation.bind(this), true);\r\n\t this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\r\n\r\n\t this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this));\r\n\r\n\t this.on(\"change\", function() {\r\n\t this.curOp || this.startOperation();\r\n\t this.curOp.docChanged = true;\r\n\t }.bind(this), true);\r\n\r\n\t this.on(\"changeSelection\", function() {\r\n\t this.curOp || this.startOperation();\r\n\t this.curOp.selectionChanged = true;\r\n\t }.bind(this), true);\r\n\t };\r\n\r\n\t this.curOp = null;\r\n\t this.prevOp = {};\r\n\t this.startOperation = function(commadEvent) {\r\n\t if (this.curOp) {\r\n\t if (!commadEvent || this.curOp.command)\r\n\t return;\r\n\t this.prevOp = this.curOp;\r\n\t }\r\n\t if (!commadEvent) {\r\n\t this.previousCommand = null;\r\n\t commadEvent = {};\r\n\t }\r\n\r\n\t this.$opResetTimer.schedule();\r\n\t this.curOp = {\r\n\t command: commadEvent.command || {},\r\n\t args: commadEvent.args,\r\n\t scrollTop: this.renderer.scrollTop\r\n\t };\r\n\t if (this.curOp.command.name && this.curOp.command.scrollIntoView !== undefined)\r\n\t this.$blockScrolling++;\r\n\t };\r\n\r\n\t this.endOperation = function(e) {\r\n\t if (this.curOp) {\r\n\t if (e && e.returnValue === false)\r\n\t return this.curOp = null;\r\n\t this._signal(\"beforeEndOperation\");\r\n\t var command = this.curOp.command;\r\n\t if (command.name && this.$blockScrolling > 0)\r\n\t this.$blockScrolling--;\r\n\t var scrollIntoView = command && command.scrollIntoView;\r\n\t if (scrollIntoView) {\r\n\t switch (scrollIntoView) {\r\n\t case \"center-animate\":\r\n\t scrollIntoView = \"animate\";\r\n\t case \"center\":\r\n\t this.renderer.scrollCursorIntoView(null, 0.5);\r\n\t break;\r\n\t case \"animate\":\r\n\t case \"cursor\":\r\n\t this.renderer.scrollCursorIntoView();\r\n\t break;\r\n\t case \"selectionPart\":\r\n\t var range = this.selection.getRange();\r\n\t var config = this.renderer.layerConfig;\r\n\t if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\r\n\t this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\r\n\t }\r\n\t break;\r\n\t default:\r\n\t break;\r\n\t }\r\n\t if (scrollIntoView == \"animate\")\r\n\t this.renderer.animateScrolling(this.curOp.scrollTop);\r\n\t }\r\n\t \r\n\t this.prevOp = this.curOp;\r\n\t this.curOp = null;\r\n\t }\r\n\t };\r\n\t this.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\r\n\t this.$historyTracker = function(e) {\r\n\t if (!this.$mergeUndoDeltas)\r\n\t return;\r\n\r\n\t var prev = this.prevOp;\r\n\t var mergeableCommands = this.$mergeableCommands;\r\n\t var shouldMerge = prev.command && (e.command.name == prev.command.name);\r\n\t if (e.command.name == \"insertstring\") {\r\n\t var text = e.args;\r\n\t if (this.mergeNextCommand === undefined)\r\n\t this.mergeNextCommand = true;\r\n\r\n\t shouldMerge = shouldMerge\r\n\t && this.mergeNextCommand // previous command allows to coalesce with\r\n\t && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\r\n\r\n\t this.mergeNextCommand = true;\r\n\t } else {\r\n\t shouldMerge = shouldMerge\r\n\t && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\r\n\t }\r\n\r\n\t if (\r\n\t this.$mergeUndoDeltas != \"always\"\r\n\t && Date.now() - this.sequenceStartTime > 2000\r\n\t ) {\r\n\t shouldMerge = false; // the sequence is too long\r\n\t }\r\n\r\n\t if (shouldMerge)\r\n\t this.session.mergeUndoDeltas = true;\r\n\t else if (mergeableCommands.indexOf(e.command.name) !== -1)\r\n\t this.sequenceStartTime = Date.now();\r\n\t };\r\n\t this.setKeyboardHandler = function(keyboardHandler, cb) {\r\n\t if (keyboardHandler && typeof keyboardHandler === \"string\") {\r\n\t this.$keybindingId = keyboardHandler;\r\n\t var _self = this;\r\n\t config.loadModule([\"keybinding\", keyboardHandler], function(module) {\r\n\t if (_self.$keybindingId == keyboardHandler)\r\n\t _self.keyBinding.setKeyboardHandler(module && module.handler);\r\n\t cb && cb();\r\n\t });\r\n\t } else {\r\n\t this.$keybindingId = null;\r\n\t this.keyBinding.setKeyboardHandler(keyboardHandler);\r\n\t cb && cb();\r\n\t }\r\n\t };\r\n\t this.getKeyboardHandler = function() {\r\n\t return this.keyBinding.getKeyboardHandler();\r\n\t };\r\n\t this.setSession = function(session) {\r\n\t if (this.session == session)\r\n\t return;\r\n\t if (this.curOp) this.endOperation();\r\n\t this.curOp = {};\r\n\r\n\t var oldSession = this.session;\r\n\t if (oldSession) {\r\n\t this.session.off(\"change\", this.$onDocumentChange);\r\n\t this.session.off(\"changeMode\", this.$onChangeMode);\r\n\t this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\r\n\t this.session.off(\"changeTabSize\", this.$onChangeTabSize);\r\n\t this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\r\n\t this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\r\n\t this.session.off(\"changeFold\", this.$onChangeFold);\r\n\t this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\r\n\t this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\r\n\t this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\r\n\t this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\r\n\t this.session.off(\"changeOverwrite\", this.$onCursorChange);\r\n\t this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\r\n\t this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\r\n\r\n\t var selection = this.session.getSelection();\r\n\t selection.off(\"changeCursor\", this.$onCursorChange);\r\n\t selection.off(\"changeSelection\", this.$onSelectionChange);\r\n\t }\r\n\r\n\t this.session = session;\r\n\t if (session) {\r\n\t this.$onDocumentChange = this.onDocumentChange.bind(this);\r\n\t session.on(\"change\", this.$onDocumentChange);\r\n\t this.renderer.setSession(session);\r\n\t \r\n\t this.$onChangeMode = this.onChangeMode.bind(this);\r\n\t session.on(\"changeMode\", this.$onChangeMode);\r\n\t \r\n\t this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\r\n\t session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\r\n\t \r\n\t this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\r\n\t session.on(\"changeTabSize\", this.$onChangeTabSize);\r\n\t \r\n\t this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\r\n\t session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\r\n\t \r\n\t this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\r\n\t session.on(\"changeWrapMode\", this.$onChangeWrapMode);\r\n\t \r\n\t this.$onChangeFold = this.onChangeFold.bind(this);\r\n\t session.on(\"changeFold\", this.$onChangeFold);\r\n\t \r\n\t this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\r\n\t this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\r\n\t \r\n\t this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\r\n\t this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\r\n\t \r\n\t this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\r\n\t this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\r\n\t \r\n\t this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\r\n\t this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\r\n\t \r\n\t this.$onCursorChange = this.onCursorChange.bind(this);\r\n\t this.session.on(\"changeOverwrite\", this.$onCursorChange);\r\n\t \r\n\t this.$onScrollTopChange = this.onScrollTopChange.bind(this);\r\n\t this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\r\n\t \r\n\t this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\r\n\t this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\r\n\t \r\n\t this.selection = session.getSelection();\r\n\t this.selection.on(\"changeCursor\", this.$onCursorChange);\r\n\t \r\n\t this.$onSelectionChange = this.onSelectionChange.bind(this);\r\n\t this.selection.on(\"changeSelection\", this.$onSelectionChange);\r\n\t \r\n\t this.onChangeMode();\r\n\t \r\n\t this.$blockScrolling += 1;\r\n\t this.onCursorChange();\r\n\t this.$blockScrolling -= 1;\r\n\t \r\n\t this.onScrollTopChange();\r\n\t this.onScrollLeftChange();\r\n\t this.onSelectionChange();\r\n\t this.onChangeFrontMarker();\r\n\t this.onChangeBackMarker();\r\n\t this.onChangeBreakpoint();\r\n\t this.onChangeAnnotation();\r\n\t this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\r\n\t this.renderer.updateFull();\r\n\t } else {\r\n\t this.selection = null;\r\n\t this.renderer.setSession(session);\r\n\t }\r\n\r\n\t this._signal(\"changeSession\", {\r\n\t session: session,\r\n\t oldSession: oldSession\r\n\t });\r\n\t \r\n\t this.curOp = null;\r\n\t \r\n\t oldSession && oldSession._signal(\"changeEditor\", {oldEditor: this});\r\n\t session && session._signal(\"changeEditor\", {editor: this});\r\n\t };\r\n\t this.getSession = function() {\r\n\t return this.session;\r\n\t };\r\n\t this.setValue = function(val, cursorPos) {\r\n\t this.session.doc.setValue(val);\r\n\r\n\t if (!cursorPos)\r\n\t this.selectAll();\r\n\t else if (cursorPos == 1)\r\n\t this.navigateFileEnd();\r\n\t else if (cursorPos == -1)\r\n\t this.navigateFileStart();\r\n\r\n\t return val;\r\n\t };\r\n\t this.getValue = function() {\r\n\t return this.session.getValue();\r\n\t };\r\n\t this.getSelection = function() {\r\n\t return this.selection;\r\n\t };\r\n\t this.resize = function(force) {\r\n\t this.renderer.onResize(force);\r\n\t };\r\n\t this.setTheme = function(theme, cb) {\r\n\t this.renderer.setTheme(theme, cb);\r\n\t };\r\n\t this.getTheme = function() {\r\n\t return this.renderer.getTheme();\r\n\t };\r\n\t this.setStyle = function(style) {\r\n\t this.renderer.setStyle(style);\r\n\t };\r\n\t this.unsetStyle = function(style) {\r\n\t this.renderer.unsetStyle(style);\r\n\t };\r\n\t this.getFontSize = function () {\r\n\t return this.getOption(\"fontSize\") ||\r\n\t dom.computedStyle(this.container, \"fontSize\");\r\n\t };\r\n\t this.setFontSize = function(size) {\r\n\t this.setOption(\"fontSize\", size);\r\n\t };\r\n\r\n\t this.$highlightBrackets = function() {\r\n\t if (this.session.$bracketHighlight) {\r\n\t this.session.removeMarker(this.session.$bracketHighlight);\r\n\t this.session.$bracketHighlight = null;\r\n\t }\r\n\r\n\t if (this.$highlightPending) {\r\n\t return;\r\n\t }\r\n\t var self = this;\r\n\t this.$highlightPending = true;\r\n\t setTimeout(function() {\r\n\t self.$highlightPending = false;\r\n\t var session = self.session;\r\n\t if (!session || !session.bgTokenizer) return;\r\n\t var pos = session.findMatchingBracket(self.getCursorPosition());\r\n\t if (pos) {\r\n\t var range = new Range(pos.row, pos.column, pos.row, pos.column + 1);\r\n\t } else if (session.$mode.getMatching) {\r\n\t var range = session.$mode.getMatching(self.session);\r\n\t }\r\n\t if (range)\r\n\t session.$bracketHighlight = session.addMarker(range, \"ace_bracket\", \"text\");\r\n\t }, 50);\r\n\t };\r\n\t this.$highlightTags = function() {\r\n\t if (this.$highlightTagPending)\r\n\t return;\r\n\t var self = this;\r\n\t this.$highlightTagPending = true;\r\n\t setTimeout(function() {\r\n\t self.$highlightTagPending = false;\r\n\t \r\n\t var session = self.session;\r\n\t if (!session || !session.bgTokenizer) return;\r\n\t \r\n\t var pos = self.getCursorPosition();\r\n\t var iterator = new TokenIterator(self.session, pos.row, pos.column);\r\n\t var token = iterator.getCurrentToken();\r\n\t \r\n\t if (!token || !/\\b(?:tag-open|tag-name)/.test(token.type)) {\r\n\t session.removeMarker(session.$tagHighlight);\r\n\t session.$tagHighlight = null;\r\n\t return;\r\n\t }\r\n\t \r\n\t if (token.type.indexOf(\"tag-open\") != -1) {\r\n\t token = iterator.stepForward();\r\n\t if (!token)\r\n\t return;\r\n\t }\r\n\t \r\n\t var tag = token.value;\r\n\t var depth = 0;\r\n\t var prevToken = iterator.stepBackward();\r\n\t \r\n\t if (prevToken.value == '<'){\r\n\t do {\r\n\t prevToken = token;\r\n\t token = iterator.stepForward();\r\n\t \r\n\t if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) {\r\n\t if (prevToken.value === '<'){\r\n\t depth++;\r\n\t } else if (prevToken.value === ''){\r\n\t depth--;\r\n\t }\r\n\t }\r\n\t \r\n\t } while (token && depth >= 0);\r\n\t } else {\r\n\t do {\r\n\t token = prevToken;\r\n\t prevToken = iterator.stepBackward();\r\n\t \r\n\t if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) {\r\n\t if (prevToken.value === '<') {\r\n\t depth++;\r\n\t } else if (prevToken.value === '') {\r\n\t depth--;\r\n\t }\r\n\t }\r\n\t } while (prevToken && depth <= 0);\r\n\t iterator.stepForward();\r\n\t }\r\n\t \r\n\t if (!token) {\r\n\t session.removeMarker(session.$tagHighlight);\r\n\t session.$tagHighlight = null;\r\n\t return;\r\n\t }\r\n\t \r\n\t var row = iterator.getCurrentTokenRow();\r\n\t var column = iterator.getCurrentTokenColumn();\r\n\t var range = new Range(row, column, row, column+token.value.length);\r\n\t if (session.$tagHighlight && range.compareRange(session.$backMarkers[session.$tagHighlight].range)!==0) {\r\n\t session.removeMarker(session.$tagHighlight);\r\n\t session.$tagHighlight = null;\r\n\t }\r\n\t \r\n\t if (range && !session.$tagHighlight)\r\n\t session.$tagHighlight = session.addMarker(range, \"ace_bracket\", \"text\");\r\n\t }, 50);\r\n\t };\r\n\t this.focus = function() {\r\n\t var _self = this;\r\n\t setTimeout(function() {\r\n\t _self.textInput.focus();\r\n\t });\r\n\t this.textInput.focus();\r\n\t };\r\n\t this.isFocused = function() {\r\n\t return this.textInput.isFocused();\r\n\t };\r\n\t this.blur = function() {\r\n\t this.textInput.blur();\r\n\t };\r\n\t this.onFocus = function(e) {\r\n\t if (this.$isFocused)\r\n\t return;\r\n\t this.$isFocused = true;\r\n\t this.renderer.showCursor();\r\n\t this.renderer.visualizeFocus();\r\n\t this._emit(\"focus\", e);\r\n\t };\r\n\t this.onBlur = function(e) {\r\n\t if (!this.$isFocused)\r\n\t return;\r\n\t this.$isFocused = false;\r\n\t this.renderer.hideCursor();\r\n\t this.renderer.visualizeBlur();\r\n\t this._emit(\"blur\", e);\r\n\t };\r\n\r\n\t this.$cursorChange = function() {\r\n\t this.renderer.updateCursor();\r\n\t };\r\n\t this.onDocumentChange = function(delta) {\r\n\t var wrap = this.session.$useWrapMode;\r\n\t var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\r\n\t this.renderer.updateLines(delta.start.row, lastRow, wrap);\r\n\r\n\t this._signal(\"change\", delta);\r\n\t this.$cursorChange();\r\n\t this.$updateHighlightActiveLine();\r\n\t };\r\n\r\n\t this.onTokenizerUpdate = function(e) {\r\n\t var rows = e.data;\r\n\t this.renderer.updateLines(rows.first, rows.last);\r\n\t };\r\n\r\n\r\n\t this.onScrollTopChange = function() {\r\n\t this.renderer.scrollToY(this.session.getScrollTop());\r\n\t };\r\n\r\n\t this.onScrollLeftChange = function() {\r\n\t this.renderer.scrollToX(this.session.getScrollLeft());\r\n\t };\r\n\t this.onCursorChange = function() {\r\n\t this.$cursorChange();\r\n\r\n\t if (!this.$blockScrolling) {\r\n\t config.warn(\"Automatically scrolling cursor into view after selection change\",\r\n\t \"this will be disabled in the next version\",\r\n\t \"set editor.$blockScrolling = Infinity to disable this message\"\r\n\t );\r\n\t this.renderer.scrollCursorIntoView();\r\n\t }\r\n\r\n\t this.$highlightBrackets();\r\n\t this.$highlightTags();\r\n\t this.$updateHighlightActiveLine();\r\n\t this._signal(\"changeSelection\");\r\n\t };\r\n\r\n\t this.$updateHighlightActiveLine = function() {\r\n\t var session = this.getSession();\r\n\r\n\t var highlight;\r\n\t if (this.$highlightActiveLine) {\r\n\t if ((this.$selectionStyle != \"line\" || !this.selection.isMultiLine()))\r\n\t highlight = this.getCursorPosition();\r\n\t if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\r\n\t highlight = false;\r\n\t }\r\n\r\n\t if (session.$highlightLineMarker && !highlight) {\r\n\t session.removeMarker(session.$highlightLineMarker.id);\r\n\t session.$highlightLineMarker = null;\r\n\t } else if (!session.$highlightLineMarker && highlight) {\r\n\t var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\r\n\t range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\r\n\t session.$highlightLineMarker = range;\r\n\t } else if (highlight) {\r\n\t session.$highlightLineMarker.start.row = highlight.row;\r\n\t session.$highlightLineMarker.end.row = highlight.row;\r\n\t session.$highlightLineMarker.start.column = highlight.column;\r\n\t session._signal(\"changeBackMarker\");\r\n\t }\r\n\t };\r\n\r\n\t this.onSelectionChange = function(e) {\r\n\t var session = this.session;\r\n\r\n\t if (session.$selectionMarker) {\r\n\t session.removeMarker(session.$selectionMarker);\r\n\t }\r\n\t session.$selectionMarker = null;\r\n\r\n\t if (!this.selection.isEmpty()) {\r\n\t var range = this.selection.getRange();\r\n\t var style = this.getSelectionStyle();\r\n\t session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\r\n\t } else {\r\n\t this.$updateHighlightActiveLine();\r\n\t }\r\n\r\n\t var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\r\n\t this.session.highlight(re);\r\n\r\n\t this._signal(\"changeSelection\");\r\n\t };\r\n\r\n\t this.$getSelectionHighLightRegexp = function() {\r\n\t var session = this.session;\r\n\r\n\t var selection = this.getSelectionRange();\r\n\t if (selection.isEmpty() || selection.isMultiLine())\r\n\t return;\r\n\r\n\t var startOuter = selection.start.column - 1;\r\n\t var endOuter = selection.end.column + 1;\r\n\t var line = session.getLine(selection.start.row);\r\n\t var lineCols = line.length;\r\n\t var needle = line.substring(Math.max(startOuter, 0),\r\n\t Math.min(endOuter, lineCols));\r\n\t if ((startOuter >= 0 && /^[\\w\\d]/.test(needle)) ||\r\n\t (endOuter <= lineCols && /[\\w\\d]$/.test(needle)))\r\n\t return;\r\n\r\n\t needle = line.substring(selection.start.column, selection.end.column);\r\n\t if (!/^[\\w\\d]+$/.test(needle))\r\n\t return;\r\n\r\n\t var re = this.$search.$assembleRegExp({\r\n\t wholeWord: true,\r\n\t caseSensitive: true,\r\n\t needle: needle\r\n\t });\r\n\r\n\t return re;\r\n\t };\r\n\r\n\r\n\t this.onChangeFrontMarker = function() {\r\n\t this.renderer.updateFrontMarkers();\r\n\t };\r\n\r\n\t this.onChangeBackMarker = function() {\r\n\t this.renderer.updateBackMarkers();\r\n\t };\r\n\r\n\r\n\t this.onChangeBreakpoint = function() {\r\n\t this.renderer.updateBreakpoints();\r\n\t };\r\n\r\n\t this.onChangeAnnotation = function() {\r\n\t this.renderer.setAnnotations(this.session.getAnnotations());\r\n\t };\r\n\r\n\r\n\t this.onChangeMode = function(e) {\r\n\t this.renderer.updateText();\r\n\t this._emit(\"changeMode\", e);\r\n\t };\r\n\r\n\r\n\t this.onChangeWrapLimit = function() {\r\n\t this.renderer.updateFull();\r\n\t };\r\n\r\n\t this.onChangeWrapMode = function() {\r\n\t this.renderer.onResize(true);\r\n\t };\r\n\r\n\r\n\t this.onChangeFold = function() {\r\n\t this.$updateHighlightActiveLine();\r\n\t this.renderer.updateFull();\r\n\t };\r\n\t this.getSelectedText = function() {\r\n\t return this.session.getTextRange(this.getSelectionRange());\r\n\t };\r\n\t this.getCopyText = function() {\r\n\t var text = this.getSelectedText();\r\n\t this._signal(\"copy\", text);\r\n\t return text;\r\n\t };\r\n\t this.onCopy = function() {\r\n\t this.commands.exec(\"copy\", this);\r\n\t };\r\n\t this.onCut = function() {\r\n\t this.commands.exec(\"cut\", this);\r\n\t };\r\n\t this.onPaste = function(text, event) {\r\n\t var e = {text: text, event: event};\r\n\t this.commands.exec(\"paste\", this, e);\r\n\t };\r\n\t \r\n\t this.$handlePaste = function(e) {\r\n\t if (typeof e == \"string\") \r\n\t e = {text: e};\r\n\t this._signal(\"paste\", e);\r\n\t var text = e.text;\r\n\t if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\r\n\t this.insert(text);\r\n\t } else {\r\n\t var lines = text.split(/\\r\\n|\\r|\\n/);\r\n\t var ranges = this.selection.rangeList.ranges;\r\n\t \r\n\t if (lines.length > ranges.length || lines.length < 2 || !lines[1])\r\n\t return this.commands.exec(\"insertstring\", this, text);\r\n\t \r\n\t for (var i = ranges.length; i--;) {\r\n\t var range = ranges[i];\r\n\t if (!range.isEmpty())\r\n\t this.session.remove(range);\r\n\t \r\n\t this.session.insert(range.start, lines[i]);\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t this.execCommand = function(command, args) {\r\n\t return this.commands.exec(command, this, args);\r\n\t };\r\n\t this.insert = function(text, pasted) {\r\n\t var session = this.session;\r\n\t var mode = session.getMode();\r\n\t var cursor = this.getCursorPosition();\r\n\r\n\t if (this.getBehavioursEnabled() && !pasted) {\r\n\t var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\r\n\t if (transform) {\r\n\t if (text !== transform.text) {\r\n\t this.session.mergeUndoDeltas = false;\r\n\t this.$mergeNextCommand = false;\r\n\t }\r\n\t text = transform.text;\r\n\r\n\t }\r\n\t }\r\n\t \r\n\t if (text == \"\\t\")\r\n\t text = this.session.getTabString();\r\n\t if (!this.selection.isEmpty()) {\r\n\t var range = this.getSelectionRange();\r\n\t cursor = this.session.remove(range);\r\n\t this.clearSelection();\r\n\t }\r\n\t else if (this.session.getOverwrite()) {\r\n\t var range = new Range.fromPoints(cursor, cursor);\r\n\t range.end.column += text.length;\r\n\t this.session.remove(range);\r\n\t }\r\n\r\n\t if (text == \"\\n\" || text == \"\\r\\n\") {\r\n\t var line = session.getLine(cursor.row);\r\n\t if (cursor.column > line.search(/\\S|$/)) {\r\n\t var d = line.substr(cursor.column).search(/\\S|$/);\r\n\t session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\r\n\t }\r\n\t }\r\n\t this.clearSelection();\r\n\r\n\t var start = cursor.column;\r\n\t var lineState = session.getState(cursor.row);\r\n\t var line = session.getLine(cursor.row);\r\n\t var shouldOutdent = mode.checkOutdent(lineState, line, text);\r\n\t var end = session.insert(cursor, text);\r\n\r\n\t if (transform && transform.selection) {\r\n\t if (transform.selection.length == 2) { // Transform relative to the current column\r\n\t this.selection.setSelectionRange(\r\n\t new Range(cursor.row, start + transform.selection[0],\r\n\t cursor.row, start + transform.selection[1]));\r\n\t } else { // Transform relative to the current row.\r\n\t this.selection.setSelectionRange(\r\n\t new Range(cursor.row + transform.selection[0],\r\n\t transform.selection[1],\r\n\t cursor.row + transform.selection[2],\r\n\t transform.selection[3]));\r\n\t }\r\n\t }\r\n\r\n\t if (session.getDocument().isNewLine(text)) {\r\n\t var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\r\n\r\n\t session.insert({row: cursor.row+1, column: 0}, lineIndent);\r\n\t }\r\n\t if (shouldOutdent)\r\n\t mode.autoOutdent(lineState, session, cursor.row);\r\n\t };\r\n\r\n\t this.onTextInput = function(text) {\r\n\t this.keyBinding.onTextInput(text);\r\n\t };\r\n\r\n\t this.onCommandKey = function(e, hashId, keyCode) {\r\n\t this.keyBinding.onCommandKey(e, hashId, keyCode);\r\n\t };\r\n\t this.setOverwrite = function(overwrite) {\r\n\t this.session.setOverwrite(overwrite);\r\n\t };\r\n\t this.getOverwrite = function() {\r\n\t return this.session.getOverwrite();\r\n\t };\r\n\t this.toggleOverwrite = function() {\r\n\t this.session.toggleOverwrite();\r\n\t };\r\n\t this.setScrollSpeed = function(speed) {\r\n\t this.setOption(\"scrollSpeed\", speed);\r\n\t };\r\n\t this.getScrollSpeed = function() {\r\n\t return this.getOption(\"scrollSpeed\");\r\n\t };\r\n\t this.setDragDelay = function(dragDelay) {\r\n\t this.setOption(\"dragDelay\", dragDelay);\r\n\t };\r\n\t this.getDragDelay = function() {\r\n\t return this.getOption(\"dragDelay\");\r\n\t };\r\n\t this.setSelectionStyle = function(val) {\r\n\t this.setOption(\"selectionStyle\", val);\r\n\t };\r\n\t this.getSelectionStyle = function() {\r\n\t return this.getOption(\"selectionStyle\");\r\n\t };\r\n\t this.setHighlightActiveLine = function(shouldHighlight) {\r\n\t this.setOption(\"highlightActiveLine\", shouldHighlight);\r\n\t };\r\n\t this.getHighlightActiveLine = function() {\r\n\t return this.getOption(\"highlightActiveLine\");\r\n\t };\r\n\t this.setHighlightGutterLine = function(shouldHighlight) {\r\n\t this.setOption(\"highlightGutterLine\", shouldHighlight);\r\n\t };\r\n\r\n\t this.getHighlightGutterLine = function() {\r\n\t return this.getOption(\"highlightGutterLine\");\r\n\t };\r\n\t this.setHighlightSelectedWord = function(shouldHighlight) {\r\n\t this.setOption(\"highlightSelectedWord\", shouldHighlight);\r\n\t };\r\n\t this.getHighlightSelectedWord = function() {\r\n\t return this.$highlightSelectedWord;\r\n\t };\r\n\r\n\t this.setAnimatedScroll = function(shouldAnimate){\r\n\t this.renderer.setAnimatedScroll(shouldAnimate);\r\n\t };\r\n\r\n\t this.getAnimatedScroll = function(){\r\n\t return this.renderer.getAnimatedScroll();\r\n\t };\r\n\t this.setShowInvisibles = function(showInvisibles) {\r\n\t this.renderer.setShowInvisibles(showInvisibles);\r\n\t };\r\n\t this.getShowInvisibles = function() {\r\n\t return this.renderer.getShowInvisibles();\r\n\t };\r\n\r\n\t this.setDisplayIndentGuides = function(display) {\r\n\t this.renderer.setDisplayIndentGuides(display);\r\n\t };\r\n\r\n\t this.getDisplayIndentGuides = function() {\r\n\t return this.renderer.getDisplayIndentGuides();\r\n\t };\r\n\t this.setShowPrintMargin = function(showPrintMargin) {\r\n\t this.renderer.setShowPrintMargin(showPrintMargin);\r\n\t };\r\n\t this.getShowPrintMargin = function() {\r\n\t return this.renderer.getShowPrintMargin();\r\n\t };\r\n\t this.setPrintMarginColumn = function(showPrintMargin) {\r\n\t this.renderer.setPrintMarginColumn(showPrintMargin);\r\n\t };\r\n\t this.getPrintMarginColumn = function() {\r\n\t return this.renderer.getPrintMarginColumn();\r\n\t };\r\n\t this.setReadOnly = function(readOnly) {\r\n\t this.setOption(\"readOnly\", readOnly);\r\n\t };\r\n\t this.getReadOnly = function() {\r\n\t return this.getOption(\"readOnly\");\r\n\t };\r\n\t this.setBehavioursEnabled = function (enabled) {\r\n\t this.setOption(\"behavioursEnabled\", enabled);\r\n\t };\r\n\t this.getBehavioursEnabled = function () {\r\n\t return this.getOption(\"behavioursEnabled\");\r\n\t };\r\n\t this.setWrapBehavioursEnabled = function (enabled) {\r\n\t this.setOption(\"wrapBehavioursEnabled\", enabled);\r\n\t };\r\n\t this.getWrapBehavioursEnabled = function () {\r\n\t return this.getOption(\"wrapBehavioursEnabled\");\r\n\t };\r\n\t this.setShowFoldWidgets = function(show) {\r\n\t this.setOption(\"showFoldWidgets\", show);\r\n\r\n\t };\r\n\t this.getShowFoldWidgets = function() {\r\n\t return this.getOption(\"showFoldWidgets\");\r\n\t };\r\n\r\n\t this.setFadeFoldWidgets = function(fade) {\r\n\t this.setOption(\"fadeFoldWidgets\", fade);\r\n\t };\r\n\r\n\t this.getFadeFoldWidgets = function() {\r\n\t return this.getOption(\"fadeFoldWidgets\");\r\n\t };\r\n\t this.remove = function(dir) {\r\n\t if (this.selection.isEmpty()){\r\n\t if (dir == \"left\")\r\n\t this.selection.selectLeft();\r\n\t else\r\n\t this.selection.selectRight();\r\n\t }\r\n\r\n\t var range = this.getSelectionRange();\r\n\t if (this.getBehavioursEnabled()) {\r\n\t var session = this.session;\r\n\t var state = session.getState(range.start.row);\r\n\t var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\r\n\r\n\t if (range.end.column === 0) {\r\n\t var text = session.getTextRange(range);\r\n\t if (text[text.length - 1] == \"\\n\") {\r\n\t var line = session.getLine(range.end.row);\r\n\t if (/^\\s+$/.test(line)) {\r\n\t range.end.column = line.length;\r\n\t }\r\n\t }\r\n\t }\r\n\t if (new_range)\r\n\t range = new_range;\r\n\t }\r\n\r\n\t this.session.remove(range);\r\n\t this.clearSelection();\r\n\t };\r\n\t this.removeWordRight = function() {\r\n\t if (this.selection.isEmpty())\r\n\t this.selection.selectWordRight();\r\n\r\n\t this.session.remove(this.getSelectionRange());\r\n\t this.clearSelection();\r\n\t };\r\n\t this.removeWordLeft = function() {\r\n\t if (this.selection.isEmpty())\r\n\t this.selection.selectWordLeft();\r\n\r\n\t this.session.remove(this.getSelectionRange());\r\n\t this.clearSelection();\r\n\t };\r\n\t this.removeToLineStart = function() {\r\n\t if (this.selection.isEmpty())\r\n\t this.selection.selectLineStart();\r\n\r\n\t this.session.remove(this.getSelectionRange());\r\n\t this.clearSelection();\r\n\t };\r\n\t this.removeToLineEnd = function() {\r\n\t if (this.selection.isEmpty())\r\n\t this.selection.selectLineEnd();\r\n\r\n\t var range = this.getSelectionRange();\r\n\t if (range.start.column == range.end.column && range.start.row == range.end.row) {\r\n\t range.end.column = 0;\r\n\t range.end.row++;\r\n\t }\r\n\r\n\t this.session.remove(range);\r\n\t this.clearSelection();\r\n\t };\r\n\t this.splitLine = function() {\r\n\t if (!this.selection.isEmpty()) {\r\n\t this.session.remove(this.getSelectionRange());\r\n\t this.clearSelection();\r\n\t }\r\n\r\n\t var cursor = this.getCursorPosition();\r\n\t this.insert(\"\\n\");\r\n\t this.moveCursorToPosition(cursor);\r\n\t };\r\n\t this.transposeLetters = function() {\r\n\t if (!this.selection.isEmpty()) {\r\n\t return;\r\n\t }\r\n\r\n\t var cursor = this.getCursorPosition();\r\n\t var column = cursor.column;\r\n\t if (column === 0)\r\n\t return;\r\n\r\n\t var line = this.session.getLine(cursor.row);\r\n\t var swap, range;\r\n\t if (column < line.length) {\r\n\t swap = line.charAt(column) + line.charAt(column-1);\r\n\t range = new Range(cursor.row, column-1, cursor.row, column+1);\r\n\t }\r\n\t else {\r\n\t swap = line.charAt(column-1) + line.charAt(column-2);\r\n\t range = new Range(cursor.row, column-2, cursor.row, column);\r\n\t }\r\n\t this.session.replace(range, swap);\r\n\t };\r\n\t this.toLowerCase = function() {\r\n\t var originalRange = this.getSelectionRange();\r\n\t if (this.selection.isEmpty()) {\r\n\t this.selection.selectWord();\r\n\t }\r\n\r\n\t var range = this.getSelectionRange();\r\n\t var text = this.session.getTextRange(range);\r\n\t this.session.replace(range, text.toLowerCase());\r\n\t this.selection.setSelectionRange(originalRange);\r\n\t };\r\n\t this.toUpperCase = function() {\r\n\t var originalRange = this.getSelectionRange();\r\n\t if (this.selection.isEmpty()) {\r\n\t this.selection.selectWord();\r\n\t }\r\n\r\n\t var range = this.getSelectionRange();\r\n\t var text = this.session.getTextRange(range);\r\n\t this.session.replace(range, text.toUpperCase());\r\n\t this.selection.setSelectionRange(originalRange);\r\n\t };\r\n\t this.indent = function() {\r\n\t var session = this.session;\r\n\t var range = this.getSelectionRange();\r\n\r\n\t if (range.start.row < range.end.row) {\r\n\t var rows = this.$getSelectedRows();\r\n\t session.indentRows(rows.first, rows.last, \"\\t\");\r\n\t return;\r\n\t } else if (range.start.column < range.end.column) {\r\n\t var text = session.getTextRange(range);\r\n\t if (!/^\\s+$/.test(text)) {\r\n\t var rows = this.$getSelectedRows();\r\n\t session.indentRows(rows.first, rows.last, \"\\t\");\r\n\t return;\r\n\t }\r\n\t }\r\n\t \r\n\t var line = session.getLine(range.start.row);\r\n\t var position = range.start;\r\n\t var size = session.getTabSize();\r\n\t var column = session.documentToScreenColumn(position.row, position.column);\r\n\r\n\t if (this.session.getUseSoftTabs()) {\r\n\t var count = (size - column % size);\r\n\t var indentString = lang.stringRepeat(\" \", count);\r\n\t } else {\r\n\t var count = column % size;\r\n\t while (line[range.start.column] == \" \" && count) {\r\n\t range.start.column--;\r\n\t count--;\r\n\t }\r\n\t this.selection.setSelectionRange(range);\r\n\t indentString = \"\\t\";\r\n\t }\r\n\t return this.insert(indentString);\r\n\t };\r\n\t this.blockIndent = function() {\r\n\t var rows = this.$getSelectedRows();\r\n\t this.session.indentRows(rows.first, rows.last, \"\\t\");\r\n\t };\r\n\t this.blockOutdent = function() {\r\n\t var selection = this.session.getSelection();\r\n\t this.session.outdentRows(selection.getRange());\r\n\t };\r\n\t this.sortLines = function() {\r\n\t var rows = this.$getSelectedRows();\r\n\t var session = this.session;\r\n\r\n\t var lines = [];\r\n\t for (i = rows.first; i <= rows.last; i++)\r\n\t lines.push(session.getLine(i));\r\n\r\n\t lines.sort(function(a, b) {\r\n\t if (a.toLowerCase() < b.toLowerCase()) return -1;\r\n\t if (a.toLowerCase() > b.toLowerCase()) return 1;\r\n\t return 0;\r\n\t });\r\n\r\n\t var deleteRange = new Range(0, 0, 0, 0);\r\n\t for (var i = rows.first; i <= rows.last; i++) {\r\n\t var line = session.getLine(i);\r\n\t deleteRange.start.row = i;\r\n\t deleteRange.end.row = i;\r\n\t deleteRange.end.column = line.length;\r\n\t session.replace(deleteRange, lines[i-rows.first]);\r\n\t }\r\n\t };\r\n\t this.toggleCommentLines = function() {\r\n\t var state = this.session.getState(this.getCursorPosition().row);\r\n\t var rows = this.$getSelectedRows();\r\n\t this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\r\n\t };\r\n\r\n\t this.toggleBlockComment = function() {\r\n\t var cursor = this.getCursorPosition();\r\n\t var state = this.session.getState(cursor.row);\r\n\t var range = this.getSelectionRange();\r\n\t this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\r\n\t };\r\n\t this.getNumberAt = function(row, column) {\r\n\t var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\r\n\t _numberRx.lastIndex = 0;\r\n\r\n\t var s = this.session.getLine(row);\r\n\t while (_numberRx.lastIndex < column) {\r\n\t var m = _numberRx.exec(s);\r\n\t if(m.index <= column && m.index+m[0].length >= column){\r\n\t var number = {\r\n\t value: m[0],\r\n\t start: m.index,\r\n\t end: m.index+m[0].length\r\n\t };\r\n\t return number;\r\n\t }\r\n\t }\r\n\t return null;\r\n\t };\r\n\t this.modifyNumber = function(amount) {\r\n\t var row = this.selection.getCursor().row;\r\n\t var column = this.selection.getCursor().column;\r\n\t var charRange = new Range(row, column-1, row, column);\r\n\r\n\t var c = this.session.getTextRange(charRange);\r\n\t if (!isNaN(parseFloat(c)) && isFinite(c)) {\r\n\t var nr = this.getNumberAt(row, column);\r\n\t if (nr) {\r\n\t var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\r\n\t var decimals = nr.start + nr.value.length - fp;\r\n\r\n\t var t = parseFloat(nr.value);\r\n\t t *= Math.pow(10, decimals);\r\n\r\n\r\n\t if(fp !== nr.end && column < fp){\r\n\t amount *= Math.pow(10, nr.end - column - 1);\r\n\t } else {\r\n\t amount *= Math.pow(10, nr.end - column);\r\n\t }\r\n\r\n\t t += amount;\r\n\t t /= Math.pow(10, decimals);\r\n\t var nnr = t.toFixed(decimals);\r\n\t var replaceRange = new Range(row, nr.start, row, nr.end);\r\n\t this.session.replace(replaceRange, nnr);\r\n\t this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length));\r\n\r\n\t }\r\n\t }\r\n\t };\r\n\t this.removeLines = function() {\r\n\t var rows = this.$getSelectedRows();\r\n\t this.session.removeFullLines(rows.first, rows.last);\r\n\t this.clearSelection();\r\n\t };\r\n\r\n\t this.duplicateSelection = function() {\r\n\t var sel = this.selection;\r\n\t var doc = this.session;\r\n\t var range = sel.getRange();\r\n\t var reverse = sel.isBackwards();\r\n\t if (range.isEmpty()) {\r\n\t var row = range.start.row;\r\n\t doc.duplicateLines(row, row);\r\n\t } else {\r\n\t var point = reverse ? range.start : range.end;\r\n\t var endPoint = doc.insert(point, doc.getTextRange(range), false);\r\n\t range.start = point;\r\n\t range.end = endPoint;\r\n\r\n\t sel.setSelectionRange(range, reverse);\r\n\t }\r\n\t };\r\n\t this.moveLinesDown = function() {\r\n\t this.$moveLines(1, false);\r\n\t };\r\n\t this.moveLinesUp = function() {\r\n\t this.$moveLines(-1, false);\r\n\t };\r\n\t this.moveText = function(range, toPosition, copy) {\r\n\t return this.session.moveText(range, toPosition, copy);\r\n\t };\r\n\t this.copyLinesUp = function() {\r\n\t this.$moveLines(-1, true);\r\n\t };\r\n\t this.copyLinesDown = function() {\r\n\t this.$moveLines(1, true);\r\n\t };\r\n\t this.$moveLines = function(dir, copy) {\r\n\t var rows, moved;\r\n\t var selection = this.selection;\r\n\t if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\r\n\t var range = selection.toOrientedRange();\r\n\t rows = this.$getSelectedRows(range);\r\n\t moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\r\n\t if (copy && dir == -1) moved = 0;\r\n\t range.moveBy(moved, 0);\r\n\t selection.fromOrientedRange(range);\r\n\t } else {\r\n\t var ranges = selection.rangeList.ranges;\r\n\t selection.rangeList.detach(this.session);\r\n\t this.inVirtualSelectionMode = true;\r\n\t \r\n\t var diff = 0;\r\n\t var totalDiff = 0;\r\n\t var l = ranges.length;\r\n\t for (var i = 0; i < l; i++) {\r\n\t var rangeIndex = i;\r\n\t ranges[i].moveBy(diff, 0);\r\n\t rows = this.$getSelectedRows(ranges[i]);\r\n\t var first = rows.first;\r\n\t var last = rows.last;\r\n\t while (++i < l) {\r\n\t if (totalDiff) ranges[i].moveBy(totalDiff, 0);\r\n\t var subRows = this.$getSelectedRows(ranges[i]);\r\n\t if (copy && subRows.first != last)\r\n\t break;\r\n\t else if (!copy && subRows.first > last + 1)\r\n\t break;\r\n\t last = subRows.last;\r\n\t }\r\n\t i--;\r\n\t diff = this.session.$moveLines(first, last, copy ? 0 : dir);\r\n\t if (copy && dir == -1) rangeIndex = i + 1;\r\n\t while (rangeIndex <= i) {\r\n\t ranges[rangeIndex].moveBy(diff, 0);\r\n\t rangeIndex++;\r\n\t }\r\n\t if (!copy) diff = 0;\r\n\t totalDiff += diff;\r\n\t }\r\n\t \r\n\t selection.fromOrientedRange(selection.ranges[0]);\r\n\t selection.rangeList.attach(this.session);\r\n\t this.inVirtualSelectionMode = false;\r\n\t }\r\n\t };\r\n\t this.$getSelectedRows = function(range) {\r\n\t range = (range || this.getSelectionRange()).collapseRows();\r\n\r\n\t return {\r\n\t first: this.session.getRowFoldStart(range.start.row),\r\n\t last: this.session.getRowFoldEnd(range.end.row)\r\n\t };\r\n\t };\r\n\r\n\t this.onCompositionStart = function(text) {\r\n\t this.renderer.showComposition(this.getCursorPosition());\r\n\t };\r\n\r\n\t this.onCompositionUpdate = function(text) {\r\n\t this.renderer.setCompositionText(text);\r\n\t };\r\n\r\n\t this.onCompositionEnd = function() {\r\n\t this.renderer.hideComposition();\r\n\t };\r\n\t this.getFirstVisibleRow = function() {\r\n\t return this.renderer.getFirstVisibleRow();\r\n\t };\r\n\t this.getLastVisibleRow = function() {\r\n\t return this.renderer.getLastVisibleRow();\r\n\t };\r\n\t this.isRowVisible = function(row) {\r\n\t return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\r\n\t };\r\n\t this.isRowFullyVisible = function(row) {\r\n\t return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\r\n\t };\r\n\t this.$getVisibleRowCount = function() {\r\n\t return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\r\n\t };\r\n\r\n\t this.$moveByPage = function(dir, select) {\r\n\t var renderer = this.renderer;\r\n\t var config = this.renderer.layerConfig;\r\n\t var rows = dir * Math.floor(config.height / config.lineHeight);\r\n\r\n\t this.$blockScrolling++;\r\n\t if (select === true) {\r\n\t this.selection.$moveSelection(function(){\r\n\t this.moveCursorBy(rows, 0);\r\n\t });\r\n\t } else if (select === false) {\r\n\t this.selection.moveCursorBy(rows, 0);\r\n\t this.selection.clearSelection();\r\n\t }\r\n\t this.$blockScrolling--;\r\n\r\n\t var scrollTop = renderer.scrollTop;\r\n\r\n\t renderer.scrollBy(0, rows * config.lineHeight);\r\n\t if (select != null)\r\n\t renderer.scrollCursorIntoView(null, 0.5);\r\n\r\n\t renderer.animateScrolling(scrollTop);\r\n\t };\r\n\t this.selectPageDown = function() {\r\n\t this.$moveByPage(1, true);\r\n\t };\r\n\t this.selectPageUp = function() {\r\n\t this.$moveByPage(-1, true);\r\n\t };\r\n\t this.gotoPageDown = function() {\r\n\t this.$moveByPage(1, false);\r\n\t };\r\n\t this.gotoPageUp = function() {\r\n\t this.$moveByPage(-1, false);\r\n\t };\r\n\t this.scrollPageDown = function() {\r\n\t this.$moveByPage(1);\r\n\t };\r\n\t this.scrollPageUp = function() {\r\n\t this.$moveByPage(-1);\r\n\t };\r\n\t this.scrollToRow = function(row) {\r\n\t this.renderer.scrollToRow(row);\r\n\t };\r\n\t this.scrollToLine = function(line, center, animate, callback) {\r\n\t this.renderer.scrollToLine(line, center, animate, callback);\r\n\t };\r\n\t this.centerSelection = function() {\r\n\t var range = this.getSelectionRange();\r\n\t var pos = {\r\n\t row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\r\n\t column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\r\n\t };\r\n\t this.renderer.alignCursor(pos, 0.5);\r\n\t };\r\n\t this.getCursorPosition = function() {\r\n\t return this.selection.getCursor();\r\n\t };\r\n\t this.getCursorPositionScreen = function() {\r\n\t return this.session.documentToScreenPosition(this.getCursorPosition());\r\n\t };\r\n\t this.getSelectionRange = function() {\r\n\t return this.selection.getRange();\r\n\t };\r\n\t this.selectAll = function() {\r\n\t this.$blockScrolling += 1;\r\n\t this.selection.selectAll();\r\n\t this.$blockScrolling -= 1;\r\n\t };\r\n\t this.clearSelection = function() {\r\n\t this.selection.clearSelection();\r\n\t };\r\n\t this.moveCursorTo = function(row, column) {\r\n\t this.selection.moveCursorTo(row, column);\r\n\t };\r\n\t this.moveCursorToPosition = function(pos) {\r\n\t this.selection.moveCursorToPosition(pos);\r\n\t };\r\n\t this.jumpToMatching = function(select, expand) {\r\n\t var cursor = this.getCursorPosition();\r\n\t var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\r\n\t var prevToken = iterator.getCurrentToken();\r\n\t var token = prevToken || iterator.stepForward();\r\n\r\n\t if (!token) return;\r\n\t var matchType;\r\n\t var found = false;\r\n\t var depth = {};\r\n\t var i = cursor.column - token.start;\r\n\t var bracketType;\r\n\t var brackets = {\r\n\t \")\": \"(\",\r\n\t \"(\": \"(\",\r\n\t \"]\": \"[\",\r\n\t \"[\": \"[\",\r\n\t \"{\": \"{\",\r\n\t \"}\": \"{\"\r\n\t };\r\n\t \r\n\t do {\r\n\t if (token.value.match(/[{}()\\[\\]]/g)) {\r\n\t for (; i < token.value.length && !found; i++) {\r\n\t if (!brackets[token.value[i]]) {\r\n\t continue;\r\n\t }\r\n\r\n\t bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\r\n\r\n\t if (isNaN(depth[bracketType])) {\r\n\t depth[bracketType] = 0;\r\n\t }\r\n\r\n\t switch (token.value[i]) {\r\n\t case '(':\r\n\t case '[':\r\n\t case '{':\r\n\t depth[bracketType]++;\r\n\t break;\r\n\t case ')':\r\n\t case ']':\r\n\t case '}':\r\n\t depth[bracketType]--;\r\n\r\n\t if (depth[bracketType] === -1) {\r\n\t matchType = 'bracket';\r\n\t found = true;\r\n\t }\r\n\t break;\r\n\t }\r\n\t }\r\n\t }\r\n\t else if (token && token.type.indexOf('tag-name') !== -1) {\r\n\t if (isNaN(depth[token.value])) {\r\n\t depth[token.value] = 0;\r\n\t }\r\n\t \r\n\t if (prevToken.value === '<') {\r\n\t depth[token.value]++;\r\n\t }\r\n\t else if (prevToken.value === '') {\r\n\t depth[token.value]--;\r\n\t }\r\n\t \r\n\t if (depth[token.value] === -1) {\r\n\t matchType = 'tag';\r\n\t found = true;\r\n\t }\r\n\t }\r\n\r\n\t if (!found) {\r\n\t prevToken = token;\r\n\t token = iterator.stepForward();\r\n\t i = 0;\r\n\t }\r\n\t } while (token && !found);\r\n\t if (!matchType)\r\n\t return;\r\n\r\n\t var range, pos;\r\n\t if (matchType === 'bracket') {\r\n\t range = this.session.getBracketRange(cursor);\r\n\t if (!range) {\r\n\t range = new Range(\r\n\t iterator.getCurrentTokenRow(),\r\n\t iterator.getCurrentTokenColumn() + i - 1,\r\n\t iterator.getCurrentTokenRow(),\r\n\t iterator.getCurrentTokenColumn() + i - 1\r\n\t );\r\n\t pos = range.start;\r\n\t if (expand || pos.row === cursor.row && Math.abs(pos.column - cursor.column) < 2)\r\n\t range = this.session.getBracketRange(pos);\r\n\t }\r\n\t }\r\n\t else if (matchType === 'tag') {\r\n\t if (token && token.type.indexOf('tag-name') !== -1) \r\n\t var tag = token.value;\r\n\t else\r\n\t return;\r\n\r\n\t range = new Range(\r\n\t iterator.getCurrentTokenRow(),\r\n\t iterator.getCurrentTokenColumn() - 2,\r\n\t iterator.getCurrentTokenRow(),\r\n\t iterator.getCurrentTokenColumn() - 2\r\n\t );\r\n\t if (range.compare(cursor.row, cursor.column) === 0) {\r\n\t found = false;\r\n\t do {\r\n\t token = prevToken;\r\n\t prevToken = iterator.stepBackward();\r\n\t \r\n\t if (prevToken) {\r\n\t if (prevToken.type.indexOf('tag-close') !== -1) {\r\n\t range.setEnd(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\r\n\t }\r\n\r\n\t if (token.value === tag && token.type.indexOf('tag-name') !== -1) {\r\n\t if (prevToken.value === '<') {\r\n\t depth[tag]++;\r\n\t }\r\n\t else if (prevToken.value === '') {\r\n\t depth[tag]--;\r\n\t }\r\n\t \r\n\t if (depth[tag] === 0)\r\n\t found = true;\r\n\t }\r\n\t }\r\n\t } while (prevToken && !found);\r\n\t }\r\n\t if (token && token.type.indexOf('tag-name')) {\r\n\t pos = range.start;\r\n\t if (pos.row == cursor.row && Math.abs(pos.column - cursor.column) < 2)\r\n\t pos = range.end;\r\n\t }\r\n\t }\r\n\r\n\t pos = range && range.cursor || pos;\r\n\t if (pos) {\r\n\t if (select) {\r\n\t if (range && expand) {\r\n\t this.selection.setRange(range);\r\n\t } else if (range && range.isEqual(this.getSelectionRange())) {\r\n\t this.clearSelection();\r\n\t } else {\r\n\t this.selection.selectTo(pos.row, pos.column);\r\n\t }\r\n\t } else {\r\n\t this.selection.moveTo(pos.row, pos.column);\r\n\t }\r\n\t }\r\n\t };\r\n\t this.gotoLine = function(lineNumber, column, animate) {\r\n\t this.selection.clearSelection();\r\n\t this.session.unfold({row: lineNumber - 1, column: column || 0});\r\n\r\n\t this.$blockScrolling += 1;\r\n\t this.exitMultiSelectMode && this.exitMultiSelectMode();\r\n\t this.moveCursorTo(lineNumber - 1, column || 0);\r\n\t this.$blockScrolling -= 1;\r\n\r\n\t if (!this.isRowFullyVisible(lineNumber - 1))\r\n\t this.scrollToLine(lineNumber - 1, true, animate);\r\n\t };\r\n\t this.navigateTo = function(row, column) {\r\n\t this.selection.moveTo(row, column);\r\n\t };\r\n\t this.navigateUp = function(times) {\r\n\t if (this.selection.isMultiLine() && !this.selection.isBackwards()) {\r\n\t var selectionStart = this.selection.anchor.getPosition();\r\n\t return this.moveCursorToPosition(selectionStart);\r\n\t }\r\n\t this.selection.clearSelection();\r\n\t this.selection.moveCursorBy(-times || -1, 0);\r\n\t };\r\n\t this.navigateDown = function(times) {\r\n\t if (this.selection.isMultiLine() && this.selection.isBackwards()) {\r\n\t var selectionEnd = this.selection.anchor.getPosition();\r\n\t return this.moveCursorToPosition(selectionEnd);\r\n\t }\r\n\t this.selection.clearSelection();\r\n\t this.selection.moveCursorBy(times || 1, 0);\r\n\t };\r\n\t this.navigateLeft = function(times) {\r\n\t if (!this.selection.isEmpty()) {\r\n\t var selectionStart = this.getSelectionRange().start;\r\n\t this.moveCursorToPosition(selectionStart);\r\n\t }\r\n\t else {\r\n\t times = times || 1;\r\n\t while (times--) {\r\n\t this.selection.moveCursorLeft();\r\n\t }\r\n\t }\r\n\t this.clearSelection();\r\n\t };\r\n\t this.navigateRight = function(times) {\r\n\t if (!this.selection.isEmpty()) {\r\n\t var selectionEnd = this.getSelectionRange().end;\r\n\t this.moveCursorToPosition(selectionEnd);\r\n\t }\r\n\t else {\r\n\t times = times || 1;\r\n\t while (times--) {\r\n\t this.selection.moveCursorRight();\r\n\t }\r\n\t }\r\n\t this.clearSelection();\r\n\t };\r\n\t this.navigateLineStart = function() {\r\n\t this.selection.moveCursorLineStart();\r\n\t this.clearSelection();\r\n\t };\r\n\t this.navigateLineEnd = function() {\r\n\t this.selection.moveCursorLineEnd();\r\n\t this.clearSelection();\r\n\t };\r\n\t this.navigateFileEnd = function() {\r\n\t this.selection.moveCursorFileEnd();\r\n\t this.clearSelection();\r\n\t };\r\n\t this.navigateFileStart = function() {\r\n\t this.selection.moveCursorFileStart();\r\n\t this.clearSelection();\r\n\t };\r\n\t this.navigateWordRight = function() {\r\n\t this.selection.moveCursorWordRight();\r\n\t this.clearSelection();\r\n\t };\r\n\t this.navigateWordLeft = function() {\r\n\t this.selection.moveCursorWordLeft();\r\n\t this.clearSelection();\r\n\t };\r\n\t this.replace = function(replacement, options) {\r\n\t if (options)\r\n\t this.$search.set(options);\r\n\r\n\t var range = this.$search.find(this.session);\r\n\t var replaced = 0;\r\n\t if (!range)\r\n\t return replaced;\r\n\r\n\t if (this.$tryReplace(range, replacement)) {\r\n\t replaced = 1;\r\n\t }\r\n\t if (range !== null) {\r\n\t this.selection.setSelectionRange(range);\r\n\t this.renderer.scrollSelectionIntoView(range.start, range.end);\r\n\t }\r\n\r\n\t return replaced;\r\n\t };\r\n\t this.replaceAll = function(replacement, options) {\r\n\t if (options) {\r\n\t this.$search.set(options);\r\n\t }\r\n\r\n\t var ranges = this.$search.findAll(this.session);\r\n\t var replaced = 0;\r\n\t if (!ranges.length)\r\n\t return replaced;\r\n\r\n\t this.$blockScrolling += 1;\r\n\r\n\t var selection = this.getSelectionRange();\r\n\t this.selection.moveTo(0, 0);\r\n\r\n\t for (var i = ranges.length - 1; i >= 0; --i) {\r\n\t if(this.$tryReplace(ranges[i], replacement)) {\r\n\t replaced++;\r\n\t }\r\n\t }\r\n\r\n\t this.selection.setSelectionRange(selection);\r\n\t this.$blockScrolling -= 1;\r\n\r\n\t return replaced;\r\n\t };\r\n\r\n\t this.$tryReplace = function(range, replacement) {\r\n\t var input = this.session.getTextRange(range);\r\n\t replacement = this.$search.replace(input, replacement);\r\n\t if (replacement !== null) {\r\n\t range.end = this.session.replace(range, replacement);\r\n\t return range;\r\n\t } else {\r\n\t return null;\r\n\t }\r\n\t };\r\n\t this.getLastSearchOptions = function() {\r\n\t return this.$search.getOptions();\r\n\t };\r\n\t this.find = function(needle, options, animate) {\r\n\t if (!options)\r\n\t options = {};\r\n\r\n\t if (typeof needle == \"string\" || needle instanceof RegExp)\r\n\t options.needle = needle;\r\n\t else if (typeof needle == \"object\")\r\n\t oop.mixin(options, needle);\r\n\r\n\t var range = this.selection.getRange();\r\n\t if (options.needle == null) {\r\n\t needle = this.session.getTextRange(range)\r\n\t || this.$search.$options.needle;\r\n\t if (!needle) {\r\n\t range = this.session.getWordRange(range.start.row, range.start.column);\r\n\t needle = this.session.getTextRange(range);\r\n\t }\r\n\t this.$search.set({needle: needle});\r\n\t }\r\n\r\n\t this.$search.set(options);\r\n\t if (!options.start)\r\n\t this.$search.set({start: range});\r\n\r\n\t var newRange = this.$search.find(this.session);\r\n\t if (options.preventScroll)\r\n\t return newRange;\r\n\t if (newRange) {\r\n\t this.revealRange(newRange, animate);\r\n\t return newRange;\r\n\t }\r\n\t if (options.backwards)\r\n\t range.start = range.end;\r\n\t else\r\n\t range.end = range.start;\r\n\t this.selection.setRange(range);\r\n\t };\r\n\t this.findNext = function(options, animate) {\r\n\t this.find({skipCurrent: true, backwards: false}, options, animate);\r\n\t };\r\n\t this.findPrevious = function(options, animate) {\r\n\t this.find(options, {skipCurrent: true, backwards: true}, animate);\r\n\t };\r\n\r\n\t this.revealRange = function(range, animate) {\r\n\t this.$blockScrolling += 1;\r\n\t this.session.unfold(range);\r\n\t this.selection.setSelectionRange(range);\r\n\t this.$blockScrolling -= 1;\r\n\r\n\t var scrollTop = this.renderer.scrollTop;\r\n\t this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\r\n\t if (animate !== false)\r\n\t this.renderer.animateScrolling(scrollTop);\r\n\t };\r\n\t this.undo = function() {\r\n\t this.$blockScrolling++;\r\n\t this.session.getUndoManager().undo();\r\n\t this.$blockScrolling--;\r\n\t this.renderer.scrollCursorIntoView(null, 0.5);\r\n\t };\r\n\t this.redo = function() {\r\n\t this.$blockScrolling++;\r\n\t this.session.getUndoManager().redo();\r\n\t this.$blockScrolling--;\r\n\t this.renderer.scrollCursorIntoView(null, 0.5);\r\n\t };\r\n\t this.destroy = function() {\r\n\t this.renderer.destroy();\r\n\t this._signal(\"destroy\", this);\r\n\t if (this.session) {\r\n\t this.session.destroy();\r\n\t }\r\n\t };\r\n\t this.setAutoScrollEditorIntoView = function(enable) {\r\n\t if (!enable)\r\n\t return;\r\n\t var rect;\r\n\t var self = this;\r\n\t var shouldScroll = false;\r\n\t if (!this.$scrollAnchor)\r\n\t this.$scrollAnchor = document.createElement(\"div\");\r\n\t var scrollAnchor = this.$scrollAnchor;\r\n\t scrollAnchor.style.cssText = \"position:absolute\";\r\n\t this.container.insertBefore(scrollAnchor, this.container.firstChild);\r\n\t var onChangeSelection = this.on(\"changeSelection\", function() {\r\n\t shouldScroll = true;\r\n\t });\r\n\t var onBeforeRender = this.renderer.on(\"beforeRender\", function() {\r\n\t if (shouldScroll)\r\n\t rect = self.renderer.container.getBoundingClientRect();\r\n\t });\r\n\t var onAfterRender = this.renderer.on(\"afterRender\", function() {\r\n\t if (shouldScroll && rect && (self.isFocused()\r\n\t || self.searchBox && self.searchBox.isFocused())\r\n\t ) {\r\n\t var renderer = self.renderer;\r\n\t var pos = renderer.$cursorLayer.$pixelPos;\r\n\t var config = renderer.layerConfig;\r\n\t var top = pos.top - config.offset;\r\n\t if (pos.top >= 0 && top + rect.top < 0) {\r\n\t shouldScroll = true;\r\n\t } else if (pos.top < config.height &&\r\n\t pos.top + rect.top + config.lineHeight > window.innerHeight) {\r\n\t shouldScroll = false;\r\n\t } else {\r\n\t shouldScroll = null;\r\n\t }\r\n\t if (shouldScroll != null) {\r\n\t scrollAnchor.style.top = top + \"px\";\r\n\t scrollAnchor.style.left = pos.left + \"px\";\r\n\t scrollAnchor.style.height = config.lineHeight + \"px\";\r\n\t scrollAnchor.scrollIntoView(shouldScroll);\r\n\t }\r\n\t shouldScroll = rect = null;\r\n\t }\r\n\t });\r\n\t this.setAutoScrollEditorIntoView = function(enable) {\r\n\t if (enable)\r\n\t return;\r\n\t delete this.setAutoScrollEditorIntoView;\r\n\t this.off(\"changeSelection\", onChangeSelection);\r\n\t this.renderer.off(\"afterRender\", onAfterRender);\r\n\t this.renderer.off(\"beforeRender\", onBeforeRender);\r\n\t };\r\n\t };\r\n\r\n\r\n\t this.$resetCursorStyle = function() {\r\n\t var style = this.$cursorStyle || \"ace\";\r\n\t var cursorLayer = this.renderer.$cursorLayer;\r\n\t if (!cursorLayer)\r\n\t return;\r\n\t cursorLayer.setSmoothBlinking(/smooth/.test(style));\r\n\t cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\r\n\t dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\r\n\t };\r\n\r\n\t}).call(Editor.prototype);\r\n\r\n\r\n\r\n\tconfig.defineOptions(Editor.prototype, \"editor\", {\r\n\t selectionStyle: {\r\n\t set: function(style) {\r\n\t this.onSelectionChange();\r\n\t this._signal(\"changeSelectionStyle\", {data: style});\r\n\t },\r\n\t initialValue: \"line\"\r\n\t },\r\n\t highlightActiveLine: {\r\n\t set: function() {this.$updateHighlightActiveLine();},\r\n\t initialValue: true\r\n\t },\r\n\t highlightSelectedWord: {\r\n\t set: function(shouldHighlight) {this.$onSelectionChange();},\r\n\t initialValue: true\r\n\t },\r\n\t readOnly: {\r\n\t set: function(readOnly) {\r\n\t this.$resetCursorStyle(); \r\n\t },\r\n\t initialValue: false\r\n\t },\r\n\t cursorStyle: {\r\n\t set: function(val) { this.$resetCursorStyle(); },\r\n\t values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\r\n\t initialValue: \"ace\"\r\n\t },\r\n\t mergeUndoDeltas: {\r\n\t values: [false, true, \"always\"],\r\n\t initialValue: true\r\n\t },\r\n\t behavioursEnabled: {initialValue: true},\r\n\t wrapBehavioursEnabled: {initialValue: true},\r\n\t autoScrollEditorIntoView: {\r\n\t set: function(val) {this.setAutoScrollEditorIntoView(val)}\r\n\t },\r\n\t keyboardHandler: {\r\n\t set: function(val) { this.setKeyboardHandler(val); },\r\n\t get: function() { return this.keybindingId; },\r\n\t handlesSet: true\r\n\t },\r\n\r\n\t hScrollBarAlwaysVisible: \"renderer\",\r\n\t vScrollBarAlwaysVisible: \"renderer\",\r\n\t highlightGutterLine: \"renderer\",\r\n\t animatedScroll: \"renderer\",\r\n\t showInvisibles: \"renderer\",\r\n\t showPrintMargin: \"renderer\",\r\n\t printMarginColumn: \"renderer\",\r\n\t printMargin: \"renderer\",\r\n\t fadeFoldWidgets: \"renderer\",\r\n\t showFoldWidgets: \"renderer\",\r\n\t showLineNumbers: \"renderer\",\r\n\t showGutter: \"renderer\",\r\n\t displayIndentGuides: \"renderer\",\r\n\t fontSize: \"renderer\",\r\n\t fontFamily: \"renderer\",\r\n\t maxLines: \"renderer\",\r\n\t minLines: \"renderer\",\r\n\t scrollPastEnd: \"renderer\",\r\n\t fixedWidthGutter: \"renderer\",\r\n\t theme: \"renderer\",\r\n\r\n\t scrollSpeed: \"$mouseHandler\",\r\n\t dragDelay: \"$mouseHandler\",\r\n\t dragEnabled: \"$mouseHandler\",\r\n\t focusTimout: \"$mouseHandler\",\r\n\t tooltipFollowsMouse: \"$mouseHandler\",\r\n\r\n\t firstLineNumber: \"session\",\r\n\t overwrite: \"session\",\r\n\t newLineMode: \"session\",\r\n\t useWorker: \"session\",\r\n\t useSoftTabs: \"session\",\r\n\t tabSize: \"session\",\r\n\t wrap: \"session\",\r\n\t indentedSoftWrap: \"session\",\r\n\t foldStyle: \"session\",\r\n\t mode: \"session\"\r\n\t});\r\n\r\n\texports.Editor = Editor;\r\n\t});\r\n\r\n\tace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\tvar UndoManager = function() {\r\n\t this.reset();\r\n\t};\r\n\r\n\t(function() {\r\n\t this.execute = function(options) {\r\n\t var deltaSets = options.args[0];\r\n\t this.$doc = options.args[1];\r\n\t if (options.merge && this.hasUndo()){\r\n\t this.dirtyCounter--;\r\n\t deltaSets = this.$undoStack.pop().concat(deltaSets);\r\n\t }\r\n\t this.$undoStack.push(deltaSets);\r\n\t this.$redoStack = [];\r\n\t if (this.dirtyCounter < 0) {\r\n\t this.dirtyCounter = NaN;\r\n\t }\r\n\t this.dirtyCounter++;\r\n\t };\r\n\t this.undo = function(dontSelect) {\r\n\t var deltaSets = this.$undoStack.pop();\r\n\t var undoSelectionRange = null;\r\n\t if (deltaSets) {\r\n\t undoSelectionRange = this.$doc.undoChanges(deltaSets, dontSelect);\r\n\t this.$redoStack.push(deltaSets);\r\n\t this.dirtyCounter--;\r\n\t }\r\n\r\n\t return undoSelectionRange;\r\n\t };\r\n\t this.redo = function(dontSelect) {\r\n\t var deltaSets = this.$redoStack.pop();\r\n\t var redoSelectionRange = null;\r\n\t if (deltaSets) {\r\n\t redoSelectionRange =\r\n\t this.$doc.redoChanges(this.$deserializeDeltas(deltaSets), dontSelect);\r\n\t this.$undoStack.push(deltaSets);\r\n\t this.dirtyCounter++;\r\n\t }\r\n\t return redoSelectionRange;\r\n\t };\r\n\t this.reset = function() {\r\n\t this.$undoStack = [];\r\n\t this.$redoStack = [];\r\n\t this.dirtyCounter = 0;\r\n\t };\r\n\t this.hasUndo = function() {\r\n\t return this.$undoStack.length > 0;\r\n\t };\r\n\t this.hasRedo = function() {\r\n\t return this.$redoStack.length > 0;\r\n\t };\r\n\t this.markClean = function() {\r\n\t this.dirtyCounter = 0;\r\n\t };\r\n\t this.isClean = function() {\r\n\t return this.dirtyCounter === 0;\r\n\t };\r\n\t this.$serializeDeltas = function(deltaSets) {\r\n\t return cloneDeltaSetsObj(deltaSets, $serializeDelta);\r\n\t };\r\n\t this.$deserializeDeltas = function(deltaSets) {\r\n\t return cloneDeltaSetsObj(deltaSets, $deserializeDelta);\r\n\t };\r\n\t \r\n\t function $serializeDelta(delta){\r\n\t return {\r\n\t action: delta.action,\r\n\t start: delta.start,\r\n\t end: delta.end,\r\n\t lines: delta.lines.length == 1 ? null : delta.lines,\r\n\t text: delta.lines.length == 1 ? delta.lines[0] : null\r\n\t };\r\n\t }\r\n\t \r\n\t function $deserializeDelta(delta) {\r\n\t return {\r\n\t action: delta.action,\r\n\t start: delta.start,\r\n\t end: delta.end,\r\n\t lines: delta.lines || [delta.text]\r\n\t };\r\n\t }\r\n\t \r\n\t function cloneDeltaSetsObj(deltaSets_old, fnGetModifiedDelta) {\r\n\t var deltaSets_new = new Array(deltaSets_old.length);\r\n\t for (var i = 0; i < deltaSets_old.length; i++) {\r\n\t var deltaSet_old = deltaSets_old[i];\r\n\t var deltaSet_new = { group: deltaSet_old.group, deltas: new Array(deltaSet_old.length)};\r\n\t \r\n\t for (var j = 0; j < deltaSet_old.deltas.length; j++) {\r\n\t var delta_old = deltaSet_old.deltas[j];\r\n\t deltaSet_new.deltas[j] = fnGetModifiedDelta(delta_old);\r\n\t }\r\n\t \r\n\t deltaSets_new[i] = deltaSet_new;\r\n\t }\r\n\t return deltaSets_new;\r\n\t }\r\n\t \r\n\t}).call(UndoManager.prototype);\r\n\r\n\texports.UndoManager = UndoManager;\r\n\t});\r\n\r\n\tace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tvar oop = acequire(\"../lib/oop\");\r\n\tvar lang = acequire(\"../lib/lang\");\r\n\tvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\r\n\r\n\tvar Gutter = function(parentEl) {\r\n\t this.element = dom.createElement(\"div\");\r\n\t this.element.className = \"ace_layer ace_gutter-layer\";\r\n\t parentEl.appendChild(this.element);\r\n\t this.setShowFoldWidgets(this.$showFoldWidgets);\r\n\t \r\n\t this.gutterWidth = 0;\r\n\r\n\t this.$annotations = [];\r\n\t this.$updateAnnotations = this.$updateAnnotations.bind(this);\r\n\r\n\t this.$cells = [];\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\r\n\t this.setSession = function(session) {\r\n\t if (this.session)\r\n\t this.session.removeEventListener(\"change\", this.$updateAnnotations);\r\n\t this.session = session;\r\n\t if (session)\r\n\t session.on(\"change\", this.$updateAnnotations);\r\n\t };\r\n\r\n\t this.addGutterDecoration = function(row, className){\r\n\t if (window.console)\r\n\t console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\r\n\t this.session.addGutterDecoration(row, className);\r\n\t };\r\n\r\n\t this.removeGutterDecoration = function(row, className){\r\n\t if (window.console)\r\n\t console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\r\n\t this.session.removeGutterDecoration(row, className);\r\n\t };\r\n\r\n\t this.setAnnotations = function(annotations) {\r\n\t this.$annotations = [];\r\n\t for (var i = 0; i < annotations.length; i++) {\r\n\t var annotation = annotations[i];\r\n\t var row = annotation.row;\r\n\t var rowInfo = this.$annotations[row];\r\n\t if (!rowInfo)\r\n\t rowInfo = this.$annotations[row] = {text: []};\r\n\t \r\n\t var annoText = annotation.text;\r\n\t annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\r\n\r\n\t if (rowInfo.text.indexOf(annoText) === -1)\r\n\t rowInfo.text.push(annoText);\r\n\r\n\t var type = annotation.type;\r\n\t if (type == \"error\")\r\n\t rowInfo.className = \" ace_error\";\r\n\t else if (type == \"warning\" && rowInfo.className != \" ace_error\")\r\n\t rowInfo.className = \" ace_warning\";\r\n\t else if (type == \"info\" && (!rowInfo.className))\r\n\t rowInfo.className = \" ace_info\";\r\n\t }\r\n\t };\r\n\r\n\t this.$updateAnnotations = function (delta) {\r\n\t if (!this.$annotations.length)\r\n\t return;\r\n\t var firstRow = delta.start.row;\r\n\t var len = delta.end.row - firstRow;\r\n\t if (len === 0) {\r\n\t } else if (delta.action == 'remove') {\r\n\t this.$annotations.splice(firstRow, len + 1, null);\r\n\t } else {\r\n\t var args = new Array(len + 1);\r\n\t args.unshift(firstRow, 1);\r\n\t this.$annotations.splice.apply(this.$annotations, args);\r\n\t }\r\n\t };\r\n\r\n\t this.update = function(config) {\r\n\t var session = this.session;\r\n\t var firstRow = config.firstRow;\r\n\t var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\r\n\t session.getLength() - 1);\r\n\t var fold = session.getNextFoldLine(firstRow);\r\n\t var foldStart = fold ? fold.start.row : Infinity;\r\n\t var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\r\n\t var breakpoints = session.$breakpoints;\r\n\t var decorations = session.$decorations;\r\n\t var firstLineNumber = session.$firstLineNumber;\r\n\t var lastLineNumber = 0;\r\n\t \r\n\t var gutterRenderer = session.gutterRenderer || this.$renderer;\r\n\r\n\t var cell = null;\r\n\t var index = -1;\r\n\t var row = firstRow;\r\n\t while (true) {\r\n\t if (row > foldStart) {\r\n\t row = fold.end.row + 1;\r\n\t fold = session.getNextFoldLine(row, fold);\r\n\t foldStart = fold ? fold.start.row : Infinity;\r\n\t }\r\n\t if (row > lastRow) {\r\n\t while (this.$cells.length > index + 1) {\r\n\t cell = this.$cells.pop();\r\n\t this.element.removeChild(cell.element);\r\n\t }\r\n\t break;\r\n\t }\r\n\r\n\t cell = this.$cells[++index];\r\n\t if (!cell) {\r\n\t cell = {element: null, textNode: null, foldWidget: null};\r\n\t cell.element = dom.createElement(\"div\");\r\n\t cell.textNode = document.createTextNode('');\r\n\t cell.element.appendChild(cell.textNode);\r\n\t this.element.appendChild(cell.element);\r\n\t this.$cells[index] = cell;\r\n\t }\r\n\r\n\t var className = \"ace_gutter-cell \";\r\n\t if (breakpoints[row])\r\n\t className += breakpoints[row];\r\n\t if (decorations[row])\r\n\t className += decorations[row];\r\n\t if (this.$annotations[row])\r\n\t className += this.$annotations[row].className;\r\n\t if (cell.element.className != className)\r\n\t cell.element.className = className;\r\n\r\n\t var height = session.getRowLength(row) * config.lineHeight + \"px\";\r\n\t if (height != cell.element.style.height)\r\n\t cell.element.style.height = height;\r\n\r\n\t if (foldWidgets) {\r\n\t var c = foldWidgets[row];\r\n\t if (c == null)\r\n\t c = foldWidgets[row] = session.getFoldWidget(row);\r\n\t }\r\n\r\n\t if (c) {\r\n\t if (!cell.foldWidget) {\r\n\t cell.foldWidget = dom.createElement(\"span\");\r\n\t cell.element.appendChild(cell.foldWidget);\r\n\t }\r\n\t var className = \"ace_fold-widget ace_\" + c;\r\n\t if (c == \"start\" && row == foldStart && row < fold.end.row)\r\n\t className += \" ace_closed\";\r\n\t else\r\n\t className += \" ace_open\";\r\n\t if (cell.foldWidget.className != className)\r\n\t cell.foldWidget.className = className;\r\n\r\n\t var height = config.lineHeight + \"px\";\r\n\t if (cell.foldWidget.style.height != height)\r\n\t cell.foldWidget.style.height = height;\r\n\t } else {\r\n\t if (cell.foldWidget) {\r\n\t cell.element.removeChild(cell.foldWidget);\r\n\t cell.foldWidget = null;\r\n\t }\r\n\t }\r\n\t \r\n\t var text = lastLineNumber = gutterRenderer\r\n\t ? gutterRenderer.getText(session, row)\r\n\t : row + firstLineNumber;\r\n\t if (text != cell.textNode.data)\r\n\t cell.textNode.data = text;\r\n\r\n\t row++;\r\n\t }\r\n\r\n\t this.element.style.height = config.minHeight + \"px\";\r\n\r\n\t if (this.$fixedWidth || session.$useWrapMode)\r\n\t lastLineNumber = session.getLength() + firstLineNumber;\r\n\r\n\t var gutterWidth = gutterRenderer \r\n\t ? gutterRenderer.getWidth(session, lastLineNumber, config)\r\n\t : lastLineNumber.toString().length * config.characterWidth;\r\n\t \r\n\t var padding = this.$padding || this.$computePadding();\r\n\t gutterWidth += padding.left + padding.right;\r\n\t if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\r\n\t this.gutterWidth = gutterWidth;\r\n\t this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\r\n\t this._emit(\"changeGutterWidth\", gutterWidth);\r\n\t }\r\n\t };\r\n\r\n\t this.$fixedWidth = false;\r\n\t \r\n\t this.$showLineNumbers = true;\r\n\t this.$renderer = \"\";\r\n\t this.setShowLineNumbers = function(show) {\r\n\t this.$renderer = !show && {\r\n\t getWidth: function() {return \"\"},\r\n\t getText: function() {return \"\"}\r\n\t };\r\n\t };\r\n\t \r\n\t this.getShowLineNumbers = function() {\r\n\t return this.$showLineNumbers;\r\n\t };\r\n\t \r\n\t this.$showFoldWidgets = true;\r\n\t this.setShowFoldWidgets = function(show) {\r\n\t if (show)\r\n\t dom.addCssClass(this.element, \"ace_folding-enabled\");\r\n\t else\r\n\t dom.removeCssClass(this.element, \"ace_folding-enabled\");\r\n\r\n\t this.$showFoldWidgets = show;\r\n\t this.$padding = null;\r\n\t };\r\n\t \r\n\t this.getShowFoldWidgets = function() {\r\n\t return this.$showFoldWidgets;\r\n\t };\r\n\r\n\t this.$computePadding = function() {\r\n\t if (!this.element.firstChild)\r\n\t return {left: 0, right: 0};\r\n\t var style = dom.computedStyle(this.element.firstChild);\r\n\t this.$padding = {};\r\n\t this.$padding.left = parseInt(style.paddingLeft) + 1 || 0;\r\n\t this.$padding.right = parseInt(style.paddingRight) || 0;\r\n\t return this.$padding;\r\n\t };\r\n\r\n\t this.getRegion = function(point) {\r\n\t var padding = this.$padding || this.$computePadding();\r\n\t var rect = this.element.getBoundingClientRect();\r\n\t if (point.x < padding.left + rect.left)\r\n\t return \"markers\";\r\n\t if (this.$showFoldWidgets && point.x > rect.right - padding.right)\r\n\t return \"foldWidgets\";\r\n\t };\r\n\r\n\t}).call(Gutter.prototype);\r\n\r\n\texports.Gutter = Gutter;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Range = acequire(\"../range\").Range;\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\r\n\tvar Marker = function(parentEl) {\r\n\t this.element = dom.createElement(\"div\");\r\n\t this.element.className = \"ace_layer ace_marker-layer\";\r\n\t parentEl.appendChild(this.element);\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t this.$padding = 0;\r\n\r\n\t this.setPadding = function(padding) {\r\n\t this.$padding = padding;\r\n\t };\r\n\t this.setSession = function(session) {\r\n\t this.session = session;\r\n\t };\r\n\t \r\n\t this.setMarkers = function(markers) {\r\n\t this.markers = markers;\r\n\t };\r\n\r\n\t this.update = function(config) {\r\n\t var config = config || this.config;\r\n\t if (!config)\r\n\t return;\r\n\r\n\t this.config = config;\r\n\r\n\r\n\t var html = [];\r\n\t for (var key in this.markers) {\r\n\t var marker = this.markers[key];\r\n\r\n\t if (!marker.range) {\r\n\t marker.update(html, this, this.session, config);\r\n\t continue;\r\n\t }\r\n\r\n\t var range = marker.range.clipRows(config.firstRow, config.lastRow);\r\n\t if (range.isEmpty()) continue;\r\n\r\n\t range = range.toScreenRange(this.session);\r\n\t if (marker.renderer) {\r\n\t var top = this.$getTop(range.start.row, config);\r\n\t var left = this.$padding + range.start.column * config.characterWidth;\r\n\t marker.renderer(html, range, left, top, config);\r\n\t } else if (marker.type == \"fullLine\") {\r\n\t this.drawFullLineMarker(html, range, marker.clazz, config);\r\n\t } else if (marker.type == \"screenLine\") {\r\n\t this.drawScreenLineMarker(html, range, marker.clazz, config);\r\n\t } else if (range.isMultiLine()) {\r\n\t if (marker.type == \"text\")\r\n\t this.drawTextMarker(html, range, marker.clazz, config);\r\n\t else\r\n\t this.drawMultiLineMarker(html, range, marker.clazz, config);\r\n\t } else {\r\n\t this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\r\n\t }\r\n\t }\r\n\t this.element.innerHTML = html.join(\"\");\r\n\t };\r\n\r\n\t this.$getTop = function(row, layerConfig) {\r\n\t return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\r\n\t };\r\n\r\n\t function getBorderClass(tl, tr, br, bl) {\r\n\t return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\r\n\t }\r\n\t this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) {\r\n\t var session = this.session;\r\n\t var start = range.start.row;\r\n\t var end = range.end.row;\r\n\t var row = start;\r\n\t var prev = 0; \r\n\t var curr = 0;\r\n\t var next = session.getScreenLastRowColumn(row);\r\n\t var lineRange = new Range(row, range.start.column, row, curr);\r\n\t for (; row <= end; row++) {\r\n\t lineRange.start.row = lineRange.end.row = row;\r\n\t lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\r\n\t lineRange.end.column = next;\r\n\t prev = curr;\r\n\t curr = next;\r\n\t next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\r\n\t this.drawSingleLineMarker(stringBuilder, lineRange, \r\n\t clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\r\n\t + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end),\r\n\t layerConfig, row == end ? 0 : 1, extraStyle);\r\n\t }\r\n\t };\r\n\t this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\r\n\t var padding = this.$padding;\r\n\t var height = config.lineHeight;\r\n\t var top = this.$getTop(range.start.row, config);\r\n\t var left = padding + range.start.column * config.characterWidth;\r\n\t extraStyle = extraStyle || \"\";\r\n\r\n\t stringBuilder.push(\r\n\t \"\"\r\n\t );\r\n\t top = this.$getTop(range.end.row, config);\r\n\t var width = range.end.column * config.characterWidth;\r\n\r\n\t stringBuilder.push(\r\n\t \"\"\r\n\t );\r\n\t height = (range.end.row - range.start.row - 1) * config.lineHeight;\r\n\t if (height <= 0)\r\n\t return;\r\n\t top = this.$getTop(range.start.row + 1, config);\r\n\t \r\n\t var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\r\n\r\n\t stringBuilder.push(\r\n\t \"\"\r\n\t );\r\n\t };\r\n\t this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\r\n\t var height = config.lineHeight;\r\n\t var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\r\n\r\n\t var top = this.$getTop(range.start.row, config);\r\n\t var left = this.$padding + range.start.column * config.characterWidth;\r\n\r\n\t stringBuilder.push(\r\n\t \"\"\r\n\t );\r\n\t };\r\n\r\n\t this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\r\n\t var top = this.$getTop(range.start.row, config);\r\n\t var height = config.lineHeight;\r\n\t if (range.start.row != range.end.row)\r\n\t height += this.$getTop(range.end.row, config) - top;\r\n\r\n\t stringBuilder.push(\r\n\t \"\"\r\n\t );\r\n\t };\r\n\t \r\n\t this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\r\n\t var top = this.$getTop(range.start.row, config);\r\n\t var height = config.lineHeight;\r\n\r\n\t stringBuilder.push(\r\n\t \"\"\r\n\t );\r\n\t };\r\n\r\n\t}).call(Marker.prototype);\r\n\r\n\texports.Marker = Marker;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"../lib/oop\");\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tvar lang = acequire(\"../lib/lang\");\r\n\tvar useragent = acequire(\"../lib/useragent\");\r\n\tvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\r\n\r\n\tvar Text = function(parentEl) {\r\n\t this.element = dom.createElement(\"div\");\r\n\t this.element.className = \"ace_layer ace_text-layer\";\r\n\t parentEl.appendChild(this.element);\r\n\t this.$updateEolChar = this.$updateEolChar.bind(this);\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\r\n\t this.EOF_CHAR = \"\\xB6\";\r\n\t this.EOL_CHAR_LF = \"\\xAC\";\r\n\t this.EOL_CHAR_CRLF = \"\\xa4\";\r\n\t this.EOL_CHAR = this.EOL_CHAR_LF;\r\n\t this.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\r\n\t this.SPACE_CHAR = \"\\xB7\";\r\n\t this.$padding = 0;\r\n\r\n\t this.$updateEolChar = function() {\r\n\t var EOL_CHAR = this.session.doc.getNewLineCharacter() == \"\\n\"\r\n\t ? this.EOL_CHAR_LF\r\n\t : this.EOL_CHAR_CRLF;\r\n\t if (this.EOL_CHAR != EOL_CHAR) {\r\n\t this.EOL_CHAR = EOL_CHAR;\r\n\t return true;\r\n\t }\r\n\t }\r\n\r\n\t this.setPadding = function(padding) {\r\n\t this.$padding = padding;\r\n\t this.element.style.padding = \"0 \" + padding + \"px\";\r\n\t };\r\n\r\n\t this.getLineHeight = function() {\r\n\t return this.$fontMetrics.$characterSize.height || 0;\r\n\t };\r\n\r\n\t this.getCharacterWidth = function() {\r\n\t return this.$fontMetrics.$characterSize.width || 0;\r\n\t };\r\n\t \r\n\t this.$setFontMetrics = function(measure) {\r\n\t this.$fontMetrics = measure;\r\n\t this.$fontMetrics.on(\"changeCharacterSize\", function(e) {\r\n\t this._signal(\"changeCharacterSize\", e);\r\n\t }.bind(this));\r\n\t this.$pollSizeChanges();\r\n\t }\r\n\r\n\t this.checkForSizeChanges = function() {\r\n\t this.$fontMetrics.checkForSizeChanges();\r\n\t };\r\n\t this.$pollSizeChanges = function() {\r\n\t return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\r\n\t };\r\n\t this.setSession = function(session) {\r\n\t this.session = session;\r\n\t if (session)\r\n\t this.$computeTabString();\r\n\t };\r\n\r\n\t this.showInvisibles = false;\r\n\t this.setShowInvisibles = function(showInvisibles) {\r\n\t if (this.showInvisibles == showInvisibles)\r\n\t return false;\r\n\r\n\t this.showInvisibles = showInvisibles;\r\n\t this.$computeTabString();\r\n\t return true;\r\n\t };\r\n\r\n\t this.displayIndentGuides = true;\r\n\t this.setDisplayIndentGuides = function(display) {\r\n\t if (this.displayIndentGuides == display)\r\n\t return false;\r\n\r\n\t this.displayIndentGuides = display;\r\n\t this.$computeTabString();\r\n\t return true;\r\n\t };\r\n\r\n\t this.$tabStrings = [];\r\n\t this.onChangeTabSize =\r\n\t this.$computeTabString = function() {\r\n\t var tabSize = this.session.getTabSize();\r\n\t this.tabSize = tabSize;\r\n\t var tabStr = this.$tabStrings = [0];\r\n\t for (var i = 1; i < tabSize + 1; i++) {\r\n\t if (this.showInvisibles) {\r\n\t tabStr.push(\"\"\r\n\t + lang.stringRepeat(this.TAB_CHAR, i)\r\n\t + \"\");\r\n\t } else {\r\n\t tabStr.push(lang.stringRepeat(\" \", i));\r\n\t }\r\n\t }\r\n\t if (this.displayIndentGuides) {\r\n\t this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\r\n\t var className = \"ace_indent-guide\";\r\n\t var spaceClass = \"\";\r\n\t var tabClass = \"\";\r\n\t if (this.showInvisibles) {\r\n\t className += \" ace_invisible\";\r\n\t spaceClass = \" ace_invisible_space\";\r\n\t tabClass = \" ace_invisible_tab\";\r\n\t var spaceContent = lang.stringRepeat(this.SPACE_CHAR, this.tabSize);\r\n\t var tabContent = lang.stringRepeat(this.TAB_CHAR, this.tabSize);\r\n\t } else{\r\n\t var spaceContent = lang.stringRepeat(\" \", this.tabSize);\r\n\t var tabContent = spaceContent;\r\n\t }\r\n\r\n\t this.$tabStrings[\" \"] = \"\" + spaceContent + \"\";\r\n\t this.$tabStrings[\"\\t\"] = \"\" + tabContent + \"\";\r\n\t }\r\n\t };\r\n\r\n\t this.updateLines = function(config, firstRow, lastRow) {\r\n\t if (this.config.lastRow != config.lastRow ||\r\n\t this.config.firstRow != config.firstRow) {\r\n\t this.scrollLines(config);\r\n\t }\r\n\t this.config = config;\r\n\r\n\t var first = Math.max(firstRow, config.firstRow);\r\n\t var last = Math.min(lastRow, config.lastRow);\r\n\r\n\t var lineElements = this.element.childNodes;\r\n\t var lineElementsIdx = 0;\r\n\r\n\t for (var row = config.firstRow; row < first; row++) {\r\n\t var foldLine = this.session.getFoldLine(row);\r\n\t if (foldLine) {\r\n\t if (foldLine.containsRow(first)) {\r\n\t first = foldLine.start.row;\r\n\t break;\r\n\t } else {\r\n\t row = foldLine.end.row;\r\n\t }\r\n\t }\r\n\t lineElementsIdx ++;\r\n\t }\r\n\r\n\t var row = first;\r\n\t var foldLine = this.session.getNextFoldLine(row);\r\n\t var foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\r\n\t while (true) {\r\n\t if (row > foldStart) {\r\n\t row = foldLine.end.row+1;\r\n\t foldLine = this.session.getNextFoldLine(row, foldLine);\r\n\t foldStart = foldLine ? foldLine.start.row :Infinity;\r\n\t }\r\n\t if (row > last)\r\n\t break;\r\n\r\n\t var lineElement = lineElements[lineElementsIdx++];\r\n\t if (lineElement) {\r\n\t var html = [];\r\n\t this.$renderLine(\r\n\t html, row, !this.$useLineGroups(), row == foldStart ? foldLine : false\r\n\t );\r\n\t lineElement.style.height = config.lineHeight * this.session.getRowLength(row) + \"px\";\r\n\t lineElement.innerHTML = html.join(\"\");\r\n\t }\r\n\t row++;\r\n\t }\r\n\t };\r\n\r\n\t this.scrollLines = function(config) {\r\n\t var oldConfig = this.config;\r\n\t this.config = config;\r\n\r\n\t if (!oldConfig || oldConfig.lastRow < config.firstRow)\r\n\t return this.update(config);\r\n\r\n\t if (config.lastRow < oldConfig.firstRow)\r\n\t return this.update(config);\r\n\r\n\t var el = this.element;\r\n\t if (oldConfig.firstRow < config.firstRow)\r\n\t for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\r\n\t el.removeChild(el.firstChild);\r\n\r\n\t if (oldConfig.lastRow > config.lastRow)\r\n\t for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--)\r\n\t el.removeChild(el.lastChild);\r\n\r\n\t if (config.firstRow < oldConfig.firstRow) {\r\n\t var fragment = this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1);\r\n\t if (el.firstChild)\r\n\t el.insertBefore(fragment, el.firstChild);\r\n\t else\r\n\t el.appendChild(fragment);\r\n\t }\r\n\r\n\t if (config.lastRow > oldConfig.lastRow) {\r\n\t var fragment = this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow);\r\n\t el.appendChild(fragment);\r\n\t }\r\n\t };\r\n\r\n\t this.$renderLinesFragment = function(config, firstRow, lastRow) {\r\n\t var fragment = this.element.ownerDocument.createDocumentFragment();\r\n\t var row = firstRow;\r\n\t var foldLine = this.session.getNextFoldLine(row);\r\n\t var foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\r\n\t while (true) {\r\n\t if (row > foldStart) {\r\n\t row = foldLine.end.row+1;\r\n\t foldLine = this.session.getNextFoldLine(row, foldLine);\r\n\t foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\t }\r\n\t if (row > lastRow)\r\n\t break;\r\n\r\n\t var container = dom.createElement(\"div\");\r\n\r\n\t var html = [];\r\n\t this.$renderLine(html, row, false, row == foldStart ? foldLine : false);\r\n\t container.innerHTML = html.join(\"\");\r\n\t if (this.$useLineGroups()) {\r\n\t container.className = 'ace_line_group';\r\n\t fragment.appendChild(container);\r\n\t container.style.height = config.lineHeight * this.session.getRowLength(row) + \"px\";\r\n\r\n\t } else {\r\n\t while(container.firstChild)\r\n\t fragment.appendChild(container.firstChild);\r\n\t }\r\n\r\n\t row++;\r\n\t }\r\n\t return fragment;\r\n\t };\r\n\r\n\t this.update = function(config) {\r\n\t this.config = config;\r\n\r\n\t var html = [];\r\n\t var firstRow = config.firstRow, lastRow = config.lastRow;\r\n\r\n\t var row = firstRow;\r\n\t var foldLine = this.session.getNextFoldLine(row);\r\n\t var foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\r\n\t while (true) {\r\n\t if (row > foldStart) {\r\n\t row = foldLine.end.row+1;\r\n\t foldLine = this.session.getNextFoldLine(row, foldLine);\r\n\t foldStart = foldLine ? foldLine.start.row :Infinity;\r\n\t }\r\n\t if (row > lastRow)\r\n\t break;\r\n\r\n\t if (this.$useLineGroups())\r\n\t html.push(\"