ace.define(
	'ace/ext/menu_tools/overlay_page',
	['require', 'exports', 'module', 'ace/lib/dom'],
	function (e, t, n) {
		'use strict'
		var r = e('../../lib/dom'),
			i =
				'#ace_settingsmenu, #kbshortcutmenu {background-color: #F7F7F7;color: black;box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);padding: 1em 0.5em 2em 1em;overflow: auto;position: absolute;margin: 0;bottom: 0;right: 0;top: 0;z-index: 9991;cursor: default;}.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);background-color: rgba(255, 255, 255, 0.6);color: black;}.ace_optionsMenuEntry:hover {background-color: rgba(100, 100, 100, 0.1);transition: all 0.3s}.ace_closeButton {background: rgba(245, 146, 146, 0.5);border: 1px solid #F48A8A;border-radius: 50%;padding: 7px;position: absolute;right: -8px;top: -8px;z-index: 100000;}.ace_closeButton{background: rgba(245, 146, 146, 0.9);}.ace_optionsMenuKey {color: darkslateblue;font-weight: bold;}.ace_optionsMenuCommand {color: darkcyan;font-weight: normal;}.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {vertical-align: middle;}.ace_optionsMenuEntry button[ace_selected_button=true] {background: #e7e7e7;box-shadow: 1px 0px 2px 0px #adadad inset;border-color: #adadad;}.ace_optionsMenuEntry button {background: white;border: 1px solid lightgray;margin: 0px;}.ace_optionsMenuEntry button:hover{background: #f0f0f0;}'
		r.importCssString(i),
			(n.exports.overlayPage = function (t, n, r) {
				function o(e) {
					e.keyCode === 27 && u()
				}
				function u() {
					if (!i) return
					document.removeEventListener('keydown', o),
						i.parentNode.removeChild(i),
						t && t.focus(),
						(i = null),
						r && r()
				}
				function a(e) {
					;(s = e), e && ((i.style.pointerEvents = 'none'), (n.style.pointerEvents = 'auto'))
				}
				var i = document.createElement('div'),
					s = !1
				return (
					(i.style.cssText =
						'margin: 0; padding: 0; position: fixed; top:0; bottom:0; left:0; right:0;z-index: 9990; ' +
						(t ? 'background-color: rgba(0, 0, 0, 0.3);' : '')),
					i.addEventListener('click', function (e) {
						s || u()
					}),
					document.addEventListener('keydown', o),
					n.addEventListener('click', function (e) {
						e.stopPropagation()
					}),
					i.appendChild(n),
					document.body.appendChild(i),
					t && t.blur(),
					{ close: u, setIgnoreFocusOut: a }
				)
			})
	}
),
	ace.define('ace/ext/modelist', ['require', 'exports', 'module'], function (e, t, n) {
		'use strict'
		function i(e) {
			var t = a.text,
				n = e.split(/[\/\\]/).pop()
			for (var i = 0; i < r.length; i++)
				if (r[i].supportsFile(n)) {
					t = r[i]
					break
				}
			return t
		}
		var r = [],
			s = function (e, t, n) {
				;(this.name = e), (this.caption = t), (this.mode = 'ace/mode/' + e), (this.extensions = n)
				var r
				;/\^/.test(n)
					? (r =
							n.replace(/\|(\^)?/g, function (e, t) {
								return '$|' + (t ? '^' : '^.*\\.')
							}) + '$')
					: (r = '^.*\\.(' + n + ')$'),
					(this.extRe = new RegExp(r, 'gi'))
			}
		s.prototype.supportsFile = function (e) {
			return e.match(this.extRe)
		}
		var o = {
				ABAP: ['abap'],
				ABC: ['abc'],
				ActionScript: ['as'],
				ADA: ['ada|adb'],
				Alda: ['alda'],
				Apache_Conf: ['^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd'],
				Apex: ['apex|cls|trigger|tgr'],
				AQL: ['aql'],
				AsciiDoc: ['asciidoc|adoc'],
				ASL: ['dsl|asl'],
				Assembly_x86: ['asm|a'],
				AutoHotKey: ['ahk'],
				BatchFile: ['bat|cmd'],
				C_Cpp: ['cpp|c|cc|cxx|h|hh|hpp|ino'],
				C9Search: ['c9search_results'],
				Cirru: ['cirru|cr'],
				Clojure: ['clj|cljs'],
				Cobol: ['CBL|COB'],
				coffee: ['coffee|cf|cson|^Cakefile'],
				ColdFusion: ['cfm'],
				Crystal: ['cr'],
				CSharp: ['cs'],
				Csound_Document: ['csd'],
				Csound_Orchestra: ['orc'],
				Csound_Score: ['sco'],
				CSS: ['css'],
				Curly: ['curly'],
				D: ['d|di'],
				Dart: ['dart'],
				Diff: ['diff|patch'],
				Dockerfile: ['^Dockerfile'],
				Dot: ['dot'],
				Drools: ['drl'],
				Edifact: ['edi'],
				Eiffel: ['e|ge'],
				EJS: ['ejs'],
				Elixir: ['ex|exs'],
				Elm: ['elm'],
				Erlang: ['erl|hrl'],
				Forth: ['frt|fs|ldr|fth|4th'],
				Fortran: ['f|f90'],
				FSharp: ['fsi|fs|ml|mli|fsx|fsscript'],
				FSL: ['fsl'],
				FTL: ['ftl'],
				Gcode: ['gcode'],
				Gherkin: ['feature'],
				Gitignore: ['^.gitignore'],
				Glsl: ['glsl|frag|vert'],
				Gobstones: ['gbs'],
				golang: ['go'],
				GraphQLSchema: ['gql'],
				Groovy: ['groovy'],
				HAML: ['haml'],
				Handlebars: ['hbs|handlebars|tpl|mustache'],
				Haskell: ['hs'],
				Haskell_Cabal: ['cabal'],
				haXe: ['hx'],
				Hjson: ['hjson'],
				HTML: ['html|htm|xhtml|vue|we|wpy'],
				HTML_Elixir: ['eex|html.eex'],
				HTML_Ruby: ['erb|rhtml|html.erb'],
				INI: ['ini|conf|cfg|prefs'],
				Io: ['io'],
				Jack: ['jack'],
				Jade: ['jade|pug'],
				Java: ['java'],
				JavaScript: ['js|jsm|jsx'],
				JSON: ['json'],
				JSON5: ['json5'],
				JSONiq: ['jq'],
				JSP: ['jsp'],
				JSSM: ['jssm|jssm_state'],
				JSX: ['jsx'],
				Julia: ['jl'],
				Kotlin: ['kt|kts'],
				LaTeX: ['tex|latex|ltx|bib'],
				LESS: ['less'],
				Liquid: ['liquid'],
				Lisp: ['lisp'],
				LiveScript: ['ls'],
				LogiQL: ['logic|lql'],
				LSL: ['lsl'],
				Lua: ['lua'],
				LuaPage: ['lp'],
				Lucene: ['lucene'],
				Makefile: ['^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make'],
				Markdown: ['md|markdown'],
				Mask: ['mask'],
				MATLAB: ['matlab'],
				Maze: ['mz'],
				MediaWiki: ['wiki|mediawiki'],
				MEL: ['mel'],
				MIXAL: ['mixal'],
				MUSHCode: ['mc|mush'],
				MySQL: ['mysql'],
				Nginx: ['nginx|conf'],
				Nim: ['nim'],
				Nix: ['nix'],
				NSIS: ['nsi|nsh'],
				Nunjucks: ['nunjucks|nunjs|nj|njk'],
				ObjectiveC: ['m|mm'],
				OCaml: ['ml|mli'],
				Pascal: ['pas|p'],
				Perl: ['pl|pm'],
				Perl6: ['p6|pl6|pm6'],
				pgSQL: ['pgsql'],
				PHP: ['php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module'],
				PHP_Laravel_blade: ['blade.php'],
				Pig: ['pig'],
				Powershell: ['ps1'],
				Praat: ['praat|praatscript|psc|proc'],
				Prisma: ['prisma'],
				Prolog: ['plg|prolog'],
				Properties: ['properties'],
				Protobuf: ['proto'],
				Puppet: ['epp|pp'],
				Python: ['py'],
				QML: ['qml'],
				R: ['r'],
				Razor: ['cshtml|asp'],
				RDoc: ['Rd'],
				Red: ['red|reds'],
				RHTML: ['Rhtml'],
				RST: ['rst'],
				Ruby: ['rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile'],
				Rust: ['rs'],
				SASS: ['sass'],
				SCAD: ['scad'],
				Scala: ['scala|sbt'],
				Scheme: ['scm|sm|rkt|oak|scheme'],
				SCSS: ['scss'],
				SH: ['sh|bash|^.bashrc'],
				SJS: ['sjs'],
				Slim: ['slim|skim'],
				Smarty: ['smarty|tpl'],
				snippets: ['snippets'],
				Soy_Template: ['soy'],
				Space: ['space'],
				SQL: ['sql'],
				SQLServer: ['sqlserver'],
				Stylus: ['styl|stylus'],
				SVG: ['svg'],
				Swift: ['swift'],
				Tcl: ['tcl'],
				Terraform: ['tf', 'tfvars', 'terragrunt'],
				Tex: ['tex'],
				Text: ['txt'],
				Textile: ['textile'],
				Toml: ['toml'],
				TSX: ['tsx'],
				Twig: ['latte|twig|swig'],
				Typescript: ['ts|typescript|str'],
				Vala: ['vala'],
				VBScript: ['vbs|vb'],
				Velocity: ['vm'],
				Verilog: ['v|vh|sv|svh'],
				VHDL: ['vhd|vhdl'],
				Visualforce: ['vfp|component|page'],
				Wollok: ['wlk|wpgm|wtest'],
				XML: ['xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml'],
				XQuery: ['xq'],
				YAML: ['yaml|yml'],
				Zeek: ['zeek|bro'],
				Django: ['html'],
			},
			u = {
				ObjectiveC: 'Objective-C',
				CSharp: 'C#',
				golang: 'Go',
				C_Cpp: 'C and C++',
				Csound_Document: 'Csound Document',
				Csound_Orchestra: 'Csound',
				Csound_Score: 'Csound Score',
				coffee: 'CoffeeScript',
				HTML_Ruby: 'HTML (Ruby)',
				HTML_Elixir: 'HTML (Elixir)',
				FTL: 'FreeMarker',
				PHP_Laravel_blade: 'PHP (Blade Template)',
				Perl6: 'Perl 6',
				AutoHotKey: 'AutoHotkey / AutoIt',
			},
			a = {}
		for (var f in o) {
			var l = o[f],
				c = (u[f] || f).replace(/_/g, ' '),
				h = f.toLowerCase(),
				p = new s(h, c, l[0])
			;(a[h] = p), r.push(p)
		}
		n.exports = { getModeForPath: i, modes: r, modesByName: a }
	}),
	ace.define('ace/ext/themelist', ['require', 'exports', 'module'], function (e, t, n) {
		'use strict'
		var r = [
			['Chrome'],
			['Clouds'],
			['Crimson Editor'],
			['Dawn'],
			['Dreamweaver'],
			['Eclipse'],
			['GitHub'],
			['IPlastic'],
			['Solarized Light'],
			['TextMate'],
			['Tomorrow'],
			['Xcode'],
			['Kuroir'],
			['KatzenMilch'],
			['SQL Server', 'sqlserver', 'light'],
			['Ambiance', 'ambiance', 'dark'],
			['Chaos', 'chaos', 'dark'],
			['Clouds Midnight', 'clouds_midnight', 'dark'],
			['Dracula', '', 'dark'],
			['Cobalt', 'cobalt', 'dark'],
			['Gruvbox', 'gruvbox', 'dark'],
			['Green on Black', 'gob', 'dark'],
			['idle Fingers', 'idle_fingers', 'dark'],
			['krTheme', 'kr_theme', 'dark'],
			['Merbivore', 'merbivore', 'dark'],
			['Merbivore Soft', 'merbivore_soft', 'dark'],
			['Mono Industrial', 'mono_industrial', 'dark'],
			['Monokai', 'monokai', 'dark'],
			['Nord Dark', 'nord_dark', 'dark'],
			['Pastel on dark', 'pastel_on_dark', 'dark'],
			['Solarized Dark', 'solarized_dark', 'dark'],
			['Terminal', 'terminal', 'dark'],
			['Tomorrow Night', 'tomorrow_night', 'dark'],
			['Tomorrow Night Blue', 'tomorrow_night_blue', 'dark'],
			['Tomorrow Night Bright', 'tomorrow_night_bright', 'dark'],
			['Tomorrow Night 80s', 'tomorrow_night_eighties', 'dark'],
			['Twilight', 'twilight', 'dark'],
			['Vibrant Ink', 'vibrant_ink', 'dark'],
		]
		;(t.themesByName = {}),
			(t.themes = r.map(function (e) {
				var n = e[1] || e[0].replace(/ /g, '_').toLowerCase(),
					r = { caption: e[0], theme: 'ace/theme/' + n, isDark: e[2] == 'dark', name: n }
				return (t.themesByName[n] = r), r
			}))
	}),
	ace.define(
		'ace/ext/options',
		[
			'require',
			'exports',
			'module',
			'ace/ext/menu_tools/overlay_page',
			'ace/lib/dom',
			'ace/lib/oop',
			'ace/config',
			'ace/lib/event_emitter',
			'ace/ext/modelist',
			'ace/ext/themelist',
		],
		function (e, t, n) {
			'use strict'
			e('./menu_tools/overlay_page')
			var r = e('../lib/dom'),
				i = e('../lib/oop'),
				s = e('../config'),
				o = e('../lib/event_emitter').EventEmitter,
				u = r.buildDom,
				a = e('./modelist'),
				f = e('./themelist'),
				l = { Bright: [], Dark: [] }
			f.themes.forEach(function (e) {
				l[e.isDark ? 'Dark' : 'Bright'].push({ caption: e.caption, value: e.theme })
			})
			var c = a.modes.map(function (e) {
					return { caption: e.caption, value: e.mode }
				}),
				h = {
					Main: {
						Mode: { path: 'mode', type: 'select', items: c },
						Theme: { path: 'theme', type: 'select', items: l },
						Keybinding: {
							type: 'buttonBar',
							path: 'keyboardHandler',
							items: [
								{ caption: 'Ace', value: null },
								{ caption: 'Vim', value: 'ace/keyboard/vim' },
								{ caption: 'Emacs', value: 'ace/keyboard/emacs' },
								{ caption: 'Sublime', value: 'ace/keyboard/sublime' },
								{ caption: 'VSCode', value: 'ace/keyboard/vscode' },
							],
						},
						'Font Size': {
							path: 'fontSize',
							type: 'number',
							defaultValue: 12,
							defaults: [
								{ caption: '12px', value: 12 },
								{ caption: '24px', value: 24 },
							],
						},
						'Soft Wrap': {
							type: 'buttonBar',
							path: 'wrap',
							items: [
								{ caption: 'Off', value: 'off' },
								{ caption: 'View', value: 'free' },
								{ caption: 'margin', value: 'printMargin' },
								{ caption: '40', value: '40' },
							],
						},
						'Cursor Style': {
							path: 'cursorStyle',
							items: [
								{ caption: 'Ace', value: 'ace' },
								{ caption: 'Slim', value: 'slim' },
								{ caption: 'Smooth', value: 'smooth' },
								{ caption: 'Smooth And Slim', value: 'smooth slim' },
								{ caption: 'Wide', value: 'wide' },
							],
						},
						Folding: {
							path: 'foldStyle',
							items: [
								{ caption: 'Manual', value: 'manual' },
								{ caption: 'Mark begin', value: 'markbegin' },
								{ caption: 'Mark begin and end', value: 'markbeginend' },
							],
						},
						'Soft Tabs': [
							{ path: 'useSoftTabs' },
							{ ariaLabel: 'Tab Size', path: 'tabSize', type: 'number', values: [2, 3, 4, 8, 16] },
						],
						Overscroll: {
							type: 'buttonBar',
							path: 'scrollPastEnd',
							items: [
								{ caption: 'None', value: 0 },
								{ caption: 'Half', value: 0.5 },
								{ caption: 'Full', value: 1 },
							],
						},
					},
					More: {
						'Atomic soft tabs': { path: 'navigateWithinSoftTabs' },
						'Enable Behaviours': { path: 'behavioursEnabled' },
						'Wrap with quotes': { path: 'wrapBehavioursEnabled' },
						'Enable Auto Indent': { path: 'enableAutoIndent' },
						'Full Line Selection': {
							type: 'checkbox',
							values: 'text|line',
							path: 'selectionStyle',
						},
						'Highlight Active Line': { path: 'highlightActiveLine' },
						'Show Invisibles': { path: 'showInvisibles' },
						'Show Indent Guides': { path: 'displayIndentGuides' },
						'Persistent HScrollbar': { path: 'hScrollBarAlwaysVisible' },
						'Persistent VScrollbar': { path: 'vScrollBarAlwaysVisible' },
						'Animate scrolling': { path: 'animatedScroll' },
						'Show Gutter': { path: 'showGutter' },
						'Show Line Numbers': { path: 'showLineNumbers' },
						'Relative Line Numbers': { path: 'relativeLineNumbers' },
						'Fixed Gutter Width': { path: 'fixedWidthGutter' },
						'Show Print Margin': [
							{ path: 'showPrintMargin' },
							{ ariaLabel: 'Print Margin', type: 'number', path: 'printMarginColumn' },
						],
						'Indented Soft Wrap': { path: 'indentedSoftWrap' },
						'Highlight selected word': { path: 'highlightSelectedWord' },
						'Fade Fold Widgets': { path: 'fadeFoldWidgets' },
						'Use textarea for IME': { path: 'useTextareaForIME' },
						'Merge Undo Deltas': {
							path: 'mergeUndoDeltas',
							items: [
								{ caption: 'Always', value: 'always' },
								{ caption: 'Never', value: 'false' },
								{ caption: 'Timed', value: 'true' },
							],
						},
						'Elastic Tabstops': { path: 'useElasticTabstops' },
						'Incremental Search': { path: 'useIncrementalSearch' },
						'Read-only': { path: 'readOnly' },
						'Copy without selection': { path: 'copyWithEmptySelection' },
						'Live Autocompletion': { path: 'enableLiveAutocompletion' },
					},
				},
				p = function (e, t) {
					;(this.editor = e),
						(this.container = t || document.createElement('div')),
						(this.groups = []),
						(this.options = {})
				}
			;(function () {
				i.implement(this, o),
					(this.add = function (e) {
						e.Main && i.mixin(h.Main, e.Main), e.More && i.mixin(h.More, e.More)
					}),
					(this.render = function () {
						;(this.container.innerHTML = ''),
							u(
								[
									'table',
									{ role: 'presentation', id: 'controls' },
									this.renderOptionGroup(h.Main),
									[
										'tr',
										null,
										[
											'td',
											{ colspan: 2 },
											[
												'table',
												{ role: 'presentation', id: 'more-controls' },
												this.renderOptionGroup(h.More),
											],
										],
									],
									['tr', null, ['td', { colspan: 2 }, 'version ' + s.version]],
								],
								this.container
							)
					}),
					(this.renderOptionGroup = function (e) {
						return Object.keys(e)
							.map(function (t, n) {
								var r = e[t]
								return r.position || (r.position = n / 1e4), r.label || (r.label = t), r
							})
							.sort(function (e, t) {
								return e.position - t.position
							})
							.map(function (e) {
								return this.renderOption(e.label, e)
							}, this)
					}),
					(this.renderOptionControl = function (e, t) {
						var n = this
						if (Array.isArray(t))
							return t.map(function (t) {
								return n.renderOptionControl(e, t)
							})
						var r,
							i = n.getOption(t)
						t.values &&
							t.type != 'checkbox' &&
							(typeof t.values == 'string' && (t.values = t.values.split('|')),
							(t.items = t.values.map(function (e) {
								return { value: e, name: e }
							})))
						if (t.type == 'buttonBar')
							r = [
								'div',
								{ role: 'group', 'aria-labelledby': t.path + '-label' },
								t.items.map(function (e) {
									return [
										'button',
										{
											value: e.value,
											ace_selected_button: i == e.value,
											'aria-pressed': i == e.value,
											onclick: function () {
												n.setOption(t, e.value)
												var r = this.parentNode.querySelectorAll('[ace_selected_button]')
												for (var i = 0; i < r.length; i++)
													r[i].removeAttribute('ace_selected_button'),
														r[i].setAttribute('aria-pressed', !1)
												this.setAttribute('ace_selected_button', !0),
													this.setAttribute('aria-pressed', !0)
											},
										},
										e.desc || e.caption || e.name,
									]
								}),
							]
						else if (t.type == 'number')
							(r = [
								'input',
								{
									type: 'number',
									value: i || t.defaultValue,
									style: 'width:3em',
									oninput: function () {
										n.setOption(t, parseInt(this.value))
									},
								},
							]),
								t.ariaLabel ? (r[1]['aria-label'] = t.ariaLabel) : (r[1].id = e),
								t.defaults &&
									(r = [
										r,
										t.defaults.map(function (e) {
											return [
												'button',
												{
													onclick: function () {
														var t = this.parentNode.firstChild
														;(t.value = e.value), t.oninput()
													},
												},
												e.caption,
											]
										}),
									])
						else if (t.items) {
							var s = function (e) {
									return e.map(function (e) {
										return ['option', { value: e.value || e.name }, e.desc || e.caption || e.name]
									})
								},
								o = Array.isArray(t.items)
									? s(t.items)
									: Object.keys(t.items).map(function (e) {
											return ['optgroup', { label: e }, s(t.items[e])]
									  })
							r = [
								'select',
								{
									id: e,
									value: i,
									onchange: function () {
										n.setOption(t, this.value)
									},
								},
								o,
							]
						} else
							typeof t.values == 'string' && (t.values = t.values.split('|')),
								t.values && (i = i == t.values[1]),
								(r = [
									'input',
									{
										type: 'checkbox',
										id: e,
										checked: i || null,
										onchange: function () {
											var e = this.checked
											t.values && (e = t.values[e ? 1 : 0]), n.setOption(t, e)
										},
									},
								]),
								t.type == 'checkedNumber' && (r = [r, []])
						return r
					}),
					(this.renderOption = function (e, t) {
						if (t.path && !t.onchange && !this.editor.$options[t.path]) return
						var n = Array.isArray(t) ? t[0].path : t.path
						this.options[n] = t
						var r = '-' + n,
							i = n + '-label',
							s = this.renderOptionControl(r, t)
						return [
							'tr',
							{ class: 'ace_optionsMenuEntry' },
							['td', ['label', { for: r, id: i }, e]],
							['td', s],
						]
					}),
					(this.setOption = function (e, t) {
						typeof e == 'string' && (e = this.options[e]),
							t == 'false' && (t = !1),
							t == 'true' && (t = !0),
							t == 'null' && (t = null),
							t == 'undefined' && (t = undefined),
							typeof t == 'string' && parseFloat(t).toString() == t && (t = parseFloat(t)),
							e.onchange ? e.onchange(t) : e.path && this.editor.setOption(e.path, t),
							this._signal('setOption', { name: e.path, value: t })
					}),
					(this.getOption = function (e) {
						return e.getValue ? e.getValue() : this.editor.getOption(e.path)
					})
			}).call(p.prototype),
				(t.OptionPanel = p)
		}
	)
;(function () {
	ace.require(['ace/ext/options'], function (m) {
		if (typeof module == 'object' && typeof exports == 'object' && module) {
			module.exports = m
		}
	})
})()
