tom-select-rails 2.2.2 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tom-select-rails/version.rb +1 -1
  3. data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.complete.js +614 -820
  4. data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.complete.js.map +1 -1
  5. data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.js +411 -685
  6. data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.js.map +1 -1
  7. data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.popular.js +436 -705
  8. data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.popular.js.map +1 -1
  9. data/vendor/assets/javascripts/tom-select-rails/cjs/utils.js +31 -27
  10. data/vendor/assets/javascripts/tom-select-rails/cjs/utils.js.map +1 -1
  11. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/caret_position/plugin.js +11 -16
  12. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/caret_position/plugin.js.map +1 -1
  13. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/change_listener/plugin.js +3 -2
  14. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/change_listener/plugin.js.map +1 -1
  15. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/checkbox_options/plugin.js +47 -34
  16. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/checkbox_options/plugin.js.map +1 -1
  17. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/clear_button/plugin.js +3 -13
  18. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/clear_button/plugin.js.map +1 -1
  19. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/drag_drop/plugin.js +249 -29
  20. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/drag_drop/plugin.js.map +1 -1
  21. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/dropdown_header/plugin.js +3 -11
  22. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/dropdown_header/plugin.js.map +1 -1
  23. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/dropdown_input/plugin.js +15 -24
  24. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/dropdown_input/plugin.js.map +1 -1
  25. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/input_autogrow/plugin.js +4 -6
  26. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/input_autogrow/plugin.js.map +1 -1
  27. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/no_active_items/plugin.js +2 -1
  28. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/no_active_items/plugin.js.map +1 -1
  29. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/no_backspace_delete/plugin.js +2 -2
  30. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/no_backspace_delete/plugin.js.map +1 -1
  31. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/optgroup_columns/plugin.js +3 -15
  32. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/optgroup_columns/plugin.js.map +1 -1
  33. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/remove_button/plugin.js +11 -15
  34. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/remove_button/plugin.js.map +1 -1
  35. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/restore_on_backspace/plugin.js +2 -3
  36. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/restore_on_backspace/plugin.js.map +1 -1
  37. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/virtual_scroll/plugin.js +41 -50
  38. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/virtual_scroll/plugin.js.map +1 -1
  39. data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.complete.js +614 -820
  40. data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.complete.js.map +1 -1
  41. data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.js +411 -685
  42. data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.js.map +1 -1
  43. data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.popular.js +436 -705
  44. data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.popular.js.map +1 -1
  45. data/vendor/assets/javascripts/tom-select-rails/esm/utils.js +31 -26
  46. data/vendor/assets/javascripts/tom-select-rails/esm/utils.js.map +1 -1
  47. data/vendor/assets/javascripts/tom-select-rails/js/plugins/caret_position.js +11 -16
  48. data/vendor/assets/javascripts/tom-select-rails/js/plugins/caret_position.js.map +1 -1
  49. data/vendor/assets/javascripts/tom-select-rails/js/plugins/change_listener.js +3 -2
  50. data/vendor/assets/javascripts/tom-select-rails/js/plugins/change_listener.js.map +1 -1
  51. data/vendor/assets/javascripts/tom-select-rails/js/plugins/checkbox_options.js +47 -34
  52. data/vendor/assets/javascripts/tom-select-rails/js/plugins/checkbox_options.js.map +1 -1
  53. data/vendor/assets/javascripts/tom-select-rails/js/plugins/clear_button.js +3 -13
  54. data/vendor/assets/javascripts/tom-select-rails/js/plugins/clear_button.js.map +1 -1
  55. data/vendor/assets/javascripts/tom-select-rails/js/plugins/drag_drop.js +249 -29
  56. data/vendor/assets/javascripts/tom-select-rails/js/plugins/drag_drop.js.map +1 -1
  57. data/vendor/assets/javascripts/tom-select-rails/js/plugins/dropdown_header.js +3 -11
  58. data/vendor/assets/javascripts/tom-select-rails/js/plugins/dropdown_header.js.map +1 -1
  59. data/vendor/assets/javascripts/tom-select-rails/js/plugins/dropdown_input.js +15 -24
  60. data/vendor/assets/javascripts/tom-select-rails/js/plugins/dropdown_input.js.map +1 -1
  61. data/vendor/assets/javascripts/tom-select-rails/js/plugins/input_autogrow.js +4 -6
  62. data/vendor/assets/javascripts/tom-select-rails/js/plugins/input_autogrow.js.map +1 -1
  63. data/vendor/assets/javascripts/tom-select-rails/js/plugins/no_active_items.js +2 -1
  64. data/vendor/assets/javascripts/tom-select-rails/js/plugins/no_active_items.js.map +1 -1
  65. data/vendor/assets/javascripts/tom-select-rails/js/plugins/no_backspace_delete.js +2 -2
  66. data/vendor/assets/javascripts/tom-select-rails/js/plugins/no_backspace_delete.js.map +1 -1
  67. data/vendor/assets/javascripts/tom-select-rails/js/plugins/optgroup_columns.js +3 -15
  68. data/vendor/assets/javascripts/tom-select-rails/js/plugins/optgroup_columns.js.map +1 -1
  69. data/vendor/assets/javascripts/tom-select-rails/js/plugins/remove_button.js +11 -15
  70. data/vendor/assets/javascripts/tom-select-rails/js/plugins/remove_button.js.map +1 -1
  71. data/vendor/assets/javascripts/tom-select-rails/js/plugins/restore_on_backspace.js +2 -3
  72. data/vendor/assets/javascripts/tom-select-rails/js/plugins/restore_on_backspace.js.map +1 -1
  73. data/vendor/assets/javascripts/tom-select-rails/js/plugins/virtual_scroll.js +41 -50
  74. data/vendor/assets/javascripts/tom-select-rails/js/plugins/virtual_scroll.js.map +1 -1
  75. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.base.js +411 -685
  76. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.base.js.map +1 -1
  77. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.base.min.js +87 -78
  78. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.base.min.js.map +1 -1
  79. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.complete.js +614 -820
  80. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.complete.js.map +1 -1
  81. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.complete.min.js +195 -176
  82. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.complete.min.js.map +1 -1
  83. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.popular.js +436 -705
  84. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.popular.js.map +1 -1
  85. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.popular.min.js +87 -78
  86. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.popular.min.js.map +1 -1
  87. data/vendor/assets/javascripts/tom-select-rails/types/contrib/microevent.d.ts +1 -1
  88. data/vendor/assets/javascripts/tom-select-rails/types/contrib/microplugin.d.ts +4 -4
  89. data/vendor/assets/javascripts/tom-select-rails/types/defaults.d.ts +1 -0
  90. data/vendor/assets/javascripts/tom-select-rails/types/plugins/checkbox_options/plugin.d.ts +3 -2
  91. data/vendor/assets/javascripts/tom-select-rails/types/plugins/checkbox_options/types.d.ts +14 -0
  92. data/vendor/assets/javascripts/tom-select-rails/types/plugins/clear_button/types.d.ts +1 -1
  93. data/vendor/assets/javascripts/tom-select-rails/types/plugins/dropdown_header/types.d.ts +1 -1
  94. data/vendor/assets/javascripts/tom-select-rails/types/plugins/remove_button/types.d.ts +1 -1
  95. data/vendor/assets/javascripts/tom-select-rails/types/plugins/restore_on_backspace/plugin.d.ts +1 -1
  96. data/vendor/assets/javascripts/tom-select-rails/types/tom-select.d.ts +10 -12
  97. data/vendor/assets/javascripts/tom-select-rails/types/types/core.d.ts +15 -14
  98. data/vendor/assets/javascripts/tom-select-rails/types/types/settings.d.ts +3 -2
  99. data/vendor/assets/javascripts/tom-select-rails/types/utils.d.ts +7 -0
  100. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap4.css +224 -216
  101. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap4.css.map +1 -1
  102. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap4.min.css +1 -1
  103. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap4.min.css.map +1 -1
  104. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap5.css +245 -252
  105. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap5.css.map +1 -1
  106. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap5.min.css +1 -1
  107. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap5.min.css.map +1 -1
  108. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.css +213 -210
  109. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.css.map +1 -1
  110. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.default.css +223 -215
  111. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.default.css.map +1 -1
  112. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.default.min.css +1 -1
  113. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.default.min.css.map +1 -1
  114. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.min.css +1 -1
  115. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.min.css.map +1 -1
  116. data/vendor/assets/stylesheets/tom-select-rails/scss/_dropdown.scss +7 -10
  117. data/vendor/assets/stylesheets/tom-select-rails/scss/_items.scss +2 -5
  118. data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/checkbox_options.scss +8 -2
  119. data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/clear_button.scss +16 -14
  120. data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/drag_drop.scss +6 -12
  121. data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/dropdown_header.scss +3 -2
  122. data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/dropdown_input.scss +7 -11
  123. data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/input_autogrow.scss +0 -3
  124. data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/optgroup_columns.scss +7 -5
  125. data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/remove_button.scss +20 -20
  126. data/vendor/assets/stylesheets/tom-select-rails/scss/tom-select.bootstrap4.scss +33 -39
  127. data/vendor/assets/stylesheets/tom-select-rails/scss/tom-select.bootstrap5.scss +54 -80
  128. data/vendor/assets/stylesheets/tom-select-rails/scss/tom-select.default.scss +16 -14
  129. data/vendor/assets/stylesheets/tom-select-rails/scss/tom-select.scss +52 -57
  130. metadata +8 -7
@@ -1 +1 @@
1
- {"version":3,"file":"tom-select.complete.js","sources":["../../src/contrib/microevent.ts","../../src/contrib/microplugin.ts","../../node_modules/@orchidjs/unicode-variants/dist/esm/regex.js","../../node_modules/@orchidjs/unicode-variants/dist/esm/strings.js","../../node_modules/@orchidjs/unicode-variants/dist/esm/index.js","../../node_modules/@orchidjs/sifter/dist/esm/utils.js","../../node_modules/@orchidjs/sifter/dist/esm/sifter.js","../../node_modules/@orchidjs/sifter/lib/utils.ts","../../src/vanilla.ts","../../src/contrib/highlight.ts","../../src/constants.ts","../../src/defaults.ts","../../src/utils.ts","../../src/getSettings.ts","../../src/tom-select.ts","../../src/plugins/change_listener/plugin.ts","../../src/plugins/checkbox_options/plugin.ts","../../src/plugins/clear_button/plugin.ts","../../src/plugins/drag_drop/plugin.ts","../../src/plugins/dropdown_header/plugin.ts","../../src/plugins/caret_position/plugin.ts","../../src/plugins/dropdown_input/plugin.ts","../../src/plugins/input_autogrow/plugin.ts","../../src/plugins/no_backspace_delete/plugin.ts","../../src/plugins/no_active_items/plugin.ts","../../src/plugins/optgroup_columns/plugin.ts","../../src/plugins/remove_button/plugin.ts","../../src/plugins/restore_on_backspace/plugin.ts","../../src/plugins/virtual_scroll/plugin.ts","../../src/tom-select.complete.ts"],"sourcesContent":["/**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\n\ntype TCallback = (...args:any) => any;\n\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events:string,callback:(event:string)=>any){\n\tevents.split(/\\s+/).forEach((event) =>{\n\t\tcallback(event);\n\t});\n}\n\nexport default class MicroEvent{\n\n\tpublic _events: {[key:string]:TCallback[]};\n\n\tconstructor(){\n\t\tthis._events = {};\n\t}\n\n\ton(events:string, fct:TCallback){\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = this._events[event] || [];\n\t\t\tevent_array.push(fct);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\toff(events:string, fct:TCallback){\n\t\tvar n = arguments.length;\n\t\tif( n === 0 ){\n\t\t\tthis._events = {};\n\t\t\treturn;\n\t\t}\n\n\t\tforEvents(events,(event) => {\n\n\t\t\tif (n === 1){\n\t\t\t\tdelete this._events[event];\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst event_array = this._events[event];\n\t\t\tif( event_array === undefined ) return;\n\n\t\t\tevent_array.splice(event_array.indexOf(fct), 1);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\ttrigger(events:string, ...args:any){\n\t\tvar self = this;\n\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = self._events[event];\n\t\t\tif( event_array === undefined ) return;\n\t\t\tevent_array.forEach(fct => {\n\t\t\t\tfct.apply(self, args );\n\t\t\t});\n\n\t\t});\n\t}\n};\n","/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\ntype TSettings = {\n\t[key:string]:any\n}\n\ntype TPlugins = {\n\tnames: string[],\n\tsettings: TSettings,\n\trequested: {[key:string]:boolean},\n\tloaded: {[key:string]:any}\n};\n\nexport type TPluginItem = {name:string,options:{}};\nexport type TPluginHash = {[key:string]:{}};\n\n\n\n\nexport default function MicroPlugin(Interface: any ){\n\n\tInterface.plugins = {};\n\n\treturn class extends Interface{\n\n\t\tpublic plugins:TPlugins = {\n\t\t\tnames : [],\n\t\t\tsettings : {},\n\t\t\trequested : {},\n\t\t\tloaded : {}\n\t\t};\n\n\t\t/**\n\t\t * Registers a plugin.\n\t\t *\n\t\t * @param {function} fn\n\t\t */\n\t\tstatic define(name:string, fn:(this:any,settings:TSettings)=>any){\n\t\t\tInterface.plugins[name] = {\n\t\t\t\t'name' : name,\n\t\t\t\t'fn' : fn\n\t\t\t};\n\t\t}\n\n\n\t\t/**\n\t\t * Initializes the listed plugins (with options).\n\t\t * Acceptable formats:\n\t\t *\n\t\t * List (without options):\n\t\t * ['a', 'b', 'c']\n\t\t *\n\t\t * List (with options):\n\t\t * [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n\t\t *\n\t\t * Hash (with options):\n\t\t * {'a': { ... }, 'b': { ... }, 'c': { ... }}\n\t\t *\n\t\t * @param {array|object} plugins\n\t\t */\n\t\tinitializePlugins(plugins:string[]|TPluginItem[]|TPluginHash) {\n\t\t\tvar key, name;\n\t\t\tconst self = this;\n\t\t\tconst queue:string[] = [];\n\n\t\t\tif (Array.isArray(plugins)) {\n\t\t\t\tplugins.forEach((plugin:string|TPluginItem)=>{\n\t\t\t\t\tif (typeof plugin === 'string') {\n\t\t\t\t\t\tqueue.push(plugin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.plugins.settings[plugin.name] = plugin.options;\n\t\t\t\t\t\tqueue.push(plugin.name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (plugins) {\n\t\t\t\tfor (key in plugins) {\n\t\t\t\t\tif (plugins.hasOwnProperty(key)) {\n\t\t\t\t\t\tself.plugins.settings[key] = plugins[key];\n\t\t\t\t\t\tqueue.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile( name = queue.shift() ){\n\t\t\t\tself.require(name);\n\t\t\t}\n\t\t}\n\n\t\tloadPlugin(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\t\t\tvar plugin = Interface.plugins[name];\n\n\t\t\tif (!Interface.plugins.hasOwnProperty(name)) {\n\t\t\t\tthrow new Error('Unable to find \"' + name + '\" plugin');\n\t\t\t}\n\n\t\t\tplugins.requested[name] = true;\n\t\t\tplugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n\t\t\tplugins.names.push(name);\n\t\t}\n\n\t\t/**\n\t\t * Initializes a plugin.\n\t\t *\n\t\t */\n\t\trequire(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\n\t\t\tif (!self.plugins.loaded.hasOwnProperty(name)) {\n\t\t\t\tif (plugins.requested[name]) {\n\t\t\t\t\tthrow new Error('Plugin has circular dependency (\"' + name + '\")');\n\t\t\t\t}\n\t\t\t\tself.loadPlugin(name);\n\t\t\t}\n\n\t\t\treturn plugins.loaded[name];\n\t\t}\n\n\t};\n\n}\n","/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n * @param {string[]} chars\n * @return {string}\n */\nconst arrayToPattern = chars => {\n chars = chars.filter(Boolean);\n\n if (chars.length < 2) {\n return chars[0] || '';\n }\n\n return maxValueLength(chars) == 1 ? '[' + chars.join('') + ']' : '(?:' + chars.join('|') + ')';\n};\n/**\n * @param {string[]} array\n * @return {string}\n */\n\nconst sequencePattern = array => {\n if (!hasDuplicates(array)) {\n return array.join('');\n }\n\n let pattern = '';\n let prev_char_count = 0;\n\n const prev_pattern = () => {\n if (prev_char_count > 1) {\n pattern += '{' + prev_char_count + '}';\n }\n };\n\n array.forEach((char, i) => {\n if (char === array[i - 1]) {\n prev_char_count++;\n return;\n }\n\n prev_pattern();\n pattern += char;\n prev_char_count = 1;\n });\n prev_pattern();\n return pattern;\n};\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n * @param {Set<string>} chars\n * @return {string}\n */\n\nconst setToPattern = chars => {\n let array = toArray(chars);\n return arrayToPattern(array);\n};\n/**\n *\n * https://stackoverflow.com/questions/7376598/in-javascript-how-do-i-check-if-an-array-has-duplicate-values\n * @param {any[]} array\n */\n\nconst hasDuplicates = array => {\n return new Set(array).size !== array.length;\n};\n/**\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n * @param {string} str\n * @return {string}\n */\n\nconst escape_regex = str => {\n return (str + '').replace(/([\\$\\(\\)\\*\\+\\.\\?\\[\\]\\^\\{\\|\\}\\\\])/gu, '\\\\$1');\n};\n/**\n * Return the max length of array values\n * @param {string[]} array\n *\n */\n\nconst maxValueLength = array => {\n return array.reduce((longest, value) => Math.max(longest, unicodeLength(value)), 0);\n};\n/**\n * @param {string} str\n */\n\nconst unicodeLength = str => {\n return toArray(str).length;\n};\n/**\n * @param {any} p\n * @return {any[]}\n */\n\nconst toArray = p => Array.from(p);\n\nexport { arrayToPattern, escape_regex, hasDuplicates, maxValueLength, sequencePattern, setToPattern, toArray, unicodeLength };\n//# sourceMappingURL=regex.js.map\n","/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\n/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n * @param {string} input\n * @return {string[][]}\n */\nconst allSubstrings = input => {\n if (input.length === 1) return [[input]];\n /** @type {string[][]} */\n\n let result = [];\n const start = input.substring(1);\n const suba = allSubstrings(start);\n suba.forEach(function (subresult) {\n let tmp = subresult.slice(0);\n tmp[0] = input.charAt(0) + tmp[0];\n result.push(tmp);\n tmp = subresult.slice(0);\n tmp.unshift(input.charAt(0));\n result.push(tmp);\n });\n return result;\n};\n\nexport { allSubstrings };\n//# sourceMappingURL=strings.js.map\n","/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\nimport { toArray, setToPattern, escape_regex, arrayToPattern, sequencePattern } from './regex.js';\nexport { escape_regex } from './regex.js';\nimport { allSubstrings } from './strings.js';\n\n/**\n * @typedef {{[key:string]:string}} TUnicodeMap\n * @typedef {{[key:string]:Set<string>}} TUnicodeSets\n * @typedef {[[number,number]]} TCodePoints\n * @typedef {{folded:string,composed:string,code_point:number}} TCodePointObj\n * @typedef {{start:number,end:number,length:number,substr:string}} TSequencePart\n */\n/** @type {TCodePoints} */\n\nconst code_points = [[0, 65535]];\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}\\u{2bc}]';\n/** @type {TUnicodeMap} */\n\nlet unicode_map;\n/** @type {RegExp} */\n\nlet multi_char_reg;\nconst max_char_length = 3;\n/** @type {TUnicodeMap} */\n\nconst latin_convert = {};\n/** @type {TUnicodeMap} */\n\nconst latin_condensed = {\n '/': '⁄∕',\n '0': '߀',\n \"a\": \"ⱥɐɑ\",\n \"aa\": \"ꜳ\",\n \"ae\": \"æǽǣ\",\n \"ao\": \"ꜵ\",\n \"au\": \"ꜷ\",\n \"av\": \"ꜹꜻ\",\n \"ay\": \"ꜽ\",\n \"b\": \"ƀɓƃ\",\n \"c\": \"ꜿƈȼↄ\",\n \"d\": \"đɗɖᴅƌꮷԁɦ\",\n \"e\": \"ɛǝᴇɇ\",\n \"f\": \"ꝼƒ\",\n \"g\": \"ǥɠꞡᵹꝿɢ\",\n \"h\": \"ħⱨⱶɥ\",\n \"i\": \"ɨı\",\n \"j\": \"ɉȷ\",\n \"k\": \"ƙⱪꝁꝃꝅꞣ\",\n \"l\": \"łƚɫⱡꝉꝇꞁɭ\",\n \"m\": \"ɱɯϻ\",\n \"n\": \"ꞥƞɲꞑᴎлԉ\",\n \"o\": \"øǿɔɵꝋꝍᴑ\",\n \"oe\": \"œ\",\n \"oi\": \"ƣ\",\n \"oo\": \"ꝏ\",\n \"ou\": \"ȣ\",\n \"p\": \"ƥᵽꝑꝓꝕρ\",\n \"q\": \"ꝗꝙɋ\",\n \"r\": \"ɍɽꝛꞧꞃ\",\n \"s\": \"ßȿꞩꞅʂ\",\n \"t\": \"ŧƭʈⱦꞇ\",\n \"th\": \"þ\",\n \"tz\": \"ꜩ\",\n \"u\": \"ʉ\",\n \"v\": \"ʋꝟʌ\",\n \"vy\": \"ꝡ\",\n \"w\": \"ⱳ\",\n \"y\": \"ƴɏỿ\",\n \"z\": \"ƶȥɀⱬꝣ\",\n \"hv\": \"ƕ\"\n};\n\nfor (let latin in latin_condensed) {\n let unicode = latin_condensed[latin] || '';\n\n for (let i = 0; i < unicode.length; i++) {\n let char = unicode.substring(i, i + 1);\n latin_convert[char] = latin;\n }\n}\n\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|') + '|' + accent_pat, 'gu');\n/**\n * Initialize the unicode_map from the give code point ranges\n *\n * @param {TCodePoints=} _code_points\n */\n\nconst initialize = _code_points => {\n if (unicode_map !== undefined) return;\n unicode_map = generateMap(_code_points || code_points);\n};\n/**\n * Helper method for normalize a string\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize\n * @param {string} str\n * @param {string} form\n */\n\nconst normalize = (str, form = 'NFKD') => str.normalize(form);\n/**\n * Remove accents without reordering string\n * calling str.normalize('NFKD') on \\u{594}\\u{595}\\u{596} becomes \\u{596}\\u{594}\\u{595}\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n * @param {string} str\n * @return {string}\n */\n\nconst asciifold = str => {\n return toArray(str).reduce(\n /**\n * @param {string} result\n * @param {string} char\n */\n (result, char) => {\n return result + _asciifold(char);\n }, '');\n};\n/**\n * @param {string} str\n * @return {string}\n */\n\nconst _asciifold = str => {\n str = normalize(str).toLowerCase().replace(convert_pat, (\n /** @type {string} */\n char) => {\n return latin_convert[char] || '';\n }); //return str;\n\n return normalize(str, 'NFC');\n};\n/**\n * Generate a list of unicode variants from the list of code points\n * @param {TCodePoints} code_points\n * @yield {TCodePointObj}\n */\n\nfunction* generator(code_points) {\n for (const [code_point_min, code_point_max] of code_points) {\n for (let i = code_point_min; i <= code_point_max; i++) {\n let composed = String.fromCharCode(i);\n let folded = asciifold(composed);\n\n if (folded == composed.toLowerCase()) {\n continue;\n } // skip when folded is a string longer than 3 characters long\n // bc the resulting regex patterns will be long\n // eg:\n // folded صلى الله عليه وسلم length 18 code point 65018\n // folded جل جلاله length 8 code point 65019\n\n\n if (folded.length > max_char_length) {\n continue;\n }\n\n if (folded.length == 0) {\n continue;\n }\n\n yield {\n folded: folded,\n composed: composed,\n code_point: i\n };\n }\n }\n}\n/**\n * Generate a unicode map from the list of code points\n * @param {TCodePoints} code_points\n * @return {TUnicodeSets}\n */\n\nconst generateSets = code_points => {\n /** @type {{[key:string]:Set<string>}} */\n const unicode_sets = {};\n /**\n * @param {string} folded\n * @param {string} to_add\n */\n\n const addMatching = (folded, to_add) => {\n /** @type {Set<string>} */\n const folded_set = unicode_sets[folded] || new Set();\n const patt = new RegExp('^' + setToPattern(folded_set) + '$', 'iu');\n\n if (to_add.match(patt)) {\n return;\n }\n\n folded_set.add(escape_regex(to_add));\n unicode_sets[folded] = folded_set;\n };\n\n for (let value of generator(code_points)) {\n addMatching(value.folded, value.folded);\n addMatching(value.folded, value.composed);\n }\n\n return unicode_sets;\n};\n/**\n * Generate a unicode map from the list of code points\n * ae => (?:(?:ae|Æ|Ǽ|Ǣ)|(?:A|Ⓐ|A...)(?:E|ɛ|Ⓔ...))\n *\n * @param {TCodePoints} code_points\n * @return {TUnicodeMap}\n */\n\nconst generateMap = code_points => {\n /** @type {TUnicodeSets} */\n const unicode_sets = generateSets(code_points);\n /** @type {TUnicodeMap} */\n\n const unicode_map = {};\n /** @type {string[]} */\n\n let multi_char = [];\n\n for (let folded in unicode_sets) {\n let set = unicode_sets[folded];\n\n if (set) {\n unicode_map[folded] = setToPattern(set);\n }\n\n if (folded.length > 1) {\n multi_char.push(escape_regex(folded));\n }\n }\n\n multi_char.sort((a, b) => b.length - a.length);\n const multi_char_patt = arrayToPattern(multi_char);\n multi_char_reg = new RegExp('^' + multi_char_patt, 'u');\n return unicode_map;\n};\n/**\n * Map each element of an array from it's folded value to all possible unicode matches\n * @param {string[]} strings\n * @param {number} min_replacement\n * @return {string}\n */\n\nconst mapSequence = (strings, min_replacement = 1) => {\n let chars_replaced = 0;\n strings = strings.map(str => {\n if (unicode_map[str]) {\n chars_replaced += str.length;\n }\n\n return unicode_map[str] || str;\n });\n\n if (chars_replaced >= min_replacement) {\n return sequencePattern(strings);\n }\n\n return '';\n};\n/**\n * Convert a short string and split it into all possible patterns\n * Keep a pattern only if min_replacement is met\n *\n * 'abc'\n * \t\t=> [['abc'],['ab','c'],['a','bc'],['a','b','c']]\n *\t\t=> ['abc-pattern','ab-c-pattern'...]\n *\n *\n * @param {string} str\n * @param {number} min_replacement\n * @return {string}\n */\n\nconst substringsToPattern = (str, min_replacement = 1) => {\n min_replacement = Math.max(min_replacement, str.length - 1);\n return arrayToPattern(allSubstrings(str).map(sub_pat => {\n return mapSequence(sub_pat, min_replacement);\n }));\n};\n/**\n * Convert an array of sequences into a pattern\n * [{start:0,end:3,length:3,substr:'iii'}...] => (?:iii...)\n *\n * @param {Sequence[]} sequences\n * @param {boolean} all\n */\n\nconst sequencesToPattern = (sequences, all = true) => {\n let min_replacement = sequences.length > 1 ? 1 : 0;\n return arrayToPattern(sequences.map(sequence => {\n let seq = [];\n const len = all ? sequence.length() : sequence.length() - 1;\n\n for (let j = 0; j < len; j++) {\n seq.push(substringsToPattern(sequence.substrs[j] || '', min_replacement));\n }\n\n return sequencePattern(seq);\n }));\n};\n/**\n * Return true if the sequence is already in the sequences\n * @param {Sequence} needle_seq\n * @param {Sequence[]} sequences\n */\n\n\nconst inSequences = (needle_seq, sequences) => {\n for (const seq of sequences) {\n if (seq.start != needle_seq.start || seq.end != needle_seq.end) {\n continue;\n }\n\n if (seq.substrs.join('') !== needle_seq.substrs.join('')) {\n continue;\n }\n\n let needle_parts = needle_seq.parts;\n /**\n * @param {TSequencePart} part\n */\n\n const filter = part => {\n for (const needle_part of needle_parts) {\n if (needle_part.start === part.start && needle_part.substr === part.substr) {\n return false;\n }\n\n if (part.length == 1 || needle_part.length == 1) {\n continue;\n } // check for overlapping parts\n // a = ['::=','==']\n // b = ['::','===']\n // a = ['r','sm']\n // b = ['rs','m']\n\n\n if (part.start < needle_part.start && part.end > needle_part.start) {\n return true;\n }\n\n if (needle_part.start < part.start && needle_part.end > part.start) {\n return true;\n }\n }\n\n return false;\n };\n\n let filtered = seq.parts.filter(filter);\n\n if (filtered.length > 0) {\n continue;\n }\n\n return true;\n }\n\n return false;\n};\n\nclass Sequence {\n constructor() {\n /** @type {TSequencePart[]} */\n this.parts = [];\n /** @type {string[]} */\n\n this.substrs = [];\n this.start = 0;\n this.end = 0;\n }\n /**\n * @param {TSequencePart|undefined} part\n */\n\n\n add(part) {\n if (part) {\n this.parts.push(part);\n this.substrs.push(part.substr);\n this.start = Math.min(part.start, this.start);\n this.end = Math.max(part.end, this.end);\n }\n }\n\n last() {\n return this.parts[this.parts.length - 1];\n }\n\n length() {\n return this.parts.length;\n }\n /**\n * @param {number} position\n * @param {TSequencePart} last_piece\n */\n\n\n clone(position, last_piece) {\n let clone = new Sequence();\n let parts = JSON.parse(JSON.stringify(this.parts));\n let last_part = parts.pop();\n\n for (const part of parts) {\n clone.add(part);\n }\n\n let last_substr = last_piece.substr.substring(0, position - last_part.start);\n let clone_last_len = last_substr.length;\n clone.add({\n start: last_part.start,\n end: last_part.start + clone_last_len,\n length: clone_last_len,\n substr: last_substr\n });\n return clone;\n }\n\n}\n/**\n * Expand a regular expression pattern to include unicode variants\n * \teg /a/ becomes /aⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐɑAⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ/\n *\n * Issue:\n * ﺊﺋ [ 'ﺊ = \\\\u{fe8a}', 'ﺋ = \\\\u{fe8b}' ]\n *\tbecomes:\tئئ [ 'ي = \\\\u{64a}', 'ٔ = \\\\u{654}', 'ي = \\\\u{64a}', 'ٔ = \\\\u{654}' ]\n *\n *\tİIJ = IIJ = ⅡJ\n *\n * \t1/2/4\n *\n * @param {string} str\n * @return {string|undefined}\n */\n\n\nconst getPattern = str => {\n initialize();\n str = asciifold(str);\n let pattern = '';\n let sequences = [new Sequence()];\n\n for (let i = 0; i < str.length; i++) {\n let substr = str.substring(i);\n let match = substr.match(multi_char_reg);\n const char = str.substring(i, i + 1);\n const match_str = match ? match[0] : null; // loop through sequences\n // add either the char or multi_match\n\n let overlapping = [];\n let added_types = new Set();\n\n for (const sequence of sequences) {\n const last_piece = sequence.last();\n\n if (!last_piece || last_piece.length == 1 || last_piece.end <= i) {\n // if we have a multi match\n if (match_str) {\n const len = match_str.length;\n sequence.add({\n start: i,\n end: i + len,\n length: len,\n substr: match_str\n });\n added_types.add('1');\n } else {\n sequence.add({\n start: i,\n end: i + 1,\n length: 1,\n substr: char\n });\n added_types.add('2');\n }\n } else if (match_str) {\n let clone = sequence.clone(i, last_piece);\n const len = match_str.length;\n clone.add({\n start: i,\n end: i + len,\n length: len,\n substr: match_str\n });\n overlapping.push(clone);\n } else {\n // don't add char\n // adding would create invalid patterns: 234 => [2,34,4]\n added_types.add('3');\n }\n } // if we have overlapping\n\n\n if (overlapping.length > 0) {\n // ['ii','iii'] before ['i','i','iii']\n overlapping = overlapping.sort((a, b) => {\n return a.length() - b.length();\n });\n\n for (let clone of overlapping) {\n // don't add if we already have an equivalent sequence\n if (inSequences(clone, sequences)) {\n continue;\n }\n\n sequences.push(clone);\n }\n\n continue;\n } // if we haven't done anything unique\n // clean up the patterns\n // helps keep patterns smaller\n // if str = 'r₨㎧aarss', pattern will be 446 instead of 655\n\n\n if (i > 0 && added_types.size == 1 && !added_types.has('3')) {\n pattern += sequencesToPattern(sequences, false);\n let new_seq = new Sequence();\n const old_seq = sequences[0];\n\n if (old_seq) {\n new_seq.add(old_seq.last());\n }\n\n sequences = [new_seq];\n }\n }\n\n pattern += sequencesToPattern(sequences, true);\n return pattern;\n};\n\nexport { _asciifold, asciifold, code_points, generateMap, generateSets, generator, getPattern, initialize, mapSequence, normalize, substringsToPattern, unicode_map };\n//# sourceMappingURL=index.js.map\n","/*! sifter.js | https://github.com/orchidjs/sifter.js | Apache License (v2) */\nimport { asciifold } from '@orchidjs/unicode-variants';\n\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nconst getAttr = (obj, name) => {\n if (!obj) return;\n return obj[name];\n};\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\n\nconst getAttrNesting = (obj, name) => {\n if (!obj) return;\n var part,\n names = name.split(\".\");\n\n while ((part = names.shift()) && (obj = obj[part]));\n\n return obj;\n};\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\n\nconst scoreValue = (value, token, weight) => {\n var score, pos;\n if (!value) return 0;\n value = value + '';\n if (token.regex == null) return 0;\n pos = value.search(token.regex);\n if (pos === -1) return 0;\n score = token.string.length / value.length;\n if (pos === 0) score += 0.5;\n return score * weight;\n};\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\n\nconst propToArray = (obj, key) => {\n var value = obj[key];\n if (typeof value == 'function') return value;\n\n if (value && !Array.isArray(value)) {\n obj[key] = [value];\n }\n};\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\n\nconst iterate = (object, callback) => {\n if (Array.isArray(object)) {\n object.forEach(callback);\n } else {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n callback(object[key], key);\n }\n }\n }\n};\nconst cmp = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n a = asciifold(a + '').toLowerCase();\n b = asciifold(b + '').toLowerCase();\n if (a > b) return 1;\n if (b > a) return -1;\n return 0;\n};\n\nexport { cmp, getAttr, getAttrNesting, iterate, propToArray, scoreValue };\n//# sourceMappingURL=utils.js.map\n","/*! sifter.js | https://github.com/orchidjs/sifter.js | Apache License (v2) */\nimport { iterate, cmp, propToArray, getAttrNesting, getAttr, scoreValue } from './utils.js';\nexport { cmp, getAttr, getAttrNesting, iterate, propToArray, scoreValue } from './utils.js';\nimport { escape_regex, getPattern } from '@orchidjs/unicode-variants';\nexport { getPattern } from '@orchidjs/unicode-variants';\n\n/**\n * sifter.js\n * Copyright (c) 2013–2020 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\nclass Sifter {\n // []|{};\n\n /**\n * Textually searches arrays and hashes of objects\n * by property (or multiple properties). Designed\n * specifically for autocomplete.\n *\n */\n constructor(items, settings) {\n this.items = void 0;\n this.settings = void 0;\n this.items = items;\n this.settings = settings || {\n diacritics: true\n };\n }\n\n /**\n * Splits a search string into an array of individual\n * regexps to be used to match results.\n *\n */\n tokenize(query, respect_word_boundaries, weights) {\n if (!query || !query.length) return [];\n const tokens = [];\n const words = query.split(/\\s+/);\n var field_regex;\n\n if (weights) {\n field_regex = new RegExp('^(' + Object.keys(weights).map(escape_regex).join('|') + ')\\:(.*)$');\n }\n\n words.forEach(word => {\n let field_match;\n let field = null;\n let regex = null; // look for \"field:query\" tokens\n\n if (field_regex && (field_match = word.match(field_regex))) {\n field = field_match[1];\n word = field_match[2];\n }\n\n if (word.length > 0) {\n if (this.settings.diacritics) {\n regex = getPattern(word) || null;\n } else {\n regex = escape_regex(word);\n }\n\n if (regex && respect_word_boundaries) regex = \"\\\\b\" + regex;\n }\n\n tokens.push({\n string: word,\n regex: regex ? new RegExp(regex, 'iu') : null,\n field: field\n });\n });\n return tokens;\n }\n\n /**\n * Returns a function to be used to score individual results.\n *\n * Good matches will have a higher score than poor matches.\n * If an item is not a match, 0 will be returned by the function.\n *\n * @returns {T.ScoreFn}\n */\n getScoreFunction(query, options) {\n var search = this.prepareSearch(query, options);\n return this._getScoreFunction(search);\n }\n /**\n * @returns {T.ScoreFn}\n *\n */\n\n\n _getScoreFunction(search) {\n const tokens = search.tokens,\n token_count = tokens.length;\n\n if (!token_count) {\n return function () {\n return 0;\n };\n }\n\n const fields = search.options.fields,\n weights = search.weights,\n field_count = fields.length,\n getAttrFn = search.getAttrFn;\n\n if (!field_count) {\n return function () {\n return 1;\n };\n }\n /**\n * Calculates the score of an object\n * against the search query.\n *\n */\n\n\n const scoreObject = function () {\n if (field_count === 1) {\n return function (token, data) {\n const field = fields[0].field;\n return scoreValue(getAttrFn(data, field), token, weights[field] || 1);\n };\n }\n\n return function (token, data) {\n var sum = 0; // is the token specific to a field?\n\n if (token.field) {\n const value = getAttrFn(data, token.field);\n\n if (!token.regex && value) {\n sum += 1 / field_count;\n } else {\n sum += scoreValue(value, token, 1);\n }\n } else {\n iterate(weights, (weight, field) => {\n sum += scoreValue(getAttrFn(data, field), token, weight);\n });\n }\n\n return sum / field_count;\n };\n }();\n\n if (token_count === 1) {\n return function (data) {\n return scoreObject(tokens[0], data);\n };\n }\n\n if (search.options.conjunction === 'and') {\n return function (data) {\n var score,\n sum = 0;\n\n for (let token of tokens) {\n score = scoreObject(token, data);\n if (score <= 0) return 0;\n sum += score;\n }\n\n return sum / token_count;\n };\n } else {\n return function (data) {\n var sum = 0;\n iterate(tokens, token => {\n sum += scoreObject(token, data);\n });\n return sum / token_count;\n };\n }\n }\n\n /**\n * Returns a function that can be used to compare two\n * results, for sorting purposes. If no sorting should\n * be performed, `null` will be returned.\n *\n * @return function(a,b)\n */\n getSortFunction(query, options) {\n var search = this.prepareSearch(query, options);\n return this._getSortFunction(search);\n }\n\n _getSortFunction(search) {\n var implicit_score,\n sort_flds = [];\n const self = this,\n options = search.options,\n sort = !search.query && options.sort_empty ? options.sort_empty : options.sort;\n\n if (typeof sort == 'function') {\n return sort.bind(this);\n }\n /**\n * Fetches the specified sort field value\n * from a search result item.\n *\n */\n\n\n const get_field = function get_field(name, result) {\n if (name === '$score') return result.score;\n return search.getAttrFn(self.items[result.id], name);\n }; // parse options\n\n\n if (sort) {\n for (let s of sort) {\n if (search.query || s.field !== '$score') {\n sort_flds.push(s);\n }\n }\n } // the \"$score\" field is implied to be the primary\n // sort field, unless it's manually specified\n\n\n if (search.query) {\n implicit_score = true;\n\n for (let fld of sort_flds) {\n if (fld.field === '$score') {\n implicit_score = false;\n break;\n }\n }\n\n if (implicit_score) {\n sort_flds.unshift({\n field: '$score',\n direction: 'desc'\n });\n } // without a search.query, all items will have the same score\n\n } else {\n sort_flds = sort_flds.filter(fld => fld.field !== '$score');\n } // build function\n\n\n const sort_flds_count = sort_flds.length;\n\n if (!sort_flds_count) {\n return null;\n }\n\n return function (a, b) {\n var result, field;\n\n for (let sort_fld of sort_flds) {\n field = sort_fld.field;\n let multiplier = sort_fld.direction === 'desc' ? -1 : 1;\n result = multiplier * cmp(get_field(field, a), get_field(field, b));\n if (result) return result;\n }\n\n return 0;\n };\n }\n\n /**\n * Parses a search query and returns an object\n * with tokens and fields ready to be populated\n * with results.\n *\n */\n prepareSearch(query, optsUser) {\n const weights = {};\n var options = Object.assign({}, optsUser);\n propToArray(options, 'sort');\n propToArray(options, 'sort_empty'); // convert fields to new format\n\n if (options.fields) {\n propToArray(options, 'fields');\n const fields = [];\n options.fields.forEach(field => {\n if (typeof field == 'string') {\n field = {\n field: field,\n weight: 1\n };\n }\n\n fields.push(field);\n weights[field.field] = 'weight' in field ? field.weight : 1;\n });\n options.fields = fields;\n }\n\n return {\n options: options,\n query: query.toLowerCase().trim(),\n tokens: this.tokenize(query, options.respect_word_boundaries, weights),\n total: 0,\n items: [],\n weights: weights,\n getAttrFn: options.nesting ? getAttrNesting : getAttr\n };\n }\n\n /**\n * Searches through all items and returns a sorted array of matches.\n *\n */\n search(query, options) {\n var self = this,\n score,\n search;\n search = this.prepareSearch(query, options);\n options = search.options;\n query = search.query; // generate result scoring function\n\n const fn_score = options.score || self._getScoreFunction(search); // perform search and sort\n\n\n if (query.length) {\n iterate(self.items, (item, id) => {\n score = fn_score(item);\n\n if (options.filter === false || score > 0) {\n search.items.push({\n 'score': score,\n 'id': id\n });\n }\n });\n } else {\n iterate(self.items, (_, id) => {\n search.items.push({\n 'score': 1,\n 'id': id\n });\n });\n }\n\n const fn_sort = self._getSortFunction(search);\n\n if (fn_sort) search.items.sort(fn_sort); // apply limits\n\n search.total = search.items.length;\n\n if (typeof options.limit === 'number') {\n search.items = search.items.slice(0, options.limit);\n }\n\n return search;\n }\n\n}\n\nexport { Sifter };\n//# sourceMappingURL=sifter.js.map\n","\nimport { asciifold } from '@orchidjs/unicode-variants';\nimport * as T from './types';\n\n\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nexport const getAttr = (obj:{[key:string]:any}, name:string ) => {\n if (!obj ) return;\n return obj[name];\n};\n\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nexport const getAttrNesting = (obj:{[key:string]:any}, name:string ) => {\n if (!obj ) return;\n var part, names = name.split(\".\");\n\twhile( (part = names.shift()) && (obj = obj[part]));\n return obj;\n};\n\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\nexport const scoreValue = (value:string, token:T.Token, weight:number ):number => {\n\tvar score, pos;\n\n\tif (!value) return 0;\n\n\tvalue = value + '';\n\tif( token.regex == null ) return 0;\n\tpos = value.search(token.regex);\n\tif (pos === -1) return 0;\n\n\tscore = token.string.length / value.length;\n\tif (pos === 0) score += 0.5;\n\n\treturn score * weight;\n};\n\n\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\nexport const propToArray = (obj:{[key:string]:any}, key:string) => {\n\tvar value = obj[key];\n\n\tif( typeof value == 'function' ) return value;\n\n\tif( value && !Array.isArray(value) ){\n\t\tobj[key] = [value];\n\t}\n}\n\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nexport const cmp = (a:number|string, b:number|string) => {\n\tif (typeof a === 'number' && typeof b === 'number') {\n\t\treturn a > b ? 1 : (a < b ? -1 : 0);\n\t}\n\ta = asciifold(a + '').toLowerCase();\n\tb = asciifold(b + '').toLowerCase();\n\tif (a > b) return 1;\n\tif (b > a) return -1;\n\treturn 0;\n};\n","\nimport { iterate } from '@orchidjs/sifter/lib/utils';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\11\\12\\14\\15\\40]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n","/**\n * highlight v3 | MIT license | Johann Burkard <jb@eaio.com>\n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal <beatgates@gmail.com> 2011-6-24 (added regex)\n * - Modified by Brian Reavis <brian@thirdroute.com> 2012-8-27 (cleanup)\n */\n\nimport {replaceNode} from '../vanilla';\n\n\nexport const highlight = (element:HTMLElement, regex:string|RegExp) => {\n\n\tif( regex === null ) return;\n\n\t// convet string to regex\n\tif( typeof regex === 'string' ){\n\n\t\tif( !regex.length ) return;\n\t\tregex = new RegExp(regex, 'i');\n\t}\n\n\n\t// Wrap matching part of text node with highlighting <span>, e.g.\n\t// Soccer -> <span class=\"highlight\">Soc</span>cer for regex = /soc/i\n\tconst highlightText = ( node:Text ):number => {\n\n\t\tvar match = node.data.match(regex);\n\t\tif( match && node.data.length > 0 ){\n\t\t\tvar spannode\t\t= document.createElement('span');\n\t\t\tspannode.className\t= 'highlight';\n\t\t\tvar middlebit\t\t= node.splitText(match.index as number);\n\n\t\t\tmiddlebit.splitText(match[0]!.length);\n\t\t\tvar middleclone\t\t= middlebit.cloneNode(true);\n\n\t\t\tspannode.appendChild(middleclone);\n\t\t\treplaceNode(middlebit, spannode);\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\n\t// Recurse element node, looking for child text nodes to highlight, unless element\n\t// is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n\tconst highlightChildren = ( node:Element ):void => {\n\t\tif( node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && ( node.className !== 'highlight' || node.tagName !== 'SPAN' ) ){\n\t\t\tArray.from(node.childNodes).forEach(element => {\n\t\t\t\thighlightRecursive(element);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tconst highlightRecursive = ( node:Node|Element ):number => {\n\n\t\tif( node.nodeType === 3 ){\n\t\t\treturn highlightText(node as Text);\n\t\t}\n\n\t\thighlightChildren(node as Element);\n\n\t\treturn 0;\n\t};\n\n\thighlightRecursive( element );\n};\n\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with(), pass js strict mode, and use without jquery\n */\nexport const removeHighlight = (el:HTMLElement) => {\n\tvar elements = el.querySelectorAll(\"span.highlight\");\n\tArray.prototype.forEach.call(elements, function(el:HTMLElement){\n\t\tvar parent = el.parentNode as Node;\n\t\tparent.replaceChild(el.firstChild as Node, el);\n\t\tparent.normalize();\n\t});\n};\n","export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n","\nexport default {\n\toptions: [],\n\toptgroups: [],\n\n\tplugins: [],\n\tdelimiter: ',',\n\tsplitOn: null, // regexp or string for splitting up values from a paste command\n\tpersist: true,\n\tdiacritics: true,\n\tcreate: null,\n\tcreateOnBlur: false,\n\tcreateFilter: null,\n\thighlight: true,\n\topenOnFocus: true,\n\tshouldOpen: null,\n\tmaxOptions: 50,\n\tmaxItems: null,\n\thideSelected: null,\n\tduplicates: false,\n\taddPrecedence: false,\n\tselectOnTab: false,\n\tpreload: null,\n\tallowEmptyOption: false,\n\t//closeAfterSelect: false,\n\n\tloadThrottle: 300,\n\tloadingClass: 'loading',\n\n\tdataAttr: null, //'data-data',\n\toptgroupField: 'optgroup',\n\tvalueField: 'value',\n\tlabelField: 'text',\n\tdisabledField: 'disabled',\n\toptgroupLabelField: 'label',\n\toptgroupValueField: 'value',\n\tlockOptgroupOrder: false,\n\n\tsortField: '$order',\n\tsearchField: ['text'],\n\tsearchConjunction: 'and',\n\n\tmode: null,\n\twrapperClass: 'ts-wrapper',\n\tcontrolClass: 'ts-control',\n\tdropdownClass: 'ts-dropdown',\n\tdropdownContentClass: 'ts-dropdown-content',\n\titemClass: 'item',\n\toptionClass: 'option',\n\n\tdropdownParent: null,\n\tcontrolInput: '<input type=\"text\" autocomplete=\"off\" size=\"1\" />',\n\n\tcopyClassesToDropdown: false,\n\n\tplaceholder: null,\n\thidePlaceholder: null,\n\n\tshouldLoad: function(query:string):boolean{\n\t\treturn query.length > 0;\n\t},\n\n\t/*\n\tload : null, // function(query, callback) { ... }\n\tscore : null, // function(search) { ... }\n\tonInitialize : null, // function() { ... }\n\tonChange : null, // function(value) { ... }\n\tonItemAdd : null, // function(value, $item) { ... }\n\tonItemRemove : null, // function(value) { ... }\n\tonClear : null, // function() { ... }\n\tonOptionAdd : null, // function(value, data) { ... }\n\tonOptionRemove : null, // function(value) { ... }\n\tonOptionClear : null, // function() { ... }\n\tonOptionGroupAdd : null, // function(id, data) { ... }\n\tonOptionGroupRemove : null, // function(id) { ... }\n\tonOptionGroupClear : null, // function() { ... }\n\tonDropdownOpen : null, // function(dropdown) { ... }\n\tonDropdownClose : null, // function(dropdown) { ... }\n\tonType : null, // function(str) { ... }\n\tonDelete : null, // function(values) { ... }\n\t*/\n\n\trender: {\n\t\t/*\n\t\titem: null,\n\t\toptgroup: null,\n\t\toptgroup_header: null,\n\t\toption: null,\n\t\toption_create: null\n\t\t*/\n\t}\n};\n","\nimport TomSelect from './tom-select';\nimport { TomLoadCallback } from './types/index';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n * 'str' -> 'str'\n * null -> ''\n * undefined -> ''\n * true -> '1'\n * false -> '0'\n * 0 -> '0'\n * 1 -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n * - start\n * - length\n *\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n","import defaults from './defaults';\nimport { hash_key } from './utils';\nimport { TomOption, TomSettings, RecursivePartial } from './types/index';\nimport { iterate } from '@orchidjs/sifter/lib/utils';\nimport { TomInput } from './types/index';\n\n\nexport default function getSettings( input:TomInput, settings_user:RecursivePartial<TomSettings>):TomSettings{\n\tvar settings:TomSettings\t= Object.assign({}, defaults, settings_user);\n\n\tvar attr_data\t\t\t\t= settings.dataAttr;\n\tvar field_label\t\t\t\t= settings.labelField;\n\tvar field_value\t\t\t\t= settings.valueField;\n\tvar field_disabled\t\t\t= settings.disabledField;\n\tvar field_optgroup\t\t\t= settings.optgroupField;\n\tvar field_optgroup_label\t= settings.optgroupLabelField;\n\tvar field_optgroup_value\t= settings.optgroupValueField;\n\n\tvar tag_name\t\t\t\t= input.tagName.toLowerCase();\n\tvar placeholder\t\t\t\t= input.getAttribute('placeholder') || input.getAttribute('data-placeholder');\n\n\tif (!placeholder && !settings.allowEmptyOption) {\n\t\tlet option\t\t= input.querySelector('option[value=\"\"]');\n\t\tif( option ){\n\t\t\tplaceholder = option.textContent;\n\t\t}\n\n\t}\n\n\tvar settings_element:{\n\t\tplaceholder\t: null|string,\n\t\toptions\t\t: TomOption[],\n\t\toptgroups\t: TomOption[],\n\t\titems\t\t: string[],\n\t\tmaxItems\t: null|number,\n\t} = {\n\t\tplaceholder\t: placeholder,\n\t\toptions\t\t: [],\n\t\toptgroups\t: [],\n\t\titems\t\t: [],\n\t\tmaxItems\t: null,\n\t};\n\n\n\t/**\n\t * Initialize from a <select> element.\n\t *\n\t */\n\tvar init_select = () => {\n\t\tvar tagName;\n\t\tvar options = settings_element.options;\n\t\tvar optionsMap:{[key:string]:any} = {};\n\t\tvar group_count = 1;\n\n\t\tvar readData = (el:HTMLElement):TomOption => {\n\n\t\t\tvar data\t= Object.assign({},el.dataset); // get plain object from DOMStringMap\n\t\t\tvar json\t= attr_data && data[attr_data];\n\n\t\t\tif( typeof json === 'string' && json.length ){\n\t\t\t\tdata = Object.assign(data,JSON.parse(json));\n\t\t\t}\n\n\t\t\treturn data;\n\t\t};\n\n\t\tvar addOption = (option:HTMLOptionElement, group?:string) => {\n\n\t\t\tvar value = hash_key(option.value);\n\t\t\tif ( value == null ) return;\n\t\t\tif ( !value && !settings.allowEmptyOption) return;\n\n\t\t\t// if the option already exists, it's probably been\n\t\t\t// duplicated in another optgroup. in this case, push\n\t\t\t// the current group to the \"optgroup\" property on the\n\t\t\t// existing option so that it's rendered in both places.\n\t\t\tif (optionsMap.hasOwnProperty(value)) {\n\t\t\t\tif (group) {\n\t\t\t\t\tvar arr = optionsMap[value][field_optgroup];\n\t\t\t\t\tif (!arr) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = group;\n\t\t\t\t\t} else if (!Array.isArray(arr)) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = [arr, group];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarr.push(group);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\tvar option_data = readData(option);\n\t\t\t\toption_data[field_label] = option_data[field_label] || option.textContent;\n\t\t\t\toption_data[field_value] = option_data[field_value] || value;\n\t\t\t\toption_data[field_disabled] = option_data[field_disabled] || option.disabled;\n\t\t\t\toption_data[field_optgroup] = option_data[field_optgroup] || group;\n\t\t\t\toption_data.$option\t\t\t= option;\n\n\t\t\t\toptionsMap[value] = option_data;\n\t\t\t\toptions.push(option_data);\n\t\t\t}\n\n\t\t\tif( option.selected ){\n\t\t\t\tsettings_element.items.push(value);\n\t\t\t}\n\t\t};\n\n\t\tvar addGroup = ( optgroup:HTMLOptGroupElement ) => {\n\t\t\tvar id:string, optgroup_data\n\n\t\t\toptgroup_data\t\t\t\t\t\t\t= readData(optgroup);\n\t\t\toptgroup_data[field_optgroup_label]\t\t= optgroup_data[field_optgroup_label] || optgroup.getAttribute('label') || '';\n\t\t\toptgroup_data[field_optgroup_value]\t\t= optgroup_data[field_optgroup_value] || group_count++;\n\t\t\toptgroup_data[field_disabled]\t\t\t= optgroup_data[field_disabled] || optgroup.disabled;\n\t\t\tsettings_element.optgroups.push(optgroup_data);\n\n\t\t\tid = optgroup_data[field_optgroup_value];\n\n\t\t\titerate(optgroup.children, (option)=>{\n\t\t\t\taddOption(option as HTMLOptionElement, id);\n\t\t\t});\n\n\t\t};\n\n\t\tsettings_element.maxItems = input.hasAttribute('multiple') ? null : 1;\n\n\t\titerate(input.children,(child)=>{\n\t\t\ttagName = child.tagName.toLowerCase();\n\t\t\tif (tagName === 'optgroup') {\n\t\t\t\taddGroup(child as HTMLOptGroupElement);\n\t\t\t} else if (tagName === 'option') {\n\t\t\t\taddOption(child as HTMLOptionElement);\n\t\t\t}\n\t\t});\n\n\t};\n\n\n\t/**\n\t * Initialize from a <input type=\"text\"> element.\n\t *\n\t */\n\tvar init_textbox = () => {\n\t\tconst data_raw = input.getAttribute(attr_data);\n\n\t\tif (!data_raw) {\n\t\t\tvar value = input.value.trim() || '';\n\t\t\tif (!settings.allowEmptyOption && !value.length) return;\n\t\t\tconst values = value.split(settings.delimiter);\n\n\t\t\titerate( values, (value) => {\n\t\t\t\tconst option:TomOption = {};\n\t\t\t\toption[field_label] = value;\n\t\t\t\toption[field_value] = value;\n\t\t\t\tsettings_element.options.push(option);\n\t\t\t});\n\t\t\tsettings_element.items = values;\n\t\t} else {\n\t\t\tsettings_element.options = JSON.parse(data_raw);\n\t\t\titerate( settings_element.options, (opt) => {\n\t\t\t\tsettings_element.items.push(opt[field_value]);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tif (tag_name === 'select') {\n\t\tinit_select();\n\t} else {\n\t\tinit_textbox();\n\t}\n\n\treturn Object.assign( {}, defaults, settings_element, settings_user) as TomSettings;\n};\n","\nimport MicroEvent from './contrib/microevent';\nimport MicroPlugin from './contrib/microplugin';\nimport { Sifter, iterate } from '@orchidjs/sifter';\nimport { escape_regex } from '@orchidjs/unicode-variants';\nimport { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback, TomItem, TomSettings, TomTemplateNames, TomClearFilter, RecursivePartial } from './types/index';\nimport {highlight, removeHighlight} from './contrib/highlight';\nimport * as constants from './constants';\nimport getSettings from './getSettings';\nimport {\n\thash_key,\n\tget_hash,\n\tescape_html,\n\tdebounce_events,\n\tgetSelection,\n\tpreventDefault,\n\taddEvent,\n\tloadDebounce,\n\tisKeyDown,\n\tgetId,\n\taddSlashes,\n\tappend\n} from './utils';\n\nimport {\n\tgetDom,\n\tisHtmlString,\n\tescapeQuery,\n\ttriggerEvent,\n\tapplyCSS,\n\taddClasses,\n\tremoveClasses,\n\tparentMatch,\n\tgetTail,\n\tisEmptyObject,\n\tnodeIndex,\n\tsetAttr,\n\treplaceNode\n} from './vanilla';\n\nvar instance_i = 0;\n\nexport default class TomSelect extends MicroPlugin(MicroEvent){\n\n\tpublic control_input\t\t\t: HTMLInputElement;\n\tpublic wrapper\t\t\t\t\t: HTMLElement;\n\tpublic dropdown\t\t\t\t\t: HTMLElement;\n\tpublic control\t\t\t\t\t: HTMLElement;\n\tpublic dropdown_content\t\t\t: HTMLElement;\n\tpublic focus_node\t\t\t\t: HTMLElement;\n\n\tpublic order\t\t\t\t\t: number = 0;\n\tpublic settings\t\t\t\t\t: TomSettings;\n\tpublic input\t\t\t\t\t: TomInput;\n\tpublic tabIndex\t\t\t\t\t: number;\n\tpublic is_select_tag\t\t\t: boolean;\n\tpublic rtl\t\t\t\t\t\t: boolean;\n\tprivate inputId\t\t\t\t\t: string;\n\n\tprivate _destroy\t\t\t\t!: () => void;\n\tpublic sifter\t\t\t\t\t: Sifter;\n\n\n\tpublic isOpen\t\t\t\t\t: boolean = false;\n\tpublic isDisabled\t\t\t\t: boolean = false;\n\tpublic isRequired\t\t\t\t: boolean;\n\tpublic isInvalid\t\t\t\t: boolean = false; // @deprecated 1.8\n\tpublic isValid\t\t\t\t\t: boolean = true;\n\tpublic isLocked\t\t\t\t\t: boolean = false;\n\tpublic isFocused\t\t\t\t: boolean = false;\n\tpublic isInputHidden\t\t\t: boolean = false;\n\tpublic isSetup\t\t\t\t\t: boolean = false;\n\tpublic ignoreFocus\t\t\t\t: boolean = false;\n\tpublic ignoreHover\t\t\t\t: boolean = false;\n\tpublic hasOptions\t\t\t\t: boolean = false;\n\tpublic currentResults\t\t\t?: ReturnType<Sifter['search']>;\n\tpublic lastValue\t\t\t\t: string = '';\n\tpublic caretPos\t\t\t\t\t: number = 0;\n\tpublic loading\t\t\t\t\t: number = 0;\n\tpublic loadedSearches\t\t\t: { [key: string]: boolean } = {};\n\n\tpublic activeOption\t\t\t\t: null|HTMLElement = null;\n\tpublic activeItems\t\t\t\t: TomItem[] = [];\n\n\tpublic optgroups\t\t\t\t: TomOptions = {};\n\tpublic options\t\t\t\t\t: TomOptions = {};\n\tpublic userOptions\t\t\t\t: {[key:string]:boolean} = {};\n\tpublic items\t\t\t\t\t: string[] = [];\n\n\n\n\tconstructor( input_arg: string|TomInput, user_settings:RecursivePartial<TomSettings> ){\n\t\tsuper();\n\n\t\tinstance_i++;\n\n\t\tvar dir;\n\t\tvar input\t\t\t\t= getDom( input_arg ) as TomInput;\n\n\t\tif( input.tomselect ){\n\t\t\tthrow new Error('Tom Select already initialized on this element');\n\t\t}\n\n\n\t\tinput.tomselect\t\t\t= this;\n\n\n\t\t// detect rtl environment\n\t\tvar computedStyle\t\t= window.getComputedStyle && window.getComputedStyle(input, null);\n\t\tdir\t\t\t\t\t\t= computedStyle.getPropertyValue('direction');\n\n\t\t// setup default state\n\t\tconst settings\t\t\t= getSettings( input, user_settings );\n\t\tthis.settings\t\t\t= settings;\n\t\tthis.input\t\t\t\t= input;\n\t\tthis.tabIndex\t\t\t= input.tabIndex || 0;\n\t\tthis.is_select_tag\t\t= input.tagName.toLowerCase() === 'select';\n\t\tthis.rtl\t\t\t\t= /rtl/i.test(dir);\n\t\tthis.inputId\t\t\t= getId(input, 'tomselect-'+instance_i);\n\t\tthis.isRequired\t\t\t= input.required;\n\n\n\t\t// search system\n\t\tthis.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\n\n\t\t// option-dependent defaults\n\t\tsettings.mode = settings.mode || (settings.maxItems === 1 ? 'single' : 'multi');\n\t\tif (typeof settings.hideSelected !== 'boolean') {\n\t\t\tsettings.hideSelected = settings.mode === 'multi';\n\t\t}\n\n\t\tif( typeof settings.hidePlaceholder !== 'boolean' ){\n\t\t\tsettings.hidePlaceholder = settings.mode !== 'multi';\n\t\t}\n\n\t\t// set up createFilter callback\n\t\tvar filter = settings.createFilter;\n\t\tif( typeof filter !== 'function' ){\n\n\t\t\tif( typeof filter === 'string' ){\n\t\t\t\tfilter = new RegExp(filter);\n\t\t\t}\n\n\t\t\tif( filter instanceof RegExp ){\n\t\t\t\tsettings.createFilter = (input) => (filter as RegExp).test(input);\n\t\t\t}else{\n\t\t\t\tsettings.createFilter = (value) => {\n\t\t\t\t\treturn this.settings.duplicates || !this.options[value];\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\n\t\tthis.initializePlugins(settings.plugins);\n\t\tthis.setupCallbacks();\n\t\tthis.setupTemplates();\n\n\n\t\t// Create all elements\n\t\tconst wrapper\t\t\t= getDom('<div>');\n\t\tconst control\t\t\t= getDom('<div>');\n\t\tconst dropdown\t\t\t= this._render('dropdown');\n\t\tconst dropdown_content\t= getDom(`<div role=\"listbox\" tabindex=\"-1\">`);\n\n\t\tconst classes\t\t\t= this.input.getAttribute('class') || '';\n\t\tconst inputMode\t\t\t= settings.mode;\n\n\t\tvar control_input: HTMLInputElement;\n\n\n\t\taddClasses( wrapper, settings.wrapperClass, classes, inputMode);\n\n\n\t\taddClasses(control,settings.controlClass);\n\t\tappend( wrapper, control );\n\n\n\t\taddClasses(dropdown, settings.dropdownClass, inputMode);\n\t\tif( settings.copyClassesToDropdown ){\n\t\t\taddClasses( dropdown, classes);\n\t\t}\n\n\n\t\taddClasses(dropdown_content, settings.dropdownContentClass);\n\t\tappend( dropdown, dropdown_content );\n\n\t\tgetDom( settings.dropdownParent || wrapper ).appendChild( dropdown );\n\n\n\t\t// default controlInput\n\t\tif( isHtmlString(settings.controlInput) ){\n\t\t\tcontrol_input\t\t= getDom(settings.controlInput ) as HTMLInputElement;\n\n\t\t\t// set attributes\n\t\t\tvar attrs = ['autocorrect','autocapitalize','autocomplete'];\n\t\t\titerate(attrs,(attr:string) => {\n\t\t\t\tif( input.getAttribute(attr) ){\n\t\t\t\t\tsetAttr(control_input,{[attr]:input.getAttribute(attr)});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcontrol_input.tabIndex = -1;\n\t\t\tcontrol.appendChild( control_input );\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t// dom element\n\t\t}else if( settings.controlInput ){\n\t\t\tcontrol_input\t\t= getDom( settings.controlInput ) as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t}else{\n\t\t\tcontrol_input\t\t= getDom('<input/>') as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control;\n\t\t}\n\n\t\tthis.wrapper\t\t\t= wrapper;\n\t\tthis.dropdown\t\t\t= dropdown;\n\t\tthis.dropdown_content\t= dropdown_content;\n\t\tthis.control \t\t\t= control;\n\t\tthis.control_input\t\t= control_input;\n\n\t\tthis.setup();\n\t}\n\n\t/**\n\t * set up event bindings.\n\t *\n\t */\n\tsetup(){\n\n\t\tconst self = this;\n\t\tconst settings\t\t\t\t= self.settings;\n\t\tconst control_input\t\t\t= self.control_input;\n\t\tconst dropdown\t\t\t\t= self.dropdown;\n\t\tconst dropdown_content\t\t= self.dropdown_content;\n\t\tconst wrapper\t\t\t\t= self.wrapper;\n\t\tconst control\t\t\t\t= self.control;\n\t\tconst input\t\t\t\t\t= self.input;\n\t\tconst focus_node\t\t\t= self.focus_node;\n\t\tconst passive_event\t\t\t= { passive: true };\n\t\tconst listboxId\t\t\t\t= self.inputId +'-ts-dropdown';\n\n\n\t\tsetAttr(dropdown_content,{\n\t\t\tid: listboxId\n\t\t});\n\n\t\tsetAttr(focus_node,{\n\t\t\trole:'combobox',\n\t\t\t'aria-haspopup':'listbox',\n\t\t\t'aria-expanded':'false',\n\t\t\t'aria-controls':listboxId\n\t\t});\n\n\t\tconst control_id\t= getId(focus_node,self.inputId + '-ts-control');\n\t\tconst query\t\t\t= \"label[for='\"+escapeQuery(self.inputId)+\"']\";\n\t\tconst label\t\t\t= document.querySelector(query);\n\t\tconst label_click\t= self.focus.bind(self);\n\t\tif( label ){\n\t\t\taddEvent(label,'click', label_click );\n\t\t\tsetAttr(label,{for:control_id});\n\t\t\tconst label_id = getId(label,self.inputId+'-ts-label');\n\t\t\tsetAttr(focus_node,{'aria-labelledby':label_id});\n\t\t\tsetAttr(dropdown_content,{'aria-labelledby':label_id});\n\t\t}\n\n\t\twrapper.style.width = input.style.width;\n\n\t\tif (self.plugins.names.length) {\n\t\t\tconst classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n\t\t\taddClasses( [wrapper,dropdown], classes_plugins);\n\t\t}\n\n\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag ){\n\t\t\tsetAttr(input,{multiple:'multiple'});\n\t\t}\n\n\t\tif (settings.placeholder) {\n\t\t\tsetAttr(control_input,{placeholder:settings.placeholder});\n\t\t}\n\n\t\t// if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n\t\tif (!settings.splitOn && settings.delimiter) {\n\t\t\tsettings.splitOn = new RegExp('\\\\s*' + escape_regex(settings.delimiter) + '+\\\\s*');\n\t\t}\n\n\t\t// debounce user defined load() if loadThrottle > 0\n\t\t// after initializePlugins() so plugins can create/modify user defined loaders\n\t\tif( settings.load && settings.loadThrottle ){\n\t\t\tsettings.load = loadDebounce(settings.load,settings.loadThrottle)\n\t\t}\n\n\t\tself.control_input.type\t= input.type;\n\n\t\taddEvent(dropdown,'mousemove', () => {\n\t\t\tself.ignoreHover = false;\n\t\t});\n\n\t\taddEvent(dropdown,'mouseenter', (e) => {\n\n\t\t\tvar target_match = parentMatch(e.target as HTMLElement, '[data-selectable]', dropdown);\n\t\t\tif( target_match ) self.onOptionHover( e as MouseEvent, target_match );\n\n\t\t}, {capture:true});\n\n\t\t// clicking on an option should select it\n\t\taddEvent(dropdown,'click',(evt) => {\n\t\t\tconst option = parentMatch(evt.target as HTMLElement, '[data-selectable]');\n\t\t\tif( option ){\n\t\t\t\tself.onOptionSelect( evt as MouseEvent, option );\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\t\t});\n\n\t\taddEvent(control,'click', (evt) => {\n\n\t\t\tvar target_match = parentMatch( evt.target as HTMLElement, '[data-ts-item]', control);\n\t\t\tif( target_match && self.onItemSelect(evt as MouseEvent, target_match as TomItem) ){\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// retain focus (see control_input mousedown)\n\t\t\tif( control_input.value != '' ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.onClick();\n\t\t\tpreventDefault(evt,true);\n\t\t});\n\n\n\t\t// keydown on focus_node for arrow_down/arrow_up\n\t\taddEvent(focus_node,'keydown',\t\t(e) => self.onKeyDown(e as KeyboardEvent) );\n\n\t\t// keypress and input/keyup\n\t\taddEvent(control_input,'keypress',\t(e) => self.onKeyPress(e as KeyboardEvent) );\n\t\taddEvent(control_input,'input',\t\t(e) => self.onInput(e as KeyboardEvent) );\n\t\taddEvent(focus_node,'blur', \t\t(e) => self.onBlur(e as FocusEvent) );\n\t\taddEvent(focus_node,'focus',\t\t(e) => self.onFocus(e as MouseEvent) );\n\t\taddEvent(control_input,'paste',\t\t(e) => self.onPaste(e as MouseEvent) );\n\n\n\t\tconst doc_mousedown = (evt:Event) => {\n\n\t\t\t// blur if target is outside of this instance\n\t\t\t// dropdown is not always inside wrapper\n\t\t\tconst target = evt.composedPath()[0];\n\t\t\tif( !wrapper.contains(target as HTMLElement) && !dropdown.contains(target as HTMLElement) ){\n\t\t\t\tif (self.isFocused) {\n\t\t\t\t\tself.blur();\n\t\t\t\t}\n\t\t\t\tself.inputState();\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\t// retain focus by preventing native handling. if the\n\t\t\t// event target is the input it should not be modified.\n\t\t\t// otherwise, text selection within the input won't work.\n\t\t\t// Fixes bug #212 which is no covered by tests\n\t\t\tif( target == control_input && self.isOpen ){\n\t\t\t\tevt.stopPropagation();\n\n\t\t\t// clicking anywhere in the control should not blur the control_input (which would close the dropdown)\n\t\t\t}else{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\n\t\t};\n\n\t\tconst win_scroll = () => {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown();\n\t\t\t}\n\t\t};\n\n\n\t\taddEvent(document,'mousedown', doc_mousedown);\n\t\taddEvent(window,'scroll', win_scroll, passive_event);\n\t\taddEvent(window,'resize', win_scroll, passive_event);\n\n\t\tthis._destroy = () => {\n\t\t\tdocument.removeEventListener('mousedown',doc_mousedown);\n\t\t\twindow.removeEventListener('scroll',win_scroll);\n\t\t\twindow.removeEventListener('resize',win_scroll);\n\t\t\tif( label ) label.removeEventListener('click',label_click);\n\t\t};\n\n\t\t// store original html and tab index so that they can be\n\t\t// restored when the destroy() method is called.\n\t\tthis.revertSettings = {\n\t\t\tinnerHTML : input.innerHTML,\n\t\t\ttabIndex : input.tabIndex\n\t\t};\n\n\n\t\tinput.tabIndex = -1;\n\t\tinput.insertAdjacentElement('afterend', self.wrapper);\n\n\t\tself.sync(false);\n\t\tsettings.items = [];\n\t\tdelete settings.optgroups;\n\t\tdelete settings.options;\n\n\t\taddEvent(input,'invalid', () => {\n\t\t\tif( self.isValid ){\n\t\t\t\tself.isValid = false;\n\t\t\t\tself.isInvalid = true;\n\t\t\t\tself.refreshState();\n\t\t\t}\n\t\t});\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshItems();\n\t\tself.close(false);\n\t\tself.inputState();\n\t\tself.isSetup = true;\n\n\t\tif( input.disabled ){\n\t\t\tself.disable();\n\t\t}else{\n\t\t\tself.enable(); //sets tabIndex\n\t\t}\n\n\t\tself.on('change', this.onChange);\n\n\t\taddClasses(input,'tomselected','ts-hidden-accessible');\n\t\tself.trigger('initialize');\n\n\t\t// preload options\n\t\tif (settings.preload === true) {\n\t\t\tself.preload();\n\t\t}\n\n\t}\n\n\n\t/**\n\t * Register options and optgroups\n\t *\n\t */\n\tsetupOptions(options:TomOption[] = [], optgroups:TomOption[] = []){\n\n\t\t// build options table\n\t\tthis.addOptions(options);\n\n\n\t\t// build optgroup table\n\t\titerate( optgroups, (optgroup:TomOption) => {\n\t\t\tthis.registerOptionGroup(optgroup);\n\t\t});\n\t}\n\n\t/**\n\t * Sets up default rendering functions.\n\t */\n\tsetupTemplates() {\n\t\tvar self = this;\n\t\tvar field_label = self.settings.labelField;\n\t\tvar field_optgroup = self.settings.optgroupLabelField;\n\n\t\tvar templates = {\n\t\t\t'optgroup': (data:TomOption) => {\n\t\t\t\tlet optgroup = document.createElement('div');\n\t\t\t\toptgroup.className = 'optgroup';\n\t\t\t\toptgroup.appendChild(data.options);\n\t\t\t\treturn optgroup;\n\n\t\t\t},\n\t\t\t'optgroup_header': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n\t\t\t},\n\t\t\t'option': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'item': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'option_create': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>&hellip;</div>';\n\t\t\t},\n\t\t\t'no_results':() => {\n\t\t\t\treturn '<div class=\"no-results\">No results found</div>';\n\t\t\t},\n\t\t\t'loading':() => {\n\t\t\t\treturn '<div class=\"spinner\"></div>';\n\t\t\t},\n\t\t\t'not_loading':() => {},\n\t\t\t'dropdown':() => {\n\t\t\t\treturn '<div></div>';\n\t\t\t}\n\t\t};\n\n\n\t\tself.settings.render = Object.assign({}, templates, self.settings.render);\n\t}\n\n\t/**\n\t * Maps fired events to callbacks provided\n\t * in the settings used when creating the control.\n\t */\n\tsetupCallbacks() {\n\t\tvar key, fn;\n\t\tvar callbacks:{[key:string]:string} = {\n\t\t\t'initialize' : 'onInitialize',\n\t\t\t'change' : 'onChange',\n\t\t\t'item_add' : 'onItemAdd',\n\t\t\t'item_remove' : 'onItemRemove',\n\t\t\t'item_select' : 'onItemSelect',\n\t\t\t'clear' : 'onClear',\n\t\t\t'option_add' : 'onOptionAdd',\n\t\t\t'option_remove' : 'onOptionRemove',\n\t\t\t'option_clear' : 'onOptionClear',\n\t\t\t'optgroup_add' : 'onOptionGroupAdd',\n\t\t\t'optgroup_remove' : 'onOptionGroupRemove',\n\t\t\t'optgroup_clear' : 'onOptionGroupClear',\n\t\t\t'dropdown_open' : 'onDropdownOpen',\n\t\t\t'dropdown_close' : 'onDropdownClose',\n\t\t\t'type' : 'onType',\n\t\t\t'load' : 'onLoad',\n\t\t\t'focus' : 'onFocus',\n\t\t\t'blur' : 'onBlur'\n\t\t};\n\n\t\tfor (key in callbacks) {\n\n\t\t\tfn = this.settings[callbacks[key] as (keyof TomSettings)];\n\t\t\tif (fn) this.on(key, fn);\n\n\t\t}\n\t}\n\n\t/**\n\t * Sync the Tom Select instance with the original input or select\n\t *\n\t */\n\tsync(get_settings:boolean=true):void{\n\t\tconst self\t\t= this;\n\t\tconst settings\t= get_settings ? getSettings( self.input, {delimiter:self.settings.delimiter} as RecursivePartial<TomSettings> ) : self.settings;\n\n\t\tself.setupOptions(settings.options,settings.optgroups);\n\n\t\tself.setValue(settings.items||[],true); // silent prevents recursion\n\n\t\tself.lastQuery = null; // so updated options will be displayed in dropdown\n\t}\n\n\t/**\n\t * Triggered when the main control element\n\t * has a click event.\n\t *\n\t */\n\tonClick():void {\n\t\tvar self = this;\n\n\t\tif( self.activeItems.length > 0 ){\n\t\t\tself.clearActiveItems();\n\t\t\tself.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.isFocused && self.isOpen ){\n\t\t\tself.blur();\n\t\t} else {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated v1.7\n\t *\n\t */\n\tonMouseDown():void {}\n\n\t/**\n\t * Triggered when the value of the control has been changed.\n\t * This should propagate the event to the original DOM\n\t * input / select element.\n\t */\n\tonChange() {\n\t\ttriggerEvent(this.input, 'input');\n\t\ttriggerEvent(this.input, 'change');\n\t}\n\n\t/**\n\t * Triggered on <input> paste.\n\t *\n\t */\n\tonPaste(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isInputHidden || self.isLocked ){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\t// If a regex or string is included, this will split the pasted\n\t\t// input and create Items for each separate value\n\t\tif( !self.settings.splitOn ){\n\t\t\treturn;\n\t\t}\n\n\t\t// Wait for pasted text to be recognized in value\n\t\tsetTimeout(() => {\n\t\t\tvar pastedText = self.inputValue();\n\t\t\tif( !pastedText.match(self.settings.splitOn)){\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar splitInput = pastedText.trim().split(self.settings.splitOn);\n\t\t\titerate( splitInput, (piece:string) => {\n\n\t\t\t\tconst hash = hash_key(piece);\n\t\t\t\tif( hash ){\n\t\t\t\t\tif( this.options[piece] ){\n\t\t\t\t\t\tself.addItem(piece);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tself.createItem(piece);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}, 0);\n\n\t}\n\n\t/**\n\t * Triggered on <input> keypress.\n\t *\n\t */\n\tonKeyPress(e:KeyboardEvent):void {\n\t\tvar self = this;\n\t\tif(self.isLocked){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t\tvar character = String.fromCharCode(e.keyCode || e.which);\n\t\tif (self.settings.create && self.settings.mode === 'multi' && character === self.settings.delimiter) {\n\t\t\tself.createItem();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keydown.\n\t *\n\t */\n\tonKeyDown(e:KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tself.ignoreHover = true;\n\n\t\tif (self.isLocked) {\n\t\t\tif (e.keyCode !== constants.KEY_TAB) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\n\t\t\t// ctrl+A: select all\n\t\t\tcase constants.KEY_A:\n\t\t\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\t\t\tif( self.control_input.value == '' ){\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\tself.selectAll();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// esc: close dropdown\n\t\t\tcase constants.KEY_ESC:\n\t\t\t\tif (self.isOpen) {\n\t\t\t\t\tpreventDefault(e,true);\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\n\t\t\t// down: open dropdown or move selection down\n\t\t\tcase constants.KEY_DOWN:\n\t\t\t\tif (!self.isOpen && self.hasOptions) {\n\t\t\t\t\tself.open();\n\t\t\t\t} else if (self.activeOption) {\n\t\t\t\t\tlet next = self.getAdjacent(self.activeOption, 1);\n\t\t\t\t\tif (next) self.setActiveOption(next);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// up: move selection up\n\t\t\tcase constants.KEY_UP:\n\t\t\t\tif (self.activeOption) {\n\t\t\t\t\tlet prev = self.getAdjacent(self.activeOption, -1);\n\t\t\t\t\tif (prev) self.setActiveOption(prev);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// return: select active option\n\t\t\tcase constants.KEY_RETURN:\n\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// if the option_create=null, the dropdown might be closed\n\t\t\t\t}else if (self.settings.create && self.createItem()) {\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// don't submit form when searching for a value\n\t\t\t\t}else if( document.activeElement == self.control_input && self.isOpen ){\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\n\t\t\t// left: modifiy item selection to the left\n\t\t\tcase constants.KEY_LEFT:\n\t\t\t\tself.advanceSelection(-1, e);\n\t\t\t\treturn;\n\n\t\t\t// right: modifiy item selection to the right\n\t\t\tcase constants.KEY_RIGHT:\n\t\t\t\tself.advanceSelection(1, e);\n\t\t\t\treturn;\n\n\t\t\t// tab: select active option and/or create item\n\t\t\tcase constants.KEY_TAB:\n\n\t\t\t\tif( self.settings.selectOnTab ){\n\t\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\n\t\t\t\t\t\t// prevent default [tab] behaviour of jump to the next field\n\t\t\t\t\t\t// if select isFull, then the dropdown won't be open and [tab] will work normally\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t\tif (self.settings.create && self.createItem()) {\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\n\t\t\t// delete|backspace: delete items\n\t\t\tcase constants.KEY_BACKSPACE:\n\t\t\tcase constants.KEY_DELETE:\n\t\t\t\tself.deleteSelection(e);\n\t\t\t\treturn;\n\t\t}\n\n\t\t// don't enter text in the control_input when active items are selected\n\t\tif( self.isInputHidden && !isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\tpreventDefault(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keyup.\n\t *\n\t */\n\tonInput(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isLocked ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar value = self.inputValue();\n\t\tif (self.lastValue !== value) {\n\t\t\tself.lastValue = value;\n\n\t\t\tif( self.settings.shouldLoad.call(self,value) ){\n\t\t\t\tself.load(value);\n\t\t\t}\n\n\t\t\tself.refreshOptions();\n\t\t\tself.trigger('type', value);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered when the user rolls over\n\t * an option in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionHover( evt:MouseEvent|KeyboardEvent, option:HTMLElement ):void{\n\t\tif( this.ignoreHover ) return;\n\t\tthis.setActiveOption(option, false);\n\t}\n\n\t/**\n\t * Triggered on <input> focus.\n\t *\n\t */\n\tonFocus(e?:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\t\tvar wasFocused = self.isFocused;\n\n\t\tif (self.isDisabled) {\n\t\t\tself.blur();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.ignoreFocus) return;\n\t\tself.isFocused = true;\n\t\tif( self.settings.preload === 'focus' ) self.preload();\n\n\t\tif (!wasFocused) self.trigger('focus');\n\n\t\tif (!self.activeItems.length) {\n\t\t\tself.showInput();\n\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\n\t\t}\n\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Triggered on <input> blur.\n\t *\n\t */\n\tonBlur(e?:FocusEvent):void {\n\n\t\tif( document.hasFocus() === false ) return;\n\n\t\tvar self = this;\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\t\tself.ignoreFocus = false;\n\n\t\tvar deactivate = () => {\n\t\t\tself.close();\n\t\t\tself.setActiveItem();\n\t\t\tself.setCaret(self.items.length);\n\t\t\tself.trigger('blur');\n\t\t};\n\n\t\tif (self.settings.create && self.settings.createOnBlur) {\n\t\t\tself.createItem(null, deactivate);\n\t\t} else {\n\t\t\tdeactivate();\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered when the user clicks on an option\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionSelect( evt:MouseEvent|KeyboardEvent, option:HTMLElement ){\n\t\tvar value, self = this;\n\n\n\t\t// should not be possible to trigger a option under a disabled optgroup\n\t\tif( option.parentElement && option.parentElement.matches('[data-disabled]') ){\n\t\t\treturn;\n\t\t}\n\n\n\t\tif( option.classList.contains('create') ){\n\t\t\tself.createItem(null, () => {\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = option.dataset.value;\n\t\t\tif (typeof value !== 'undefined') {\n\t\t\t\tself.lastQuery = null;\n\t\t\t\tself.addItem(value);\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( !self.settings.hideSelected && evt.type && /click/.test(evt.type) ){\n\t\t\t\t\tself.setActiveOption(option);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return true if the given option can be selected\n\t *\n\t */\n\tcanSelect(option:HTMLElement|null):boolean{\n\n\t\tif( this.isOpen && option && this.dropdown_content.contains(option) ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Triggered when the user clicks on an item\n\t * that has been selected.\n\t *\n\t */\n\tonItemSelect( evt?:MouseEvent, item?:TomItem ):boolean{\n\t\tvar self = this;\n\n\t\tif( !self.isLocked && self.settings.mode === 'multi' ){\n\t\t\tpreventDefault(evt);\n\t\t\tself.setActiveItem(item, evt);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determines whether or not to invoke\n\t * the user-provided option provider / loader\n\t *\n\t * Note, there is a subtle difference between\n\t * this.canLoad() and this.settings.shouldLoad();\n\t *\n\t *\t- settings.shouldLoad() is a user-input validator.\n\t *\tWhen false is returned, the not_loading template\n\t *\twill be added to the dropdown\n\t *\n\t *\t- canLoad() is lower level validator that checks\n\t * \tthe Tom Select instance. There is no inherent user\n\t *\tfeedback when canLoad returns false\n\t *\n\t */\n\tcanLoad(value:string):boolean{\n\n\t\tif( !this.settings.load ) return false;\n\t\tif( this.loadedSearches.hasOwnProperty(value) ) return false;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Invokes the user-provided option provider / loader.\n\t *\n\t */\n\tload(value:string):void {\n\t\tconst self = this;\n\n\t\tif( !self.canLoad(value) ) return;\n\n\t\taddClasses(self.wrapper,self.settings.loadingClass);\n\t\tself.loading++;\n\n\t\tconst callback = self.loadCallback.bind(self);\n\t\tself.settings.load.call(self, value, callback);\n\t}\n\n\t/**\n\t * Invoked by the user-provided option provider\n\t *\n\t */\n\tloadCallback( options:TomOption[], optgroups:TomOption[] ):void{\n\t\tconst self = this;\n\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\tself.lastQuery = null;\n\n\t\tself.clearActiveOption(); // when new results load, focus should be on first option\n\t\tself.setupOptions(options,optgroups);\n\n\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\n\t\tif (!self.loading) {\n\t\t\tremoveClasses(self.wrapper,self.settings.loadingClass);\n\t\t}\n\n\t\tself.trigger('load', options, optgroups);\n\t}\n\n\tpreload():void{\n\t\tvar classList = this.wrapper.classList;\n\t\tif( classList.contains('preloaded') ) return;\n\t\tclassList.add('preloaded');\n\t\tthis.load('');\n\t}\n\n\n\t/**\n\t * Sets the input field of the control to the specified value.\n\t *\n\t */\n\tsetTextboxValue(value:string = '') {\n\t\tvar input = this.control_input;\n\t\tvar changed = input.value !== value;\n\t\tif (changed) {\n\t\t\tinput.value = value;\n\t\t\ttriggerEvent(input,'update');\n\t\t\tthis.lastValue = value;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the value of the control. If multiple items\n\t * can be selected (e.g. <select multiple>), this returns\n\t * an array. If only one item can be selected, this\n\t * returns a string.\n\t *\n\t */\n\tgetValue():string|string[] {\n\n\t\tif( this.is_select_tag && this.input.hasAttribute('multiple')) {\n\t\t\treturn this.items;\n\t\t}\n\n\t\treturn this.items.join(this.settings.delimiter);\n\t}\n\n\t/**\n\t * Resets the selected items to the given value.\n\t *\n\t */\n\tsetValue( value:string|string[], silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change'];\n\n\t\tdebounce_events(this, events,() => {\n\t\t\tthis.clear(silent);\n\t\t\tthis.addItems(value, silent);\n\t\t});\n\t}\n\n\n\t/**\n\t * Resets the number of max items to the given value\n\t *\n\t */\n\tsetMaxItems(value:null|number){\n\t\tif(value === 0) value = null; //reset to unlimited items.\n\t\tthis.settings.maxItems = value;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Sets the selected item.\n\t *\n\t */\n\tsetActiveItem( item?:TomItem, e?:MouseEvent|KeyboardEvent ){\n\t\tvar self = this;\n\t\tvar eventName;\n\t\tvar i, begin, end, swap;\n\t\tvar last;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\t// clear the active selection\n\t\tif( !item ){\n\t\t\tself.clearActiveItems();\n\t\t\tif (self.isFocused) {\n\t\t\t\tself.showInput();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// modify selection\n\t\teventName = e && e.type.toLowerCase();\n\n\t\tif (eventName === 'click' && isKeyDown('shiftKey',e) && self.activeItems.length) {\n\t\t\tlast\t= self.getLastActive();\n\t\t\tbegin\t= Array.prototype.indexOf.call(self.control.children, last);\n\t\t\tend\t\t= Array.prototype.indexOf.call(self.control.children, item);\n\n\t\t\tif (begin > end) {\n\t\t\t\tswap = begin;\n\t\t\t\tbegin = end;\n\t\t\t\tend = swap;\n\t\t\t}\n\t\t\tfor (i = begin; i <= end; i++) {\n\t\t\t\titem = self.control.children[i] as TomItem;\n\t\t\t\tif (self.activeItems.indexOf(item) === -1) {\n\t\t\t\t\tself.setActiveItemClass(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpreventDefault(e);\n\t\t} else if ((eventName === 'click' && isKeyDown(constants.KEY_SHORTCUT,e) ) || (eventName === 'keydown' && isKeyDown('shiftKey',e))) {\n\t\t\tif( item.classList.contains('active') ){\n\t\t\t\tself.removeActiveItem( item );\n\t\t\t} else {\n\t\t\t\tself.setActiveItemClass(item);\n\t\t\t}\n\t\t} else {\n\t\t\tself.clearActiveItems();\n\t\t\tself.setActiveItemClass(item);\n\t\t}\n\n\t\t// ensure control has focus\n\t\tself.hideInput();\n\t\tif (!self.isFocused) {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Set the active and last-active classes\n\t *\n\t */\n\tsetActiveItemClass( item:TomItem ){\n\t\tconst self = this;\n\t\tconst last_active = self.control.querySelector('.last-active');\n\t\tif( last_active ) removeClasses(last_active as HTMLElement,'last-active');\n\n\t\taddClasses(item,'active last-active');\n\t\tself.trigger('item_select', item);\n\t\tif( self.activeItems.indexOf(item) == -1 ){\n\t\t\tself.activeItems.push( item );\n\t\t}\n\t}\n\n\t/**\n\t * Remove active item\n\t *\n\t */\n\tremoveActiveItem( item:TomItem ){\n\t\tvar idx = this.activeItems.indexOf(item);\n\t\tthis.activeItems.splice(idx, 1);\n\t\tremoveClasses(item,'active');\n\t}\n\n\t/**\n\t * Clears all the active items\n\t *\n\t */\n\tclearActiveItems(){\n\t\tremoveClasses(this.activeItems,'active');\n\t\tthis.activeItems = [];\n\t}\n\n\t/**\n\t * Sets the selected item in the dropdown menu\n\t * of available options.\n\t *\n\t */\n\tsetActiveOption( option:null|HTMLElement,scroll:boolean=true ):void{\n\n\t\tif( option === this.activeOption ){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearActiveOption();\n\t\tif( !option ) return;\n\n\t\tthis.activeOption = option;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':option.getAttribute('id')});\n\t\tsetAttr(option,{'aria-selected':'true'});\n\t\taddClasses(option,'active');\n\t\tif( scroll ) this.scrollToOption(option);\n\t}\n\n\t/**\n\t * Sets the dropdown_content scrollTop to display the option\n\t *\n\t */\n\tscrollToOption( option:null|HTMLElement, behavior?:string ):void{\n\n\t\tif( !option ) return;\n\n\t\tconst content\t\t= this.dropdown_content;\n\t\tconst height_menu\t= content.clientHeight;\n\t\tconst scrollTop\t\t= content.scrollTop || 0;\n\t\tconst height_item\t= option.offsetHeight;\n\t\tconst y\t\t\t\t= option.getBoundingClientRect().top - content.getBoundingClientRect().top + scrollTop;\n\n\t\tif (y + height_item > height_menu + scrollTop) {\n\t\t\tthis.scroll(y - height_menu + height_item, behavior);\n\n\t\t} else if (y < scrollTop) {\n\t\t\tthis.scroll(y, behavior);\n\t\t}\n\t}\n\n\t/**\n\t * Scroll the dropdown to the given position\n\t *\n\t */\n\tscroll( scrollTop:number, behavior?:string ):void{\n\t\tconst content = this.dropdown_content;\n\t\tif( behavior ){\n\t\t\tcontent.style.scrollBehavior = behavior;\n\t\t}\n\t\tcontent.scrollTop = scrollTop;\n\t\tcontent.style.scrollBehavior = '';\n\t}\n\n\t/**\n\t * Clears the active option\n\t *\n\t */\n\tclearActiveOption(){\n\t\tif( this.activeOption ){\n\t\t\tremoveClasses(this.activeOption,'active');\n\t\t\tsetAttr(this.activeOption,{'aria-selected':null});\n\t\t}\n\t\tthis.activeOption = null;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':null});\n\t}\n\n\n\t/**\n\t * Selects all items (CTRL + A).\n\t */\n\tselectAll() {\n\t\tconst self = this;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\tconst activeItems = self.controlChildren();\n\n\t\tif( !activeItems.length ) return;\n\n\t\tself.hideInput();\n\t\tself.close();\n\n\t\tself.activeItems = activeItems;\n\t\titerate( activeItems, (item:TomItem) => {\n\t\t\tself.setActiveItemClass(item);\n\t\t});\n\n\t}\n\n\t/**\n\t * Determines if the control_input should be in a hidden or visible state\n\t *\n\t */\n\tinputState(){\n\t\tvar self = this;\n\n\t\tif( !self.control.contains(self.control_input) ) return;\n\n\t\tsetAttr(self.control_input,{placeholder:self.settings.placeholder});\n\n\t\tif( self.activeItems.length > 0 || (!self.isFocused && self.settings.hidePlaceholder && self.items.length > 0) ){\n\t\t\tself.setTextboxValue();\n\t\t\tself.isInputHidden = true;\n\n\t\t}else{\n\n\t\t\tif( self.settings.hidePlaceholder && self.items.length > 0 ){\n\t\t\t\tsetAttr(self.control_input,{placeholder:''});\n\t\t\t}\n\t\t\tself.isInputHidden = false;\n\t\t}\n\n\t\tself.wrapper.classList.toggle('input-hidden', self.isInputHidden );\n\t}\n\n\t/**\n\t * Hides the input element out of view, while\n\t * retaining its focus.\n\t * @deprecated 1.3\n\t */\n\thideInput() {\n\t\tthis.inputState();\n\t}\n\n\t/**\n\t * Restores input visibility.\n\t * @deprecated 1.3\n\t */\n\tshowInput() {\n\t\tthis.inputState();\n\t}\n\n\t/**\n\t * Get the input value\n\t */\n\tinputValue(){\n\t\treturn this.control_input.value.trim();\n\t}\n\n\t/**\n\t * Gives the control focus.\n\t */\n\tfocus() {\n\t\tvar self = this;\n\t\tif (self.isDisabled) return;\n\n\t\tself.ignoreFocus = true;\n\n\t\tif( self.control_input.offsetWidth ){\n\t\t\tself.control_input.focus();\n\t\t}else{\n\t\t\tself.focus_node.focus();\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tself.ignoreFocus = false;\n\t\t\tself.onFocus();\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Forces the control out of focus.\n\t *\n\t */\n\tblur():void {\n\t\tthis.focus_node.blur();\n\t\tthis.onBlur();\n\t}\n\n\t/**\n\t * Returns a function that scores an object\n\t * to show how good of a match it is to the\n\t * provided query.\n\t *\n\t * @return {function}\n\t */\n\tgetScoreFunction(query:string) {\n\t\treturn this.sifter.getScoreFunction(query, this.getSearchOptions());\n\t}\n\n\t/**\n\t * Returns search options for sifter (the system\n\t * for scoring and sorting results).\n\t *\n\t * @see https://github.com/orchidjs/sifter.js\n\t * @return {object}\n\t */\n\tgetSearchOptions() {\n\t\tvar settings = this.settings;\n\t\tvar sort = settings.sortField;\n\t\tif (typeof settings.sortField === 'string') {\n\t\t\tsort = [{field: settings.sortField}];\n\t\t}\n\n\t\treturn {\n\t\t\tfields : settings.searchField,\n\t\t\tconjunction : settings.searchConjunction,\n\t\t\tsort : sort,\n\t\t\tnesting : settings.nesting\n\t\t};\n\t}\n\n\t/**\n\t * Searches through available options and returns\n\t * a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string) : ReturnType<Sifter['search']>{\n\t\tvar result, calculateScore;\n\t\tvar self = this;\n\t\tvar options = this.getSearchOptions();\n\n\t\t// validate user-provided result scoring function\n\t\tif ( self.settings.score ){\n\t\t\tcalculateScore = self.settings.score.call(self,query);\n\t\t\tif (typeof calculateScore !== 'function') {\n\t\t\t\tthrow new Error('Tom Select \"score\" setting must be a function that returns a function');\n\t\t\t}\n\t\t}\n\n\t\t// perform search\n\t\tif (query !== self.lastQuery) {\n\t\t\tself.lastQuery\t\t\t= query;\n\t\t\tresult\t\t\t\t\t= self.sifter.search(query, Object.assign(options, {score: calculateScore}));\n\t\t\tself.currentResults\t\t= result;\n\t\t} else {\n\t\t\tresult\t\t\t\t\t= Object.assign( {}, self.currentResults);\n\t\t}\n\n\t\t// filter out selected items\n\t\tif( self.settings.hideSelected ){\n\t\t\tresult.items = result.items.filter((item) => {\n\t\t\t\tlet hashed = hash_key(item.id);\n\t\t\t\treturn !(hashed && self.items.indexOf(hashed) !== -1 );\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Refreshes the list of available options shown\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\trefreshOptions( triggerDropdown:boolean = true ){\n\t\tvar i, j, k, n, optgroup, optgroups, html:DocumentFragment, has_create_option, active_group;\n\t\tvar create;\n\t\tconst groups: {[key:string]:DocumentFragment} = {};\n\n\t\tconst groups_order:string[]\t= [];\n\t\tvar self\t\t\t\t\t= this;\n\t\tvar query\t\t\t\t\t= self.inputValue();\n\t\tconst same_query\t\t\t= query === self.lastQuery || (query == '' && self.lastQuery == null);\n\t\tvar results\t\t\t\t\t= self.search(query);\n\t\tvar active_option\t\t\t= null;\n\t\tvar show_dropdown\t\t\t= self.settings.shouldOpen || false;\n\t\tvar dropdown_content\t\t= self.dropdown_content;\n\n\n\t\tif( same_query ){\n\t\t\tactive_option\t\t\t= self.activeOption;\n\n\t\t\tif( active_option ){\n\t\t\t\tactive_group = active_option.closest('[data-group]') as HTMLElement;\n\t\t\t}\n\t\t}\n\n\t\t// build markup\n\t\tn = results.items.length;\n\t\tif (typeof self.settings.maxOptions === 'number') {\n\t\t\tn = Math.min(n, self.settings.maxOptions);\n\t\t}\n\n\t\tif( n > 0 ){\n\t\t\tshow_dropdown = true;\n\t\t}\n\n\t\t// render and group available options individually\n\t\tfor (i = 0; i < n; i++) {\n\n\t\t\t// get option dom element\n\t\t\tlet item\t\t\t= results.items[i];\n\t\t\tif( !item ) continue;\n\n\t\t\tlet opt_value\t\t= item.id;\n\t\t\tlet option\t\t\t= self.options[opt_value];\n\n\t\t\tif( option === undefined ) continue;\n\n\t\t\tlet opt_hash\t\t= get_hash(opt_value);\n\t\t\tlet option_el\t\t= self.getOption(opt_hash,true) as HTMLElement;\n\n\t\t\t// toggle 'selected' class\n\t\t\tif( !self.settings.hideSelected ){\n\t\t\t\toption_el.classList.toggle('selected', self.items.includes(opt_hash) );\n\t\t\t}\n\n\t\t\toptgroup = option[self.settings.optgroupField] || '';\n\t\t\toptgroups = Array.isArray(optgroup) ? optgroup : [optgroup];\n\n\t\t\tfor (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n\t\t\t\toptgroup = optgroups[j];\n\t\t\t\tif (!self.optgroups.hasOwnProperty(optgroup)) {\n\t\t\t\t\toptgroup = '';\n\t\t\t\t}\n\n\t\t\t\tlet group_fragment = groups[optgroup];\n\t\t\t\tif( group_fragment === undefined ){\n\t\t\t\t\tgroup_fragment = document.createDocumentFragment();\n\t\t\t\t\tgroups_order.push(optgroup);\n\t\t\t\t}\n\n\t\t\t\t// nodes can only have one parent, so if the option is in mutple groups, we need a clone\n\t\t\t\tif( j > 0 ){\n\t\t\t\t\toption_el = option_el.cloneNode(true) as HTMLElement;\n\t\t\t\t\tsetAttr(option_el,{id: option.$id+'-clone-'+j,'aria-selected':null});\n\t\t\t\t\toption_el.classList.add('ts-cloned');\n\t\t\t\t\tremoveClasses(option_el,'active');\n\n\n\t\t\t\t\t// make sure we keep the activeOption in the same group\n\t\t\t\t\tif( self.activeOption && self.activeOption.dataset.value == opt_value ){\n\t\t\t\t\t\tif( active_group && active_group.dataset.group === optgroup.toString() ){\n\t\t\t\t\t\t\tactive_option = option_el;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tgroup_fragment.appendChild(option_el);\n\t\t\t\tgroups[optgroup] = group_fragment;\n\t\t\t}\n\t\t}\n\n\t\t// sort optgroups\n\t\tif( self.settings.lockOptgroupOrder ){\n\t\t\tgroups_order.sort((a, b) => {\n\t\t\t\tconst grp_a\t\t= self.optgroups[a];\n\t\t\t\tconst grp_b\t\t= self.optgroups[b];\n\t\t\t\tconst a_order\t= grp_a && grp_a.$order || 0;\n\t\t\t\tconst b_order\t= grp_b && grp_b.$order || 0;\n\t\t\t\treturn a_order - b_order;\n\t\t\t});\n\t\t}\n\n\t\t// render optgroup headers & join groups\n\t\thtml = document.createDocumentFragment();\n\t\titerate( groups_order, (optgroup:string) => {\n\n\t\t\tlet group_fragment = groups[optgroup];\n\n\t\t\tif( !group_fragment || !group_fragment.children.length ) return;\n\n\t\t\tlet group_heading = self.optgroups[optgroup];\n\n\t\t\tif( group_heading !== undefined ){\n\n\t\t\t\tlet group_options = document.createDocumentFragment();\n\t\t\t\tlet header = self.render('optgroup_header', group_heading);\n\t\t\t\tappend( group_options, header );\n\t\t\t\tappend( group_options, group_fragment );\n\n\t\t\t\tlet group_html = self.render('optgroup', {group:group_heading,options:group_options} );\n\n\t\t\t\tappend( html, group_html );\n\n\t\t\t} else {\n\t\t\t\tappend( html, group_fragment );\n\t\t\t}\n\t\t});\n\n\t\tdropdown_content.innerHTML = '';\n\t\tappend( dropdown_content, html );\n\n\t\t// highlight matching terms inline\n\t\tif (self.settings.highlight) {\n\t\t\tremoveHighlight( dropdown_content );\n\t\t\tif (results.query.length && results.tokens.length) {\n\t\t\t\titerate( results.tokens, (tok) => {\n\t\t\t\t\thighlight( dropdown_content, tok.regex);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// helper method for adding templates to dropdown\n\t\tvar add_template = (template:TomTemplateNames) => {\n\t\t\tlet content = self.render(template,{input:query});\n\t\t\tif( content ){\n\t\t\t\tshow_dropdown = true;\n\t\t\t\tdropdown_content.insertBefore(content, dropdown_content.firstChild);\n\t\t\t}\n\t\t\treturn content;\n\t\t};\n\n\n\t\t// add loading message\n\t\tif( self.loading ){\n\t\t\tadd_template('loading');\n\n\t\t// invalid query\n\t\t}else if( !self.settings.shouldLoad.call(self,query) ){\n\t\t\tadd_template('not_loading');\n\n\t\t// add no_results message\n\t\t}else if( results.items.length === 0 ){\n\t\t\tadd_template('no_results');\n\n\t\t}\n\n\n\n\t\t// add create option\n\t\thas_create_option = self.canCreate(query);\n\t\tif (has_create_option) {\n\t\t\tcreate = add_template('option_create');\n\t\t}\n\n\n\t\t// activate\n\t\tself.hasOptions = results.items.length > 0 || has_create_option;\n\t\tif( show_dropdown ){\n\n\t\t\tif (results.items.length > 0) {\n\n\t\t\t\tif( !active_option && self.settings.mode === 'single' && self.items[0] != undefined ){\n\t\t\t\t\tactive_option = self.getOption(self.items[0]);\n\t\t\t\t}\n\n\t\t\t\tif( !dropdown_content.contains(active_option) ){\n\n\t\t\t\t\tlet active_index = 0;\n\t\t\t\t\tif( create && !self.settings.addPrecedence ){\n\t\t\t\t\t\tactive_index = 1;\n\t\t\t\t\t}\n\t\t\t\t\tactive_option = self.selectable()[active_index] as HTMLElement;\n\t\t\t\t}\n\n\t\t\t}else if( create ){\n\t\t\t\tactive_option = create;\n\t\t\t}\n\n\t\t\tif( triggerDropdown && !self.isOpen ){\n\t\t\t\tself.open();\n\t\t\t\tself.scrollToOption(active_option,'auto');\n\t\t\t}\n\t\t\tself.setActiveOption(active_option);\n\n\t\t}else{\n\t\t\tself.clearActiveOption();\n\t\t\tif( triggerDropdown && self.isOpen ){\n\t\t\t\tself.close(false); // if create_option=null, we want the dropdown to close but not reset the textbox value\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return list of selectable options\n\t *\n\t */\n\tselectable():NodeList{\n\t\treturn this.dropdown_content.querySelectorAll('[data-selectable]');\n\t}\n\n\n\n\t/**\n\t * Adds an available option. If it already exists,\n\t * nothing will happen. Note: this does not refresh\n\t * the options list dropdown (use `refreshOptions`\n\t * for that).\n\t *\n\t * Usage:\n\t *\n\t * this.addOption(data)\n\t *\n\t */\n\taddOption( data:TomOption, user_created = false ):false|string {\n\t\tconst self = this;\n\n\t\t// @deprecated 1.7.7\n\t\t// use addOptions( array, user_created ) for adding multiple options\n\t\tif( Array.isArray(data) ){\n\t\t\tself.addOptions( data, user_created);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst key = hash_key(data[self.settings.valueField]);\n\t\tif( key === null || self.options.hasOwnProperty(key) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tdata.$order\t\t\t= data.$order || ++self.order;\n\t\tdata.$id\t\t\t= self.inputId + '-opt-' + data.$order;\n\t\tself.options[key]\t= data;\n\t\tself.lastQuery\t\t= null;\n\n\t\tif( user_created ){\n\t\t\tself.userOptions[key] = user_created;\n\t\t\tself.trigger('option_add', key, data);\n\t\t}\n\n\t\treturn key;\n\t}\n\n\t/**\n\t * Add multiple options\n\t *\n\t */\n\taddOptions( data:TomOption[], user_created = false ):void{\n\t\titerate( data, (dat:TomOption) => {\n\t\t\tthis.addOption(dat, user_created);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 1.7.7\n\t */\n\tregisterOption( data:TomOption ):false|string {\n\t\treturn this.addOption(data);\n\t}\n\n\t/**\n\t * Registers an option group to the pool of option groups.\n\t *\n\t * @return {boolean|string}\n\t */\n\tregisterOptionGroup(data:TomOption) {\n\t\tvar key = hash_key(data[this.settings.optgroupValueField]);\n\n\t\tif ( key === null ) return false;\n\n\t\tdata.$order = data.$order || ++this.order;\n\t\tthis.optgroups[key] = data;\n\t\treturn key;\n\t}\n\n\t/**\n\t * Registers a new optgroup for options\n\t * to be bucketed into.\n\t *\n\t */\n\taddOptionGroup(id:string, data:TomOption) {\n\t\tvar hashed_id;\n\t\tdata[this.settings.optgroupValueField] = id;\n\n\t\tif( hashed_id = this.registerOptionGroup(data) ){\n\t\t\tthis.trigger('optgroup_add', hashed_id, data);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an existing option group.\n\t *\n\t */\n\tremoveOptionGroup(id:string) {\n\t\tif (this.optgroups.hasOwnProperty(id)) {\n\t\t\tdelete this.optgroups[id];\n\t\t\tthis.clearCache();\n\t\t\tthis.trigger('optgroup_remove', id);\n\t\t}\n\t}\n\n\t/**\n\t * Clears all existing option groups.\n\t */\n\tclearOptionGroups() {\n\t\tthis.optgroups = {};\n\t\tthis.clearCache();\n\t\tthis.trigger('optgroup_clear');\n\t}\n\n\t/**\n\t * Updates an option available for selection. If\n\t * it is visible in the selected items or options\n\t * dropdown, it will be re-rendered automatically.\n\t *\n\t */\n\tupdateOption(value:string, data:TomOption) {\n\t\tconst self = this;\n\t\tvar item_new;\n\t\tvar index_item;\n\n\t\tconst value_old\t\t= hash_key(value);\n\t\tconst value_new\t\t= hash_key(data[self.settings.valueField]);\n\n\t\t// sanity checks\n\t\tif( value_old === null ) return;\n\n\t\tconst data_old\t\t= self.options[value_old];\n\n\t\tif( data_old == undefined ) return;\n\t\tif( typeof value_new !== 'string' ) throw new Error('Value must be set in option data');\n\n\n\t\tconst option\t\t= self.getOption(value_old);\n\t\tconst item\t\t\t= self.getItem(value_old);\n\n\n\t\tdata.$order = data.$order || data_old.$order;\n\t\tdelete self.options[value_old];\n\n\t\t// invalidate render cache\n\t\t// don't remove existing node yet, we'll remove it after replacing it\n\t\tself.uncacheValue(value_new);\n\n\t\tself.options[value_new] = data;\n\n\t\t// update the option if it's in the dropdown\n\t\tif( option ){\n\t\t\tif( self.dropdown_content.contains(option) ){\n\n\t\t\t\tconst option_new\t= self._render('option', data);\n\t\t\t\treplaceNode(option, option_new);\n\n\t\t\t\tif( self.activeOption === option ){\n\t\t\t\t\tself.setActiveOption(option_new);\n\t\t\t\t}\n\t\t\t}\n\t\t\toption.remove();\n\t\t}\n\n\t\t// update the item if we have one\n\t\tif( item ){\n\t\t\tindex_item = self.items.indexOf(value_old);\n\t\t\tif (index_item !== -1) {\n\t\t\t\tself.items.splice(index_item, 1, value_new);\n\t\t\t}\n\n\t\t\titem_new\t= self._render('item', data);\n\n\t\t\tif( item.classList.contains('active') ) addClasses(item_new,'active');\n\n\t\t\treplaceNode( item, item_new);\n\t\t}\n\n\t\t// invalidate last query because we might have updated the sortField\n\t\tself.lastQuery = null;\n\t}\n\n\t/**\n\t * Removes a single option.\n\t *\n\t */\n\tremoveOption(value:string, silent?:boolean):void {\n\t\tconst self = this;\n\t\tvalue = get_hash(value);\n\n\t\tself.uncacheValue(value);\n\n\t\tdelete self.userOptions[value];\n\t\tdelete self.options[value];\n\t\tself.lastQuery = null;\n\t\tself.trigger('option_remove', value);\n\t\tself.removeItem(value, silent);\n\t}\n\n\t/**\n\t * Clears all options.\n\t */\n\tclearOptions(filter?:TomClearFilter ) {\n\n\t\tconst boundFilter = (filter || this.clearFilter).bind(this);\n\n\t\tthis.loadedSearches\t\t= {};\n\t\tthis.userOptions\t\t= {};\n\t\tthis.clearCache();\n\n\t\tconst selected:TomOptions\t= {};\n\t\titerate(this.options,(option:TomOption,key:string)=>{\n\t\t\tif( boundFilter(option,key as string) ){\n\t\t\t\tselected[key] = option;\n\t\t\t}\n\t\t});\n\n\t\tthis.options = this.sifter.items = selected;\n\t\tthis.lastQuery = null;\n\t\tthis.trigger('option_clear');\n\t}\n\n\t/**\n\t * Used by clearOptions() to decide whether or not an option should be removed\n\t * Return true to keep an option, false to remove\n\t *\n\t */\n\tclearFilter(option:TomOption,value:string){\n\t\tif( this.items.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the dom element of the option\n\t * matching the given value.\n\t *\n\t */\n\tgetOption(value:undefined|null|boolean|string|number, create:boolean=false):null|HTMLElement {\n\n\t\tconst hashed = hash_key(value);\n\t\tif( hashed === null ) return null;\n\n\t\tconst option = this.options[hashed];\n\t\tif( option != undefined ){\n\n\t\t\tif( option.$div ){\n\t\t\t\treturn option.$div;\n\t\t\t}\n\n\t\t\tif( create ){\n\t\t\t\treturn this._render('option', option);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the dom element of the next or previous dom element of the same type\n\t * Note: adjacent options may not be adjacent DOM elements (optgroups)\n\t *\n\t */\n\tgetAdjacent( option:null|HTMLElement, direction:number, type:string = 'option' ) : HTMLElement|null{\n\t\tvar self = this, all;\n\n\t\tif( !option ){\n\t\t\treturn null;\n\t\t}\n\n\t\tif( type == 'item' ){\n\t\t\tall\t\t\t= self.controlChildren();\n\t\t}else{\n\t\t\tall\t\t\t= self.dropdown_content.querySelectorAll('[data-selectable]');\n\t\t}\n\n\t\tfor( let i = 0; i < all.length; i++ ){\n\t\t\tif( all[i] != option ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( direction > 0 ){\n\t\t\t\treturn all[i+1] as HTMLElement;\n\t\t\t}\n\n\t\t\treturn all[i-1] as HTMLElement;\n\t\t}\n\t\treturn null;\n\t}\n\n\n\t/**\n\t * Returns the dom element of the item\n\t * matching the given value.\n\t *\n\t */\n\tgetItem(item:string|TomItem|null):null|TomItem {\n\n\t\tif( typeof item == 'object' ){\n\t\t\treturn item;\n\t\t}\n\n\t\tvar value = hash_key(item);\n\t\treturn value !== null\n\t\t\t? this.control.querySelector(`[data-value=\"${addSlashes(value)}\"]`)\n\t\t\t: null;\n\t}\n\n\t/**\n\t * \"Selects\" multiple items at once. Adds them to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItems( values:string|string[], silent?:boolean ):void{\n\t\tvar self = this;\n\n\t\tvar items = Array.isArray(values) ? values : [values];\n\t\titems = items.filter(x => self.items.indexOf(x) === -1);\n\t\tconst last_item = items[items.length - 1];\n\t\titems.forEach(item => {\n\t\t\tself.isPending = (item !== last_item);\n\t\t\tself.addItem(item, silent);\n\t\t});\n\t}\n\n\t/**\n\t * \"Selects\" an item. Adds it to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItem( value:string, silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change','dropdown_close'];\n\n\t\tdebounce_events(this, events, () => {\n\t\t\tvar item, wasFull;\n\t\t\tconst self = this;\n\t\t \tconst inputMode = self.settings.mode;\n\t\t\tconst hashed = hash_key(value);\n\n\t\t\tif( hashed && self.items.indexOf(hashed) !== -1 ){\n\n\t\t\t\tif( inputMode === 'single' ){\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( inputMode === 'single' || !self.settings.duplicates ){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hashed === null || !self.options.hasOwnProperty(hashed)) return;\n\t\t\tif (inputMode === 'single') self.clear(silent);\n\t\t\tif (inputMode === 'multi' && self.isFull()) return;\n\n\t\t\titem = self._render('item', self.options[hashed]);\n\n\t\t\tif( self.control.contains(item) ){ // duplicates\n\t\t\t\titem = item.cloneNode(true) as HTMLElement;\n\t\t\t}\n\n\t\t\twasFull = self.isFull();\n\t\t\tself.items.splice(self.caretPos, 0, hashed);\n\t\t\tself.insertAtCaret(item);\n\n\t\t\tif (self.isSetup) {\n\n\t\t\t\t// update menu / remove the option (if this is not one item being added as part of series)\n\t\t\t\tif( !self.isPending && self.settings.hideSelected ){\n\t\t\t\t\tlet option = self.getOption(hashed);\n\t\t\t\t\tlet next = self.getAdjacent(option, 1);\n\t\t\t\t\tif( next ){\n\t\t\t\t\t\tself.setActiveOption(next);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// refreshOptions after setActiveOption(),\n\t\t\t\t// otherwise setActiveOption() will be called by refreshOptions() with the wrong value\n\t\t\t\tif( !self.isPending && !self.settings.closeAfterSelect ){\n\t\t\t\t\tself.refreshOptions(self.isFocused && inputMode !== 'single');\n\t\t\t\t}\n\n\t\t\t\t// hide the menu if the maximum number of items have been selected or no options are left\n\t\t\t\tif( self.settings.closeAfterSelect != false && self.isFull() ){\n\t\t\t\t\tself.close();\n\t\t\t\t} else if (!self.isPending) {\n\t\t\t\t\tself.positionDropdown();\n\t\t\t\t}\n\n\t\t\t\tself.trigger('item_add', hashed, item);\n\n\t\t\t\tif (!self.isPending) {\n\t\t\t\t\tself.updateOriginalInput({silent: silent});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.isPending || (!wasFull && self.isFull())) {\n\t\t\t\tself.inputState();\n\t\t\t\tself.refreshState();\n\t\t\t}\n\n\t\t});\n\t}\n\n\t/**\n\t * Removes the selected item matching\n\t * the provided value.\n\t *\n\t */\n\tremoveItem( item:string|TomItem|null=null, silent?:boolean ){\n\t\tconst self\t\t= this;\n\t\titem\t\t\t= self.getItem(item);\n\n\t\tif( !item ) return;\n\n\t\tvar i,idx;\n\t\tconst value\t= item.dataset.value;\n\t\ti = nodeIndex(item);\n\n\t\titem.remove();\n\t\tif( item.classList.contains('active') ){\n\t\t\tidx = self.activeItems.indexOf(item);\n\t\t\tself.activeItems.splice(idx, 1);\n\t\t\tremoveClasses(item,'active');\n\t\t}\n\n\t\tself.items.splice(i, 1);\n\t\tself.lastQuery = null;\n\t\tif (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n\t\t\tself.removeOption(value, silent);\n\t\t}\n\n\t\tif (i < self.caretPos) {\n\t\t\tself.setCaret(self.caretPos - 1);\n\t\t}\n\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.positionDropdown();\n\t\tself.trigger('item_remove', value, item);\n\n\t}\n\n\t/**\n\t * Invokes the `create` method provided in the\n\t * TomSelect options that should provide the data\n\t * for the new item, given the user input.\n\t *\n\t * Once this completes, it will be added\n\t * to the item list.\n\t *\n\t */\n\tcreateItem( input:null|string=null, callback:TomCreateCallback = ()=>{} ):boolean{\n\n\t\t// triggerDropdown parameter @deprecated 2.1.1\n\t\tif( arguments.length === 3 ){\n\t\t\tcallback = arguments[2];\n\t\t}\n\t\tif( typeof callback != 'function' ){\n\t\t\tcallback = () => {};\n\t\t}\n\n\t\tvar self = this;\n\t\tvar caret = self.caretPos;\n\t\tvar output;\n\t\tinput = input || self.inputValue();\n\n\t\tif (!self.canCreate(input)) {\n\t\t\tcallback();\n\t\t\treturn false;\n\t\t}\n\n\t\tself.lock();\n\n\t\tvar created = false;\n\t\tvar create = (data?:boolean|TomOption) => {\n\t\t\tself.unlock();\n\n\t\t\tif (!data || typeof data !== 'object') return callback();\n\t\t\tvar value = hash_key(data[self.settings.valueField]);\n\t\t\tif( typeof value !== 'string' ){\n\t\t\t\treturn callback();\n\t\t\t}\n\n\t\t\tself.setTextboxValue();\n\t\t\tself.addOption(data,true);\n\t\t\tself.setCaret(caret);\n\t\t\tself.addItem(value);\n\t\t\tcallback(data);\n\t\t\tcreated = true;\n\t\t};\n\n\t\tif( typeof self.settings.create === 'function' ){\n\t\t\toutput = self.settings.create.call(this, input, create);\n\t\t}else{\n\t\t\toutput = {\n\t\t\t\t[self.settings.labelField]: input,\n\t\t\t\t[self.settings.valueField]: input,\n\t\t\t};\n\t\t}\n\n\t\tif( !created ){\n\t\t\tcreate(output);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Re-renders the selected item lists.\n\t */\n\trefreshItems() {\n\t\tvar self = this;\n\t\tself.lastQuery = null;\n\n\t\tif (self.isSetup) {\n\t\t\tself.addItems(self.items);\n\t\t}\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Updates all state-dependent attributes\n\t * and CSS classes.\n\t */\n\trefreshState() {\n\t\tconst self = this;\n\n\t\tself.refreshValidityState();\n\n\t\tconst isFull\t= self.isFull();\n\t\tconst isLocked\t= self.isLocked;\n\n\t\tself.wrapper.classList.toggle('rtl',self.rtl);\n\n\n\t\tconst wrap_classList = self.wrapper.classList;\n\n\t\twrap_classList.toggle('focus', self.isFocused)\n\t\twrap_classList.toggle('disabled', self.isDisabled)\n\t\twrap_classList.toggle('required', self.isRequired)\n\t\twrap_classList.toggle('invalid', !self.isValid)\n\t\twrap_classList.toggle('locked', isLocked)\n\t\twrap_classList.toggle('full', isFull)\n\t\twrap_classList.toggle('input-active', self.isFocused && !self.isInputHidden)\n\t\twrap_classList.toggle('dropdown-active', self.isOpen)\n\t\twrap_classList.toggle('has-options', isEmptyObject(self.options) )\n\t\twrap_classList.toggle('has-items', self.items.length > 0);\n\n\t}\n\n\n\t/**\n\t * Update the `required` attribute of both input and control input.\n\t *\n\t * The `required` property needs to be activated on the control input\n\t * for the error to be displayed at the right place. `required` also\n\t * needs to be temporarily deactivated on the input since the input is\n\t * hidden and can't show errors.\n\t */\n\trefreshValidityState() {\n\t\tvar self = this;\n\n\t\tif( !self.input.validity ){\n\t\t\treturn;\n\t\t}\n\n\t\tself.isValid = self.input.validity.valid;\n\t\tself.isInvalid = !self.isValid;\n\t}\n\n\t/**\n\t * Determines whether or not more items can be added\n\t * to the control without exceeding the user-defined maximum.\n\t *\n\t * @returns {boolean}\n\t */\n\tisFull() {\n\t\treturn this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n\t}\n\n\t/**\n\t * Refreshes the original <select> or <input>\n\t * element to reflect the current state.\n\t *\n\t */\n\tupdateOriginalInput( opts:TomArgObject = {} ){\n\t\tconst self = this;\n\t\tvar option, label;\n\n\t\tconst empty_option = self.input.querySelector('option[value=\"\"]') as HTMLOptionElement;\n\n\t\tif( self.is_select_tag ){\n\n\t\t\tconst selected:HTMLOptionElement[]\t\t= [];\n\t\t\tconst has_selected:number\t\t\t\t= self.input.querySelectorAll('option:checked').length;\n\n\t\t\tfunction AddSelected(option_el:HTMLOptionElement|null, value:string, label:string):HTMLOptionElement{\n\n\t\t\t\tif( !option_el ){\n\t\t\t\t\toption_el = getDom('<option value=\"' + escape_html(value) + '\">' + escape_html(label) + '</option>') as HTMLOptionElement;\n\t\t\t\t}\n\n\t\t\t\t// don't move empty option from top of list\n\t\t\t\t// fixes bug in firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1725293\n\t\t\t\tif( option_el != empty_option ){\n\t\t\t\t\tself.input.append(option_el);\n\t\t\t\t}\n\n\t\t\t\tselected.push(option_el);\n\n\t\t\t\t// marking empty option as selected can break validation\n\t\t\t\t// fixes https://github.com/orchidjs/tom-select/issues/303\n\t\t\t\tif( option_el != empty_option || has_selected > 0 ){\n\t\t\t\t\toption_el.selected = true;\n\t\t\t\t}\n\n\t\t\t\treturn option_el;\n\t\t\t}\n\n\t\t\t// unselect all selected options\n\t\t\tself.input.querySelectorAll('option:checked').forEach((option_el:Element) => {\n\t\t\t\t(<HTMLOptionElement>option_el).selected = false;\n\t\t\t});\n\n\n\t\t\t// nothing selected?\n\t\t\tif( self.items.length == 0 && self.settings.mode == 'single' ){\n\n\t\t\t\tAddSelected(empty_option, \"\", \"\");\n\n\t\t\t// order selected <option> tags for values in self.items\n\t\t\t}else{\n\n\t\t\t\tself.items.forEach((value)=>{\n\t\t\t\t\toption\t\t\t= self.options[value]!;\n\t\t\t\t\tlabel\t\t\t= option[self.settings.labelField] || '';\n\n\t\t\t\t\tif( selected.includes(option.$option) ){\n\t\t\t\t\t\tconst reuse_opt = self.input.querySelector(`option[value=\"${addSlashes(value)}\"]:not(:checked)`) as HTMLOptionElement;\n\t\t\t\t\t\tAddSelected(reuse_opt, value, label);\n\t\t\t\t\t}else{\n\t\t\t\t\t\toption.$option\t= AddSelected(option.$option, value, label);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t} else {\n\t\t\tself.input.value = self.getValue() as string;\n\t\t}\n\n\t\tif (self.isSetup) {\n\t\t\tif (!opts.silent) {\n\t\t\t\tself.trigger('change', self.getValue() );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shows the autocomplete dropdown containing\n\t * the available options.\n\t */\n\topen() {\n\t\tvar self = this;\n\n\t\tif (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\n\t\tself.isOpen = true;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'true'});\n\t\tself.refreshState();\n\t\tapplyCSS(self.dropdown,{visibility: 'hidden', display: 'block'});\n\t\tself.positionDropdown();\n\t\tapplyCSS(self.dropdown,{visibility: 'visible', display: 'block'});\n\t\tself.focus();\n\t\tself.trigger('dropdown_open', self.dropdown);\n\t}\n\n\t/**\n\t * Closes the autocomplete dropdown menu.\n\t */\n\tclose(setTextboxValue=true) {\n\t\tvar self = this;\n\t\tvar trigger = self.isOpen;\n\n\t\tif( setTextboxValue ){\n\n\t\t\t// before blur() to prevent form onchange event\n\t\t\tself.setTextboxValue();\n\n\t\t\tif (self.settings.mode === 'single' && self.items.length) {\n\t\t\t\tself.hideInput();\n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'false'});\n\t\tapplyCSS(self.dropdown,{display: 'none'});\n\t\tif( self.settings.hideSelected ){\n\t\t\tself.clearActiveOption();\n\t\t}\n\t\tself.refreshState();\n\n\t\tif (trigger) self.trigger('dropdown_close', self.dropdown);\n\t}\n\n\t/**\n\t * Calculates and applies the appropriate\n\t * position of the dropdown if dropdownParent = 'body'.\n\t * Otherwise, position is determined by css\n\t */\n\tpositionDropdown(){\n\n\t\tif( this.settings.dropdownParent !== 'body' ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar context\t\t\t= this.control;\n\t\tvar rect\t\t\t= context.getBoundingClientRect();\n\t\tvar top\t\t\t\t= context.offsetHeight + rect.top + window.scrollY;\n\t\tvar left\t\t\t= rect.left + window.scrollX;\n\n\n\t\tapplyCSS(this.dropdown,{\n\t\t\twidth : rect.width + 'px',\n\t\t\ttop : top + 'px',\n\t\t\tleft : left + 'px'\n\t\t});\n\n\t}\n\n\t/**\n\t * Resets / clears all selected items\n\t * from the control.\n\t *\n\t */\n\tclear(silent?:boolean) {\n\t\tvar self = this;\n\n\t\tif (!self.items.length) return;\n\n\t\tvar items = self.controlChildren();\n\t\titerate(items,(item:TomItem)=>{\n\t\t\tself.removeItem(item,true);\n\t\t});\n\n\t\tself.showInput();\n\t\tif( !silent ) self.updateOriginalInput();\n\t\tself.trigger('clear');\n\t}\n\n\t/**\n\t * A helper method for inserting an element\n\t * at the current caret position.\n\t *\n\t */\n\tinsertAtCaret(el:HTMLElement) {\n\t\tconst self\t\t= this;\n\t\tconst caret\t\t= self.caretPos;\n\t\tconst target\t= self.control;\n\n\t\ttarget.insertBefore(el, target.children[caret] || null);\n\t\tself.setCaret(caret + 1);\n\t}\n\n\t/**\n\t * Removes the current selected item(s).\n\t *\n\t */\n\tdeleteSelection(e:KeyboardEvent):boolean {\n\t\tvar direction, selection, caret, tail;\n\t\tvar self = this;\n\n\t\tdirection = (e && e.keyCode === constants.KEY_BACKSPACE) ? -1 : 1;\n\t\tselection = getSelection(self.control_input);\n\n\n\t\t// determine items that will be removed\n\t\tconst rm_items:TomItem[]\t= [];\n\n\t\tif (self.activeItems.length) {\n\n\t\t\ttail = getTail(self.activeItems, direction);\n\t\t\tcaret = nodeIndex(tail);\n\n\t\t\tif (direction > 0) { caret++; }\n\n\t\t\titerate(self.activeItems, (item:TomItem) => rm_items.push(item) );\n\n\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n\t\t\tconst items = self.controlChildren();\n\t\t\tlet rm_item;\n\t\t\tif( direction < 0 && selection.start === 0 && selection.length === 0 ){\n\t\t\t\trm_item = items[self.caretPos - 1];\n\n\t\t\t}else if( direction > 0 && selection.start === self.inputValue().length ){\n\t\t\t\trm_item = items[self.caretPos];\n\t\t\t}\n\n\t\t\tif( rm_item !== undefined ){\n\t\t\t\trm_items.push( rm_item );\n\t\t\t}\n\t\t}\n\n\t\tif( !self.shouldDelete(rm_items,e) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tpreventDefault(e,true);\n\n\t\t// perform removal\n\t\tif (typeof caret !== 'undefined') {\n\t\t\tself.setCaret(caret);\n\t\t}\n\n\t\twhile( rm_items.length ){\n\t\t\tself.removeItem(rm_items.pop());\n\t\t}\n\n\t\tself.showInput();\n\t\tself.positionDropdown();\n\t\tself.refreshOptions(false);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return true if the items should be deleted\n\t */\n\tshouldDelete(items:TomItem[],evt:MouseEvent|KeyboardEvent){\n\n\t\tconst values = items.map(item => item.dataset.value);\n\n\t\t// allow the callback to abort\n\t\tif( !values.length || (typeof this.settings.onDelete === 'function' && this.settings.onDelete(values,evt) === false) ){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Selects the previous / next item (depending on the `direction` argument).\n\t *\n\t * > 0 - right\n\t * < 0 - left\n\t *\n\t */\n\tadvanceSelection(direction:number, e?:MouseEvent|KeyboardEvent) {\n\t\tvar last_active, adjacent, self = this;\n\n\t\tif (self.rtl) direction *= -1;\n\t\tif( self.inputValue().length ) return;\n\n\n\t\t// add or remove to active items\n\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) || isKeyDown('shiftKey',e) ){\n\n\t\t\tlast_active\t\t\t= self.getLastActive(direction);\n\t\t\tif( last_active ){\n\n\t\t\t\tif( !last_active.classList.contains('active') ){\n\t\t\t\t\tadjacent\t\t\t= last_active;\n\t\t\t\t}else{\n\t\t\t\t\tadjacent\t\t\t= self.getAdjacent(last_active,direction,'item');\n\t\t\t\t}\n\n\t\t\t// if no active item, get items adjacent to the control input\n\t\t\t}else if( direction > 0 ){\n\t\t\t\tadjacent\t\t\t= self.control_input.nextElementSibling;\n\t\t\t}else{\n\t\t\t\tadjacent\t\t\t= self.control_input.previousElementSibling;\n\t\t\t}\n\n\n\t\t\tif( adjacent ){\n\t\t\t\tif( adjacent.classList.contains('active') ){\n\t\t\t\t\tself.removeActiveItem(last_active);\n\t\t\t\t}\n\t\t\t\tself.setActiveItemClass(adjacent); // mark as last_active !! after removeActiveItem() on last_active\n\t\t\t}\n\n\t\t// move caret to the left or right\n\t\t}else{\n\t\t\tself.moveCaret(direction);\n\t\t}\n\t}\n\n\tmoveCaret(direction:number){}\n\n\t/**\n\t * Get the last active item\n\t *\n\t */\n\tgetLastActive(direction?:number){\n\n\t\tlet last_active = this.control.querySelector('.last-active');\n\t\tif( last_active ){\n\t\t\treturn last_active;\n\t\t}\n\n\n\t\tvar result = this.control.querySelectorAll('.active');\n\t\tif( result ){\n\t\t\treturn getTail(result,direction);\n\t\t}\n\t}\n\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tsetCaret(new_pos:number) {\n\t\tthis.caretPos = this.items.length;\n\t}\n\n\t/**\n\t * Return list of item dom elements\n\t *\n\t */\n\tcontrolChildren():TomItem[]{\n\t\treturn Array.from( this.control.querySelectorAll('[data-ts-item]') ) as TomItem[];\n\t}\n\n\t/**\n\t * Disables user input on the control. Used while\n\t * items are being asynchronously created.\n\t */\n\tlock() {\n\t\tthis.isLocked = true;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Re-enables user input on the control.\n\t */\n\tunlock() {\n\t\tthis.isLocked = false;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Disables user input on the control completely.\n\t * While disabled, it cannot receive focus.\n\t */\n\tdisable() {\n\t\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= true;\n\t\tself.control_input.disabled\t\t= true;\n\t\tself.focus_node.tabIndex\t\t= -1;\n\t\tself.isDisabled\t\t\t\t\t= true;\n\t\tthis.close();\n\t\tself.lock();\n\t}\n\n\t/**\n\t * Enables the control so that it can respond\n\t * to focus and user input.\n\t */\n\tenable() {\n\t\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= false;\n\t\tself.control_input.disabled\t\t= false;\n\t\tself.focus_node.tabIndex\t\t= self.tabIndex;\n\t\tself.isDisabled\t\t\t\t\t= false;\n\t\tself.unlock();\n\t}\n\n\t/**\n\t * Completely destroys the control and\n\t * unbinds all event listeners so that it can\n\t * be garbage collected.\n\t */\n\tdestroy() {\n\t\tvar self = this;\n\t\tvar revertSettings = self.revertSettings;\n\n\t\tself.trigger('destroy');\n\t\tself.off();\n\t\tself.wrapper.remove();\n\t\tself.dropdown.remove();\n\n\t\tself.input.innerHTML = revertSettings.innerHTML;\n\t\tself.input.tabIndex = revertSettings.tabIndex;\n\n\t\tremoveClasses(self.input,'tomselected','ts-hidden-accessible');\n\n\t\tself._destroy();\n\n\t\tdelete self.input.tomselect;\n\t}\n\n\t/**\n\t * A helper method for rendering \"item\" and\n\t * \"option\" templates, given the data.\n\t *\n\t */\n\trender( templateName:TomTemplateNames, data?:any ):null|HTMLElement{\n\t\tvar id, html;\n\t\tconst self = this;\n\n\t\tif( typeof this.settings.render[templateName] !== 'function' ){\n\t\t\treturn null;\n\t\t}\n\n\t\t// render markup\n\t\thtml = self.settings.render[templateName].call(this, data, escape_html);\n\n\t\tif( !html ){\n\t\t\treturn null;\n\t\t}\n\n\t\thtml = getDom( html );\n\n\t\t// add mandatory attributes\n\t\tif (templateName === 'option' || templateName === 'option_create') {\n\n\t\t\tif( data[self.settings.disabledField] ){\n\t\t\t\tsetAttr(html,{'aria-disabled':'true'});\n\t\t\t}else{\n\t\t\t\tsetAttr(html,{'data-selectable': ''});\n\t\t\t}\n\n\t\t}else if (templateName === 'optgroup') {\n\t\t\tid = data.group[self.settings.optgroupValueField];\n\t\t\tsetAttr(html,{'data-group': id});\n\t\t\tif(data.group[self.settings.disabledField]) {\n\t\t\t\tsetAttr(html,{'data-disabled': ''});\n\t\t\t}\n\t\t}\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tconst value\t= get_hash(data[self.settings.valueField]);\n\t\t\tsetAttr(html,{'data-value': value });\n\n\n\t\t\t// make sure we have some classes if a template is overwritten\n\t\t\tif( templateName === 'item' ){\n\t\t\t\taddClasses(html,self.settings.itemClass);\n\t\t\t\tsetAttr(html,{'data-ts-item':''});\n\t\t\t}else{\n\t\t\t\taddClasses(html,self.settings.optionClass);\n\t\t\t\tsetAttr(html,{\n\t\t\t\t\trole:'option',\n\t\t\t\t\tid:data.$id\n\t\t\t\t});\n\n\t\t\t\t// update cache\n\t\t\t\tdata.$div = html;\n\t\t\t\tself.options[value] = data;\n\t\t\t}\n\n\n\t\t}\n\n\t\treturn html;\n\n\t}\n\n\n\t/**\n\t * Type guarded rendering\n\t *\n\t */\n\t_render( templateName:TomTemplateNames, data?:any ):HTMLElement{\n\t\tconst html = this.render(templateName, data);\n\n\t\tif( html == null ){\n\t\t\tthrow 'HTMLElement expected';\n\t\t}\n\t\treturn html;\n\t}\n\n\n\t/**\n\t * Clears the render cache for a template. If\n\t * no template is given, clears all render\n\t * caches.\n\t *\n\t */\n\tclearCache():void{\n\n\t\titerate(this.options, (option:TomOption)=>{\n\t\t\tif( option.$div ){\n\t\t\t\toption.$div.remove();\n\t\t\t\tdelete option.$div;\n\t\t\t}\n\t\t});\n\n\t}\n\n\t/**\n\t * Removes a value from item and option caches\n\t *\n\t */\n\tuncacheValue(value:string){\n\n\t\tconst option_el\t\t\t= this.getOption(value);\n\t\tif( option_el ) option_el.remove();\n\n\t}\n\n\t/**\n\t * Determines whether or not to display the\n\t * create item prompt, given a user input.\n\t *\n\t */\n\tcanCreate( input:string ):boolean {\n\t\treturn this.settings.create && (input.length > 0) && (this.settings.createFilter as TomCreateFilter ).call(this, input);\n\t}\n\n\n\t/**\n\t * Wraps this.`method` so that `new_fn` can be invoked 'before', 'after', or 'instead' of the original method\n\t *\n\t * this.hook('instead','onKeyDown',function( arg1, arg2 ...){\n\t *\n\t * });\n\t */\n\thook( when:string, method:string, new_fn:any ){\n\t\tvar self = this;\n\t\tvar orig_method = self[method];\n\n\n\t\tself[method] = function(){\n\t\t\tvar result, result_new;\n\n\t\t\tif( when === 'after' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\tresult_new = new_fn.apply(self, arguments );\n\n\t\t\tif( when === 'instead' ){\n\t\t\t\treturn result_new;\n\t\t\t}\n\n\t\t\tif( when === 'before' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t}\n\n};\n","/**\n * Plugin: \"change_listener\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { addEvent } from '../../utils';\n\nexport default function(this:TomSelect) {\n\taddEvent(this.input,'change',()=>{\n\t\tthis.sync();\n\t});\n};\n","/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { preventDefault, hash_key } from '../../utils';\nimport { getDom } from '../../vanilla';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_onOptionSelect = self.onOptionSelect;\n\n\tself.settings.hideSelected = false;\n\n\n\t// update the checkbox for an option\n\tvar UpdateCheckbox = function(option:HTMLElement){\n\t\tsetTimeout(()=>{\n\t\t\tvar checkbox = option.querySelector('input');\n\t\t\tif( checkbox instanceof HTMLInputElement ){\n\t\t\t\tif( option.classList.contains('selected') ){\n\t\t\t\t\tcheckbox.checked = true;\n\t\t\t\t}else{\n\t\t\t\t\tcheckbox.checked = false;\n\t\t\t\t}\n\t\t\t}\n\t\t},1);\n\t};\n\n\t// add checkbox to option template\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_option = self.settings.render.option;\n\n\t\tself.settings.render.option = (data, escape_html) => {\n\t\t\tvar rendered = getDom(orig_render_option.call(self, data, escape_html));\n\t\t\tvar checkbox = document.createElement('input');\n\t\t\tcheckbox.addEventListener('click',function(evt){\n\t\t\t\tpreventDefault(evt);\n\t\t\t});\n\n\t\t\tcheckbox.type = 'checkbox';\n\t\t\tconst hashed = hash_key(data[self.settings.valueField]);\n\n\n\t\t\tif( hashed && self.items.indexOf(hashed) > -1 ){\n\t\t\t\tcheckbox.checked = true;\n\t\t\t}\n\n\t\t\trendered.prepend(checkbox);\n\t\t\treturn rendered;\n\t\t};\n\t});\n\n\t// uncheck when item removed\n\tself.on('item_remove',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\toption.classList.remove('selected'); // selected class won't be removed yet\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\t// check when item added\n\tself.on('item_add',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\n\t// remove items when selected option is clicked\n\tself.hook('instead','onOptionSelect',( evt:KeyboardEvent, option:HTMLElement )=>{\n\n\t\tif( option.classList.contains('selected') ){\n\t\t\toption.classList.remove('selected')\n\t\t\tself.removeItem(option.dataset.value);\n\t\t\tself.refreshOptions();\n\t\t\tpreventDefault(evt,true);\n\t\t\treturn;\n }\n\n\t\torig_onOptionSelect.call(self, evt, option);\n\n\t\tUpdateCheckbox(option);\n\t});\n\n};\n","/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { CBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:CBOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\tclassName: 'clear-button',\n\t\ttitle: 'Clear All',\n\t\thtml: (data:CBOptions) => {\n\t\t\treturn `<div class=\"${data.className}\" title=\"${data.title}\">&#10799;</div>`;\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar button = getDom(options.html(options));\n\t\tbutton.addEventListener('click',(evt)=>{\n\n\t\t\tif( self.isDisabled ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.clear();\n\n\t\t\tif( self.settings.mode === 'single' && self.settings.allowEmptyOption ){\n\t\t\t\tself.addItem('');\n\t\t\t}\n\n\t\t\tevt.preventDefault();\n\t\t\tevt.stopPropagation();\n\t\t});\n\t\tself.control.appendChild(button);\n\t});\n\n};\n","/**\n * Plugin: \"drag_drop\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tif (!$.fn.sortable) throw new Error('The \"drag_drop\" plugin requires jQuery UI \"sortable\".');\n\tif (self.settings.mode !== 'multi') return;\n\n\tvar orig_lock\t\t= self.lock;\n\tvar orig_unlock\t\t= self.unlock;\n\n\tself.hook('instead','lock',()=>{\n\t\tvar sortable = $(self.control).data('sortable');\n\t\tif (sortable) sortable.disable();\n\t\treturn orig_lock.call(self);\n\t});\n\n\tself.hook('instead','unlock',()=>{\n\t\tvar sortable = $(self.control).data('sortable');\n\t\tif (sortable) sortable.enable();\n\t\treturn orig_unlock.call(self);\n\t});\n\n\tself.on('initialize',()=>{\n\t\tvar $control = $(self.control).sortable({\n\t\t\titems: '[data-value]',\n\t\t\tforcePlaceholderSize: true,\n\t\t\tdisabled: self.isLocked,\n\t\t\tstart: (e, ui) => {\n\t\t\t\tui.placeholder.css('width', ui.helper.css('width'));\n\t\t\t\t$control.css({overflow: 'visible'});\n\t\t\t},\n\t\t\tstop: ()=>{\n\t\t\t\t$control.css({overflow: 'hidden'});\n\n\t\t\t\tvar values:string[] = [];\n\t\t\t\t$control.children('[data-value]').each(function(this:HTMLElement){\n\t\t\t\t\tif( this.dataset.value ) values.push(this.dataset.value);\n\t\t\t\t});\n\n\t\t\t\tself.setValue(values);\n\t\t\t}\n\t\t});\n\n\t});\n\n};\n","/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { preventDefault } from '../../utils';\nimport { DHOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:DHOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttitle : 'Untitled',\n\t\theaderClass : 'dropdown-header',\n\t\ttitleRowClass : 'dropdown-header-title',\n\t\tlabelClass : 'dropdown-header-label',\n\t\tcloseClass : 'dropdown-header-close',\n\n\t\thtml: (data:DHOptions) => {\n\t\t\treturn (\n\t\t\t\t'<div class=\"' + data.headerClass + '\">' +\n\t\t\t\t\t'<div class=\"' + data.titleRowClass + '\">' +\n\t\t\t\t\t\t'<span class=\"' + data.labelClass + '\">' + data.title + '</span>' +\n\t\t\t\t\t\t'<a class=\"' + data.closeClass + '\">&times;</a>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t'</div>'\n\t\t\t);\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar header = getDom(options.html(options));\n\n\t\tvar close_link = header.querySelector('.'+options.closeClass);\n\t\tif( close_link ){\n\t\t\tclose_link.addEventListener('click',(evt)=>{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\tself.close();\n\t\t\t});\n\t\t}\n\n\t\tself.dropdown.insertBefore(header, self.dropdown.firstChild);\n\t});\n\n};\n","/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { nodeIndex, removeClasses } from '../../vanilla';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tself.hook('instead','setCaret',(new_pos:number) => {\n\n\t\tif( self.settings.mode === 'single' || !self.control.contains(self.control_input) ) {\n\t\t\tnew_pos = self.items.length;\n\t\t} else {\n\t\t\tnew_pos = Math.max(0, Math.min(self.items.length, new_pos));\n\n\t\t\tif( new_pos != self.caretPos && !self.isPending ){\n\n\t\t\t\tself.controlChildren().forEach((child,j) => {\n\t\t\t\t\tif( j < new_pos ){\n\t\t\t\t\t\tself.control_input.insertAdjacentElement('beforebegin', child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.control.appendChild( child );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tself.caretPos = new_pos;\n\t});\n\n\tself.hook('instead','moveCaret',(direction:number) => {\n\n\t\tif( !self.isFocused ) return;\n\n\t\t// move caret before or after selected items\n\t\tconst last_active\t\t= self.getLastActive(direction);\n\t\tif( last_active ){\n\t\t\tconst idx = nodeIndex(last_active);\n\t\t\tself.setCaret(direction > 0 ? idx + 1: idx);\n\t\t\tself.setActiveItem();\n\t\t\tremoveClasses(last_active as HTMLElement,'last-active');\n\n\t\t// move caret left or right of current position\n\t\t}else{\n\t\t\tself.setCaret(self.caretPos + direction);\n\n\t\t}\n\n\t});\n\n};\n","/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { getDom, addClasses } from '../../vanilla';\nimport { addEvent, preventDefault } from '../../utils';\n\n\nexport default function(this:TomSelect) {\n\tconst self = this;\n\n\tself.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown\n\n\tself.hook('before','setup',()=>{\n\t\tself.focus_node\t\t= self.control;\n\n\t\taddClasses( self.control_input, 'dropdown-input');\n\n\t \tconst div = getDom('<div class=\"dropdown-input-wrap\">');\n\t\tdiv.append(self.control_input);\n\t\tself.dropdown.insertBefore(div, self.dropdown.firstChild);\n\n\t\t// set a placeholder in the select control\n\t\tconst placeholder = getDom('<input class=\"items-placeholder\" tabindex=\"-1\" />') as HTMLInputElement;\n\t\tplaceholder.placeholder = self.settings.placeholder ||'';\n\t\tself.control.append(placeholder);\n\n\t});\n\n\n\tself.on('initialize',()=>{\n\n\t\t// set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input\n\t\tself.control_input.addEventListener('keydown',(evt:KeyboardEvent) =>{\n\t\t//addEvent(self.control_input,'keydown' as const,(evt:KeyboardEvent) =>{\n\t\t\tswitch( evt.keyCode ){\n\t\t\t\tcase constants.KEY_ESC:\n\t\t\t\t\tif (self.isOpen) {\n\t\t\t\t\t\tpreventDefault(evt,true);\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\t\t\t\tcase constants.KEY_TAB:\n\t\t\t\t\tself.focus_node.tabIndex = -1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn self.onKeyDown.call(self,evt);\n\t\t});\n\n\t\tself.on('blur',()=>{\n\t\t\tself.focus_node.tabIndex = self.isDisabled ? -1 : self.tabIndex;\n\t\t});\n\n\n\t\t// give the control_input focus when the dropdown is open\n\t\tself.on('dropdown_open',() =>{\n\t\t\tself.control_input.focus();\n\t\t});\n\n\t\t// prevent onBlur from closing when focus is on the control_input\n\t\tconst orig_onBlur = self.onBlur;\n\t\tself.hook('instead','onBlur',(evt?:FocusEvent)=>{\n\t\t\tif( evt && evt.relatedTarget == self.control_input ) return;\n\t\t\treturn orig_onBlur.call(self);\n\t\t});\n\n\t\taddEvent(self.control_input,'blur', () => self.onBlur() );\n\n\t\t// return focus to control to allow further keyboard input\n\t\tself.hook('before','close',() =>{\n\n\t\t\tif( !self.isOpen ) return;\n\t\t\tself.focus_node.focus({preventScroll: true});\n\t\t});\n\n\t});\n\n};\n","/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { addEvent } from '../../utils';\n\nexport default function(this:TomSelect) {\n\tvar self\t\t\t\t\t= this;\n\n\tself.on('initialize',()=>{\n\n\n\t\tvar test_input\t\t\t\t= document.createElement('span');\n\t\tvar control\t\t\t\t\t= self.control_input;\n\t\ttest_input.style.cssText\t= 'position:absolute; top:-99999px; left:-99999px; width:auto; padding:0; white-space:pre; ';\n\n\t\tself.wrapper.appendChild(test_input);\n\n\n\t\tvar transfer_styles\t\t\t= [ 'letterSpacing', 'fontSize', 'fontFamily', 'fontWeight', 'textTransform' ];\n\n\t\tfor( const style_name of transfer_styles ){\n\t\t\t// @ts-ignore TS7015 https://stackoverflow.com/a/50506154/697576\n\t\t\ttest_input.style[style_name] = control.style[style_name];\n\t\t}\n\n\n\t\t/**\n\t\t * Set the control width\n\t\t *\n\t\t */\n\t\tvar resize = ()=>{\n\t\t\ttest_input.textContent\t= control.value;\n\t\t\tcontrol.style.width\t\t= test_input.clientWidth+'px';\n\t\t};\n\n\t\tresize();\n\t\tself.on('update item_add item_remove',resize);\n\t\taddEvent(control,'input', resize );\n\t\taddEvent(control,'keyup', resize );\n\t\taddEvent(control,'blur', resize );\n\t\taddEvent(control,'update', resize );\n\t});\n\n};\n","/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_deleteSelection = self.deleteSelection;\n\n\tthis.hook('instead','deleteSelection',(evt:KeyboardEvent) => {\n\n\t\tif( self.activeItems.length ){\n\t\t\treturn orig_deleteSelection.call(self, evt);\n\t\t}\n\n\t\treturn false;\n\t});\n\n};\n","/**\n * Plugin: \"no_active_items\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tthis.hook('instead','setActiveItem',() => {});\n\tthis.hook('instead','selectAll',() => {});\n};\n","/**\n * Plugin: \"optgroup_columns\" (Tom Select.js)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { parentMatch, nodeIndex } from '../../vanilla';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\tvar orig_keydown = self.onKeyDown;\n\n\tself.hook('instead','onKeyDown',(evt:KeyboardEvent)=>{\n\t\tvar index, option, options, optgroup;\n\n\t\tif( !self.isOpen || !(evt.keyCode === constants.KEY_LEFT || evt.keyCode === constants.KEY_RIGHT)) {\n\t\t\treturn orig_keydown.call(self,evt);\n\t\t}\n\n\t\tself.ignoreHover\t= true;\n\t\toptgroup\t\t\t= parentMatch(self.activeOption,'[data-group]');\n\t\tindex\t\t\t\t= nodeIndex(self.activeOption,'[data-selectable]');\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( evt.keyCode === constants.KEY_LEFT ){\n\t\t\toptgroup = optgroup.previousSibling;\n\t\t} else {\n\t\t\toptgroup = optgroup.nextSibling;\n\t\t}\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\toptions\t\t\t\t= (<HTMLOptGroupElement>optgroup).querySelectorAll('[data-selectable]');\n\t\toption\t\t\t\t= options[ Math.min(options.length - 1, index) ] as HTMLElement;\n\n\t\tif( option ){\n\t\t\tself.setActiveOption(option);\n\t\t}\n\n\t});\n\n};\n","/**\n * Plugin: \"remove_button\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { escape_html, preventDefault, addEvent } from '../../utils';\nimport { TomOption, TomItem } from '../../types/index';\nimport { RBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:RBOptions) {\n\n\tconst options = Object.assign({\n\t\t\tlabel : '&times;',\n\t\t\ttitle : 'Remove',\n\t\t\tclassName : 'remove',\n\t\t\tappend : true\n\t\t}, userOptions);\n\n\n\t//options.className = 'remove-single';\n\tvar self\t\t\t= this;\n\n\t// override the render method to add remove button to each item\n\tif( !options.append ){\n\t\treturn;\n\t}\n\n\tvar html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\n\t\t\tvar item = getDom(orig_render_item.call(self, data, escape)) as TomItem;\n\n\t\t\tvar close_button = getDom(html);\n\t\t\titem.appendChild(close_button);\n\n\t\t\taddEvent(close_button,'mousedown',(evt) => {\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t});\n\n\t\t\taddEvent(close_button,'click',(evt) => {\n\n\t\t\t\t// propagating will trigger the dropdown to show for single mode\n\t\t\t\tpreventDefault(evt,true);\n\n\t\t\t\tif( self.isLocked ) return;\n\t\t\t\tif( !self.shouldDelete([item],evt as MouseEvent) ) return;\n\n\t\t\t\tself.removeItem(item);\n\t\t\t\tself.refreshOptions(false);\n\t\t\t\tself.inputState();\n\t\t\t});\n\n\t\t\treturn item;\n\t\t};\n\n\t});\n\n\n};\n","/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\n\ntype TPluginOptions = {\n\ttext?:(option:TomOption)=>string,\n};\n\nexport default function(this:TomSelect, userOptions:TPluginOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttext: (option:TomOption) => {\n\t\t\treturn option[self.settings.labelField];\n\t\t}\n\t},userOptions);\n\n\tself.on('item_remove',function(value:string){\n\t\tif( !self.isFocused ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.control_input.value.trim() === '' ){\n\t\t\tvar option = self.options[value];\n\t\t\tif( option ){\n\t\t\t\tself.setTextboxValue(options.text.call(self, option));\n\t\t\t}\n\t\t}\n\t});\n\n};\n","/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\nimport { addClasses } from '../../vanilla';\n\nexport default function(this:TomSelect) {\n\tconst self\t\t\t\t\t\t\t= this;\n\tconst orig_canLoad\t\t\t\t\t= self.canLoad;\n\tconst orig_clearActiveOption\t\t= self.clearActiveOption;\n\tconst orig_loadCallback\t\t\t\t= self.loadCallback;\n\n\tvar pagination:{[key:string]:any}\t= {};\n\tvar dropdown_content:HTMLElement;\n\tvar loading_more\t\t\t\t\t= false;\n\tvar load_more_opt:HTMLElement;\n\tvar default_values: string[]\t\t= [];\n\n\tif( !self.settings.shouldLoadMore ){\n\n\t\t// return true if additional results should be loaded\n\t\tself.settings.shouldLoadMore = ():boolean=>{\n\n\t\t\tconst scroll_percent = dropdown_content.clientHeight / (dropdown_content.scrollHeight - dropdown_content.scrollTop);\n\t\t\tif( scroll_percent > 0.9 ){\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif( self.activeOption ){\n\t\t\t\tvar selectable\t= self.selectable();\n\t\t\t\tvar index\t\t= Array.from(selectable).indexOf(self.activeOption);\n\t\t\t\tif( index >= (selectable.length-2) ){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\n\tif( !self.settings.firstUrl ){\n\t\tthrow 'virtual_scroll plugin requires a firstUrl() method';\n\t}\n\n\n\t// in order for virtual scrolling to work,\n\t// options need to be ordered the same way they're returned from the remote data source\n\tself.settings.sortField\t\t\t= [{field:'$order'},{field:'$score'}];\n\n\n\t// can we load more results for given query?\n\tconst canLoadMore = (query:string):boolean => {\n\n\t\tif( typeof self.settings.maxOptions === 'number' && dropdown_content.children.length >= self.settings.maxOptions ){\n\t\t\treturn false;\n\t\t}\n\n\t\tif( (query in pagination) && pagination[query] ){\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tconst clearFilter = (option:TomOption, value:string):boolean => {\n\t\tif( self.items.indexOf(value) >= 0 || default_values.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\n\t// set the next url that will be\n\tself.setNextUrl = (value:string,next_url:any):void => {\n\t\tpagination[value] = next_url;\n\t};\n\n\t// getUrl() to be used in settings.load()\n\tself.getUrl = (query:string):any =>{\n\n\t\tif( query in pagination ){\n\t\t\tconst next_url = pagination[query];\n\t\t\tpagination[query] = false;\n\t\t\treturn next_url;\n\t\t}\n\n\t\t// if the user goes back to a previous query\n\t\t// we need to load the first page again\n\t\tpagination = {};\n\n\t\treturn self.settings.firstUrl.call(self,query);\n\t};\n\n\n\t// don't clear the active option (and cause unwanted dropdown scroll)\n\t// while loading more results\n\tself.hook('instead','clearActiveOption',()=>{\n\n\t\tif( loading_more ){\n\t\t\treturn;\n\t\t}\n\n\t\treturn orig_clearActiveOption.call(self);\n\t});\n\n\t// override the canLoad method\n\tself.hook('instead','canLoad',(query:string)=>{\n\n\t\t// first time the query has been seen\n\t\tif( !(query in pagination) ){\n\t\t\treturn orig_canLoad.call(self,query);\n\t\t}\n\n\t\treturn canLoadMore(query);\n\t});\n\n\n\t// wrap the load\n\tself.hook('instead','loadCallback',( options:TomOption[], optgroups:TomOption[])=>{\n\n\t\tif( !loading_more ){\n\t\t\tself.clearOptions(clearFilter);\n\t\t}else if( load_more_opt ){\n\t\t\tconst first_option = options[0];\n\t\t\tif( first_option !== undefined ){\n\t\t\t\tload_more_opt.dataset.value\t\t= first_option[self.settings.valueField];\n\t\t\t}\n\t\t}\n\n\t\torig_loadCallback.call( self, options, optgroups);\n\n\t\tloading_more = false;\n\t});\n\n\n\t// add templates to dropdown\n\t//\tloading_more if we have another url in the queue\n\t//\tno_more_results if we don't have another url in the queue\n\tself.hook('after','refreshOptions',()=>{\n\n\t\tconst query\t\t= self.lastValue;\n\t\tvar option;\n\n\t\tif( canLoadMore(query) ){\n\n\t\t\toption = self.render('loading_more',{query:query});\n\t\t\tif( option ){\n\t\t\t\toption.setAttribute('data-selectable',''); // so that navigating dropdown with [down] keypresses can navigate to this node\n\t\t\t\tload_more_opt = option;\n\t\t\t}\n\n\t\t}else if( (query in pagination) && !dropdown_content.querySelector('.no-results') ){\n\t\t\toption = self.render('no_more_results',{query:query});\n\t\t}\n\n\t\tif( option ){\n\t\t\taddClasses(option,self.settings.optionClass);\n\t\t\tdropdown_content.append( option );\n\t\t}\n\n\t});\n\n\n\t// add scroll listener and default templates\n\tself.on('initialize',()=>{\n\t\tdefault_values = Object.keys(self.options);\n\t\tdropdown_content = self.dropdown_content;\n\n\t\t// default templates\n\t\tself.settings.render = Object.assign({}, {\n\t\t\tloading_more:() => {\n\t\t\t\treturn `<div class=\"loading-more-results\">Loading more results ... </div>`;\n\t\t\t},\n\t\t\tno_more_results:() =>{\n\t\t\t\treturn `<div class=\"no-more-results\">No more results</div>`;\n\t\t\t}\n\t\t},self.settings.render);\n\n\n\t\t// watch dropdown content scroll position\n\t\tdropdown_content.addEventListener('scroll',()=>{\n\n\t\t\tif( !self.settings.shouldLoadMore.call(self) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// !important: this will get checked again in load() but we still need to check here otherwise loading_more will be set to true\n\t\t\tif( !canLoadMore(self.lastValue) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// don't call load() too much\n\t\t\tif( loading_more ) return;\n\n\n\t\t\tloading_more = true;\n\t\t\tself.load.call(self,self.lastValue);\n\t\t});\n\t});\n\n};\n","import TomSelect from './tom-select';\n\nimport change_listener from './plugins/change_listener/plugin';\nimport checkbox_options from './plugins/checkbox_options/plugin';\nimport clear_button from './plugins/clear_button/plugin';\nimport drag_drop from './plugins/drag_drop/plugin';\nimport dropdown_header from './plugins/dropdown_header/plugin';\nimport caret_position from './plugins/caret_position/plugin';\nimport dropdown_input from './plugins/dropdown_input/plugin';\nimport input_autogrow from './plugins/input_autogrow/plugin';\nimport no_backspace_delete from './plugins/no_backspace_delete/plugin';\nimport no_active_items from './plugins/no_active_items/plugin';\nimport optgroup_columns from './plugins/optgroup_columns/plugin';\nimport remove_button from './plugins/remove_button/plugin';\nimport restore_on_backspace from './plugins/restore_on_backspace/plugin';\nimport virtual_scroll from './plugins/virtual_scroll/plugin';\n\nTomSelect.define('change_listener', change_listener);\nTomSelect.define('checkbox_options', checkbox_options);\nTomSelect.define('clear_button', clear_button);\nTomSelect.define('drag_drop', drag_drop);\nTomSelect.define('dropdown_header', dropdown_header);\nTomSelect.define('caret_position', caret_position);\nTomSelect.define('dropdown_input', dropdown_input);\nTomSelect.define('input_autogrow', input_autogrow);\nTomSelect.define('no_backspace_delete', no_backspace_delete);\nTomSelect.define('no_active_items', no_active_items);\nTomSelect.define('optgroup_columns', optgroup_columns);\nTomSelect.define('remove_button', remove_button);\nTomSelect.define('restore_on_backspace', restore_on_backspace);\nTomSelect.define('virtual_scroll', virtual_scroll);\n\nexport default TomSelect;\n"],"names":["forEvents","events","callback","split","forEach","event","MicroEvent","constructor","_events","on","fct","event_array","push","off","n","arguments","length","undefined","splice","indexOf","trigger","args","self","apply","MicroPlugin","Interface","plugins","names","settings","requested","loaded","define","name","fn","initializePlugins","key","queue","Array","isArray","plugin","options","hasOwnProperty","shift","require","loadPlugin","Error","iterate","object","getDom","query","jquery","HTMLElement","isHtmlString","tpl","document","createElement","innerHTML","trim","content","firstChild","querySelector","arg","escapeQuery","replace","triggerEvent","dom_el","event_name","createEvent","initEvent","dispatchEvent","applyCSS","css","Object","assign","style","addClasses","elmts","classes","norm_classes","classesArray","castAsArray","map","el","cls","classList","add","removeClasses","remove","_classes","concat","filter","Boolean","parentMatch","target","selector","wrapper","contains","matches","parentNode","getTail","list","direction","isEmptyObject","obj","keys","nodeIndex","amongst","nodeName","i","previousElementSibling","setAttr","attrs","val","attr","removeAttribute","setAttribute","replaceNode","existing","replacement","replaceChild","highlight","element","regex","RegExp","highlightText","node","match","data","spannode","className","middlebit","splitText","index","middleclone","cloneNode","appendChild","highlightChildren","nodeType","childNodes","test","tagName","from","highlightRecursive","removeHighlight","elements","querySelectorAll","prototype","call","parent","normalize","KEY_A","KEY_RETURN","KEY_ESC","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_BACKSPACE","KEY_DELETE","KEY_TAB","IS_MAC","navigator","userAgent","KEY_SHORTCUT","optgroups","delimiter","splitOn","persist","diacritics","create","createOnBlur","createFilter","openOnFocus","shouldOpen","maxOptions","maxItems","hideSelected","duplicates","addPrecedence","selectOnTab","preload","allowEmptyOption","loadThrottle","loadingClass","dataAttr","optgroupField","valueField","labelField","disabledField","optgroupLabelField","optgroupValueField","lockOptgroupOrder","sortField","searchField","searchConjunction","mode","wrapperClass","controlClass","dropdownClass","dropdownContentClass","itemClass","optionClass","dropdownParent","controlInput","copyClassesToDropdown","placeholder","hidePlaceholder","shouldLoad","render","hash_key","value","get_hash","escape_html","str","loadDebounce","delay","timeout","loading","Math","max","clearTimeout","setTimeout","loadedSearches","debounce_events","types","type","event_args","getSelection","input","start","selectionStart","selectionEnd","preventDefault","evt","stop","stopPropagation","addEvent","addEventListener","isKeyDown","key_name","count","altKey","ctrlKey","shiftKey","metaKey","getId","id","existing_id","getAttribute","addSlashes","append","getSettings","settings_user","defaults","attr_data","field_label","field_value","field_disabled","field_optgroup","field_optgroup_label","field_optgroup_value","tag_name","toLowerCase","option","textContent","settings_element","items","init_select","optionsMap","group_count","readData","dataset","json","JSON","parse","addOption","group","arr","option_data","disabled","$option","selected","addGroup","optgroup","optgroup_data","children","hasAttribute","child","init_textbox","data_raw","values","opt","instance_i","TomSelect","input_arg","user_settings","control_input","dropdown","control","dropdown_content","focus_node","order","tabIndex","is_select_tag","rtl","inputId","_destroy","sifter","isOpen","isDisabled","isRequired","isInvalid","isValid","isLocked","isFocused","isInputHidden","isSetup","ignoreFocus","ignoreHover","hasOptions","currentResults","lastValue","caretPos","activeOption","activeItems","userOptions","dir","tomselect","computedStyle","window","getComputedStyle","getPropertyValue","required","Sifter","setupCallbacks","setupTemplates","_render","inputMode","setup","passive_event","passive","listboxId","role","control_id","label","label_click","focus","bind","for","label_id","width","classes_plugins","join","multiple","escape_regex","load","e","target_match","onOptionHover","capture","onOptionSelect","onItemSelect","onClick","onKeyDown","onKeyPress","onInput","onBlur","onFocus","onPaste","doc_mousedown","composedPath","blur","inputState","win_scroll","positionDropdown","removeEventListener","revertSettings","insertAdjacentElement","sync","refreshState","updateOriginalInput","refreshItems","close","disable","enable","onChange","setupOptions","addOptions","registerOptionGroup","templates","escape","callbacks","get_settings","setValue","lastQuery","clearActiveItems","onMouseDown","pastedText","inputValue","splitInput","piece","hash","addItem","createItem","character","String","fromCharCode","keyCode","which","constants","selectAll","open","next","getAdjacent","setActiveOption","prev","canSelect","activeElement","advanceSelection","deleteSelection","refreshOptions","wasFocused","showInput","hasFocus","deactivate","setActiveItem","setCaret","parentElement","closeAfterSelect","item","canLoad","loadCallback","clearActiveOption","setTextboxValue","changed","getValue","silent","clear","addItems","setMaxItems","eventName","begin","end","swap","last","getLastActive","setActiveItemClass","removeActiveItem","hideInput","last_active","idx","scroll","scrollToOption","behavior","height_menu","clientHeight","scrollTop","height_item","offsetHeight","y","getBoundingClientRect","top","scrollBehavior","controlChildren","toggle","offsetWidth","getScoreFunction","getSearchOptions","sort","field","fields","conjunction","nesting","search","result","calculateScore","score","hashed","triggerDropdown","j","k","html","has_create_option","active_group","groups","groups_order","same_query","results","active_option","show_dropdown","closest","min","opt_value","opt_hash","option_el","getOption","includes","group_fragment","createDocumentFragment","$id","toString","a","b","grp_a","grp_b","a_order","$order","b_order","group_heading","group_options","header","group_html","tokens","tok","add_template","template","insertBefore","canCreate","active_index","selectable","user_created","dat","registerOption","addOptionGroup","hashed_id","removeOptionGroup","clearCache","clearOptionGroups","updateOption","item_new","index_item","value_old","value_new","data_old","getItem","uncacheValue","option_new","removeOption","removeItem","clearOptions","boundFilter","clearFilter","$div","all","x","last_item","isPending","wasFull","isFull","insertAtCaret","caret","output","lock","created","unlock","refreshValidityState","wrap_classList","validity","valid","opts","empty_option","has_selected","AddSelected","reuse_opt","visibility","display","context","rect","scrollY","left","scrollX","selection","tail","rm_items","rm_item","shouldDelete","pop","onDelete","adjacent","nextElementSibling","moveCaret","new_pos","destroy","templateName","hook","when","method","new_fn","orig_method","result_new","orig_onOptionSelect","UpdateCheckbox","checkbox","HTMLInputElement","checked","orig_render_option","rendered","prepend","title","button","$","sortable","orig_lock","orig_unlock","$control","forcePlaceholderSize","ui","helper","overflow","each","headerClass","titleRowClass","labelClass","closeClass","close_link","div","orig_onBlur","relatedTarget","preventScroll","test_input","cssText","transfer_styles","style_name","resize","clientWidth","orig_deleteSelection","orig_keydown","previousSibling","nextSibling","orig_render_item","close_button","text","orig_canLoad","orig_clearActiveOption","orig_loadCallback","pagination","loading_more","load_more_opt","default_values","shouldLoadMore","scroll_percent","scrollHeight","firstUrl","canLoadMore","setNextUrl","next_url","getUrl","first_option","no_more_results","change_listener","checkbox_options","clear_button","drag_drop","dropdown_header","caret_position","dropdown_input","input_autogrow","no_backspace_delete","no_active_items","optgroup_columns","remove_button","restore_on_backspace","virtual_scroll"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA,SAASA,SAAT,CAAmBC,MAAnB,EAAiCC,QAAjC,EAA8D;AAC7DD,EAAAA,MAAM,CAACE,KAAP,CAAa,KAAb,CAAoBC,CAAAA,OAApB,CAA6BC,KAAD,IAAU;AACrCH,IAAAA,QAAQ,CAACG,KAAD,CAAR,CAAA;AACA,GAFD,CAAA,CAAA;AAGA,CAAA;;AAEc,MAAMC,UAAN,CAAgB;AAI9BC,EAAAA,WAAW,GAAE;AAAA,IAAA,IAAA,CAFNC,OAEM,GAAA,KAAA,CAAA,CAAA;AACZ,IAAKA,IAAAA,CAAAA,OAAL,GAAe,EAAf,CAAA;AACA,GAAA;;AAEDC,EAAAA,EAAE,CAACR,MAAD,EAAgBS,GAAhB,EAA8B;AAC/BV,IAAAA,SAAS,CAACC,MAAD,EAASI,KAAD,IAAW;AAC3B,MAAA,MAAMM,WAAW,GAAG,IAAA,CAAKH,OAAL,CAAaH,KAAb,KAAuB,EAA3C,CAAA;AACAM,MAAAA,WAAW,CAACC,IAAZ,CAAiBF,GAAjB,CAAA,CAAA;AACA,MAAA,IAAA,CAAKF,OAAL,CAAaH,KAAb,CAAA,GAAsBM,WAAtB,CAAA;AACA,KAJQ,CAAT,CAAA;AAKA,GAAA;;AAEDE,EAAAA,GAAG,CAACZ,MAAD,EAAgBS,GAAhB,EAA8B;AAChC,IAAA,IAAII,CAAC,GAAGC,SAAS,CAACC,MAAlB,CAAA;;AACA,IAAIF,IAAAA,CAAC,KAAK,CAAV,EAAa;AACZ,MAAKN,IAAAA,CAAAA,OAAL,GAAe,EAAf,CAAA;AACA,MAAA,OAAA;AACA,KAAA;;AAEDR,IAAAA,SAAS,CAACC,MAAD,EAASI,KAAD,IAAW;AAE3B,MAAIS,IAAAA,CAAC,KAAK,CAAV,EAAY;AACX,QAAA,OAAO,IAAKN,CAAAA,OAAL,CAAaH,KAAb,CAAP,CAAA;AACA,QAAA,OAAA;AACA,OAAA;;AAED,MAAA,MAAMM,WAAW,GAAG,IAAA,CAAKH,OAAL,CAAaH,KAAb,CAApB,CAAA;AACA,MAAIM,IAAAA,WAAW,KAAKM,SAApB,EAAgC,OAAA;AAEhCN,MAAAA,WAAW,CAACO,MAAZ,CAAmBP,WAAW,CAACQ,OAAZ,CAAoBT,GAApB,CAAnB,EAA6C,CAA7C,CAAA,CAAA;AACA,MAAA,IAAA,CAAKF,OAAL,CAAaH,KAAb,CAAA,GAAsBM,WAAtB,CAAA;AACA,KAZQ,CAAT,CAAA;AAaA,GAAA;;AAEDS,EAAAA,OAAO,CAACnB,MAAD,EAAgB,GAAGoB,IAAnB,EAA4B;AAClC,IAAIC,IAAAA,IAAI,GAAG,IAAX,CAAA;AAEAtB,IAAAA,SAAS,CAACC,MAAD,EAASI,KAAD,IAAW;AAC3B,MAAA,MAAMM,WAAW,GAAGW,IAAI,CAACd,OAAL,CAAaH,KAAb,CAApB,CAAA;AACA,MAAIM,IAAAA,WAAW,KAAKM,SAApB,EAAgC,OAAA;AAChCN,MAAAA,WAAW,CAACP,OAAZ,CAAoBM,GAAG,IAAI;AAC1BA,QAAAA,GAAG,CAACa,KAAJ,CAAUD,IAAV,EAAgBD,IAAhB,CAAA,CAAA;AACA,OAFD,CAAA,CAAA;AAIA,KAPQ,CAAT,CAAA;AAQA,GAAA;;AAjD6B;;ACtB/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAmBe,SAASG,WAAT,CAAqBC,SAArB,EAAqC;AAEnDA,EAAAA,SAAS,CAACC,OAAV,GAAoB,EAApB,CAAA;AAEA,EAAO,OAAA,cAAcD,SAAd,CAAuB;AAAA,IAAA,WAAA,CAAA,GAAA,IAAA,EAAA;AAAA,MAAA,KAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,MAAA,IAAA,CAEtBC,OAFsB,GAEH;AACzBC,QAAAA,KAAK,EAAO,EADa;AAEzBC,QAAAA,QAAQ,EAAI,EAFa;AAGzBC,QAAAA,SAAS,EAAG,EAHa;AAIzBC,QAAAA,MAAM,EAAM,EAAA;AAJa,OAFG,CAAA;AAAA,KAAA;;AAS7B;AACF;AACA;AACA;AACA;AACe,IAAA,OAANC,MAAM,CAACC,IAAD,EAAcC,EAAd,EAAoD;AAChER,MAAAA,SAAS,CAACC,OAAV,CAAkBM,IAAlB,CAA0B,GAAA;AACzB,QAAA,MAAA,EAASA,IADgB;AAEzB,QAASC,IAAAA,EAAAA,EAAAA;AAFgB,OAA1B,CAAA;AAIA,KAAA;AAGD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACEC,IAAAA,iBAAiB,CAACR,OAAD,EAA6C;AAC7D,MAAIS,IAAAA,GAAJ,EAASH,IAAT,CAAA;AACA,MAAMV,MAAAA,IAAI,GAAI,IAAd,CAAA;AACA,MAAMc,MAAAA,KAAc,GAAG,EAAvB,CAAA;;AAEA,MAAA,IAAIC,KAAK,CAACC,OAAN,CAAcZ,OAAd,CAAJ,EAA4B;AAC3BA,QAAAA,OAAO,CAACtB,OAAR,CAAiBmC,MAAD,IAA6B;AAC5C,UAAA,IAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC/BH,YAAAA,KAAK,CAACxB,IAAN,CAAW2B,MAAX,CAAA,CAAA;AACA,WAFD,MAEO;AACNjB,YAAAA,IAAI,CAACI,OAAL,CAAaE,QAAb,CAAsBW,MAAM,CAACP,IAA7B,CAAA,GAAqCO,MAAM,CAACC,OAA5C,CAAA;AACAJ,YAAAA,KAAK,CAACxB,IAAN,CAAW2B,MAAM,CAACP,IAAlB,CAAA,CAAA;AACA,WAAA;AACD,SAPD,CAAA,CAAA;AAQA,OATD,MASO,IAAIN,OAAJ,EAAa;AACnB,QAAKS,KAAAA,GAAL,IAAYT,OAAZ,EAAqB;AACpB,UAAA,IAAIA,OAAO,CAACe,cAAR,CAAuBN,GAAvB,CAAJ,EAAiC;AAChCb,YAAAA,IAAI,CAACI,OAAL,CAAaE,QAAb,CAAsBO,GAAtB,CAA6BT,GAAAA,OAAO,CAACS,GAAD,CAApC,CAAA;AACAC,YAAAA,KAAK,CAACxB,IAAN,CAAWuB,GAAX,CAAA,CAAA;AACA,WAAA;AACD,SAAA;AACD,OAAA;;AAED,MAAA,OAAOH,IAAI,GAAGI,KAAK,CAACM,KAAN,EAAd,EAA6B;AAC5BpB,QAAAA,IAAI,CAACqB,OAAL,CAAaX,IAAb,CAAA,CAAA;AACA,OAAA;AACD,KAAA;;AAEDY,IAAAA,UAAU,CAACZ,IAAD,EAAc;AACvB,MAAIV,IAAAA,IAAI,GAAM,IAAd,CAAA;AACA,MAAA,IAAII,OAAO,GAAGJ,IAAI,CAACI,OAAnB,CAAA;AACA,MAAA,IAAIa,MAAM,GAAId,SAAS,CAACC,OAAV,CAAkBM,IAAlB,CAAd,CAAA;;AAEA,MAAI,IAAA,CAACP,SAAS,CAACC,OAAV,CAAkBe,cAAlB,CAAiCT,IAAjC,CAAL,EAA6C;AAC5C,QAAA,MAAM,IAAIa,KAAJ,CAAU,qBAAsBb,IAAtB,GAA6B,UAAvC,CAAN,CAAA;AACA,OAAA;;AAEDN,MAAAA,OAAO,CAACG,SAAR,CAAkBG,IAAlB,IAA0B,IAA1B,CAAA;AACAN,MAAAA,OAAO,CAACI,MAAR,CAAeE,IAAf,IAAuBO,MAAM,CAACN,EAAP,CAAUV,KAAV,CAAgBD,IAAhB,EAAsB,CAACA,IAAI,CAACI,OAAL,CAAaE,QAAb,CAAsBI,IAAtB,CAAA,IAA+B,EAAhC,CAAtB,CAAvB,CAAA;AACAN,MAAAA,OAAO,CAACC,KAAR,CAAcf,IAAd,CAAmBoB,IAAnB,CAAA,CAAA;AACA,KAAA;AAED;AACF;AACA;AACA;;;AACEW,IAAAA,OAAO,CAACX,IAAD,EAAc;AACpB,MAAIV,IAAAA,IAAI,GAAG,IAAX,CAAA;AACA,MAAA,IAAII,OAAO,GAAGJ,IAAI,CAACI,OAAnB,CAAA;;AAEA,MAAI,IAAA,CAACJ,IAAI,CAACI,OAAL,CAAaI,MAAb,CAAoBW,cAApB,CAAmCT,IAAnC,CAAL,EAA+C;AAC9C,QAAA,IAAIN,OAAO,CAACG,SAAR,CAAkBG,IAAlB,CAAJ,EAA6B;AAC5B,UAAA,MAAM,IAAIa,KAAJ,CAAU,sCAAsCb,IAAtC,GAA6C,IAAvD,CAAN,CAAA;AACA,SAAA;;AACDV,QAAAA,IAAI,CAACsB,UAAL,CAAgBZ,IAAhB,CAAA,CAAA;AACA,OAAA;;AAED,MAAA,OAAON,OAAO,CAACI,MAAR,CAAeE,IAAf,CAAP,CAAA;AACA,KAAA;;AA/F4B,GAA9B,CAAA;AAmGA;;ACxID;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,KAAK,IAAI;AAChC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC;AACA,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACjG,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,KAAK,IAAI;AACjC,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC7B,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,eAAe,GAAG,CAAC,CAAC;AAC1B;AACA,EAAE,MAAM,YAAY,GAAG,MAAM;AAC7B,IAAI,IAAI,eAAe,GAAG,CAAC,EAAE;AAC7B,MAAM,OAAO,IAAI,GAAG,GAAG,eAAe,GAAG,GAAG,CAAC;AAC7C,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AAC7B,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/B,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,YAAY,EAAE,CAAC;AACnB,IAAI,OAAO,IAAI,IAAI,CAAC;AACpB,IAAI,eAAe,GAAG,CAAC,CAAC;AACxB,GAAG,CAAC,CAAC;AACL,EAAE,YAAY,EAAE,CAAC;AACjB,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,KAAK,IAAI;AAC9B,EAAE,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7B,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,KAAK,IAAI;AAC/B,EAAE,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC;AAC9C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,GAAG,IAAI;AAC5B,EAAE,OAAO,CAAC,GAAG,GAAG,EAAE,EAAE,OAAO,CAAC,oCAAoC,EAAE,MAAM,CAAC,CAAC;AAC1E,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,KAAK,IAAI;AAChC,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,GAAG,IAAI;AAC7B,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAC7B,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;ACpGlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,KAAK,IAAI;AAC/B,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C;AACA;AACA,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,SAAS,EAAE;AACpC,IAAI,IAAI,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACtC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB,IAAI,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;;ACvBD;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACjC,MAAM,UAAU,GAAG,qCAAqC,CAAC;AACzD;AACA;AACA,IAAI,WAAW,CAAC;AAChB;AACA;AACA,IAAI,cAAc,CAAC;AACnB,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B;AACA;AACA,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB;AACA;AACA,MAAM,eAAe,GAAG;AACxB,EAAE,GAAG,EAAE,IAAI;AACX,EAAE,GAAG,EAAE,GAAG;AACV,EAAE,GAAG,EAAE,KAAK;AACZ,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,IAAI,EAAE,KAAK;AACb,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,IAAI,EAAE,IAAI;AACZ,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,GAAG,EAAE,KAAK;AACZ,EAAE,GAAG,EAAE,MAAM;AACb,EAAE,GAAG,EAAE,UAAU;AACjB,EAAE,GAAG,EAAE,MAAM;AACb,EAAE,GAAG,EAAE,IAAI;AACX,EAAE,GAAG,EAAE,QAAQ;AACf,EAAE,GAAG,EAAE,MAAM;AACb,EAAE,GAAG,EAAE,IAAI;AACX,EAAE,GAAG,EAAE,IAAI;AACX,EAAE,GAAG,EAAE,QAAQ;AACf,EAAE,GAAG,EAAE,UAAU;AACjB,EAAE,GAAG,EAAE,KAAK;AACZ,EAAE,GAAG,EAAE,SAAS;AAChB,EAAE,GAAG,EAAE,SAAS;AAChB,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,GAAG,EAAE,QAAQ;AACf,EAAE,GAAG,EAAE,KAAK;AACZ,EAAE,GAAG,EAAE,OAAO;AACd,EAAE,GAAG,EAAE,OAAO;AACd,EAAE,GAAG,EAAE,OAAO;AACd,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,GAAG,EAAE,GAAG;AACV,EAAE,GAAG,EAAE,KAAK;AACZ,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,GAAG,EAAE,GAAG;AACV,EAAE,GAAG,EAAE,KAAK;AACZ,EAAE,GAAG,EAAE,OAAO;AACd,EAAE,IAAI,EAAE,GAAG;AACX,CAAC,CAAC;AACF;AACA,KAAK,IAAI,KAAK,IAAI,eAAe,EAAE;AACnC,EAAE,IAAI,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAC7C;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAChC,GAAG;AACH,CAAC;AACD;AACA,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,UAAU,EAAE,IAAI,CAAC,CAAC;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,YAAY,IAAI;AACnC,EAAE,IAAI,WAAW,KAAK,SAAS,EAAE,OAAO;AACxC,EAAE,WAAW,GAAG,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC;AACzD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,GAAG,IAAI;AACzB,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM;AAC5B;AACA;AACA;AACA;AACA,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK;AACpB,IAAI,OAAO,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACrC,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,GAAG,IAAI;AAC1B,EAAE,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE;AAC1D;AACA,EAAE,IAAI,KAAK;AACX,IAAI,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACrC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,SAAS,CAAC,WAAW,EAAE;AACjC,EAAE,KAAK,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,IAAI,WAAW,EAAE;AAC9D,IAAI,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,EAAE,EAAE;AAC3D,MAAM,IAAI,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5C,MAAM,IAAI,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AACvC;AACA,MAAM,IAAI,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE;AAC5C,QAAQ,SAAS;AACjB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,eAAe,EAAE;AAC3C,QAAQ,SAAS;AACjB,OAAO;AACP;AACA,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;AAC9B,QAAQ,SAAS;AACjB,OAAO;AACP;AACA,MAAM,MAAM;AACZ,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,QAAQ,UAAU,EAAE,CAAC;AACrB,OAAO,CAAC;AACR,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,WAAW,IAAI;AACpC;AACA,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK;AAC1C;AACA,IAAI,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;AACzD,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AACxE;AACA,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC5B,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AACzC,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC;AACtC,GAAG,CAAC;AACJ;AACA,EAAE,KAAK,IAAI,KAAK,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE;AAC5C,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,WAAW,IAAI;AACnC;AACA,EAAE,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AACjD;AACA;AACA,EAAE,MAAM,WAAW,GAAG,EAAE,CAAC;AACzB;AACA;AACA,EAAE,IAAI,UAAU,GAAG,EAAE,CAAC;AACtB;AACA,EAAE,KAAK,IAAI,MAAM,IAAI,YAAY,EAAE;AACnC,IAAI,IAAI,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AACnC;AACA,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,KAAK;AACL,GAAG;AACH;AACA,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AACjD,EAAE,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AACrD,EAAE,cAAc,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,eAAe,EAAE,GAAG,CAAC,CAAC;AAC1D,EAAE,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,eAAe,GAAG,CAAC,KAAK;AACtD,EAAE,IAAI,cAAc,GAAG,CAAC,CAAC;AACzB,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI;AAC/B,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;AAC1B,MAAM,cAAc,IAAI,GAAG,CAAC,MAAM,CAAC;AACnC,KAAK;AACL;AACA,IAAI,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACnC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,cAAc,IAAI,eAAe,EAAE;AACzC,IAAI,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;AACpC,GAAG;AACH;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,eAAe,GAAG,CAAC,KAAK;AAC1D,EAAE,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9D,EAAE,OAAO,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI;AAC1D,IAAI,OAAO,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACjD,GAAG,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI,KAAK;AACtD,EAAE,IAAI,eAAe,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrD,EAAE,OAAO,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAI;AAClD,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAChE;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClC,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;AAChF,KAAK;AACL;AACA,IAAI,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAChC,GAAG,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,SAAS,KAAK;AAC/C,EAAE,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE;AACpE,MAAM,SAAS;AACf,KAAK;AACL;AACA,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAC9D,MAAM,SAAS;AACf,KAAK;AACL;AACA,IAAI,IAAI,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC;AACxC;AACA;AACA;AACA;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI;AAC3B,MAAM,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;AAC9C,QAAQ,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AACpF,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AACzD,UAAU,SAAS;AACnB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE;AAC5E,UAAU,OAAO,IAAI,CAAC;AACtB,SAAS;AACT;AACA,QAAQ,IAAI,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AAC5E,UAAU,OAAO,IAAI,CAAC;AACtB,SAAS;AACT,OAAO;AACP;AACA,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK,CAAC;AACN;AACA,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5C;AACA,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,MAAM,SAAS;AACf,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACF;AACA,MAAM,QAAQ,CAAC;AACf,EAAE,WAAW,GAAG;AAChB;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACpB;AACA;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACjB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,IAAI,EAAE;AACZ,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,MAAM,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,GAAG;AACT,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7C,GAAG;AACH;AACA,EAAE,MAAM,GAAG;AACX,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC7B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE;AAC9B,IAAI,IAAI,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC;AAC/B,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC;AACA,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC9B,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AACjF,IAAI,IAAI,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC;AAC5C,IAAI,KAAK,CAAC,GAAG,CAAC;AACd,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK;AAC5B,MAAM,GAAG,EAAE,SAAS,CAAC,KAAK,GAAG,cAAc;AAC3C,MAAM,MAAM,EAAE,cAAc;AAC5B,MAAM,MAAM,EAAE,WAAW;AACzB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,GAAG,IAAI;AAC1B,EAAE,UAAU,EAAE,CAAC;AACf,EAAE,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AACvB,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,SAAS,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;AACnC;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC7C,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC9C;AACA;AACA,IAAI,IAAI,WAAW,GAAG,EAAE,CAAC;AACzB,IAAI,IAAI,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;AAChC;AACA,IAAI,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACtC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzC;AACA,MAAM,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE;AACxE;AACA,QAAQ,IAAI,SAAS,EAAE;AACvB,UAAU,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;AACvC,UAAU,QAAQ,CAAC,GAAG,CAAC;AACvB,YAAY,KAAK,EAAE,CAAC;AACpB,YAAY,GAAG,EAAE,CAAC,GAAG,GAAG;AACxB,YAAY,MAAM,EAAE,GAAG;AACvB,YAAY,MAAM,EAAE,SAAS;AAC7B,WAAW,CAAC,CAAC;AACb,UAAU,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,SAAS,MAAM;AACf,UAAU,QAAQ,CAAC,GAAG,CAAC;AACvB,YAAY,KAAK,EAAE,CAAC;AACpB,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC;AACtB,YAAY,MAAM,EAAE,CAAC;AACrB,YAAY,MAAM,EAAE,IAAI;AACxB,WAAW,CAAC,CAAC;AACb,UAAU,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,SAAS;AACT,OAAO,MAAM,IAAI,SAAS,EAAE;AAC5B,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAClD,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,QAAQ,KAAK,CAAC,GAAG,CAAC;AAClB,UAAU,KAAK,EAAE,CAAC;AAClB,UAAU,GAAG,EAAE,CAAC,GAAG,GAAG;AACtB,UAAU,MAAM,EAAE,GAAG;AACrB,UAAU,MAAM,EAAE,SAAS;AAC3B,SAAS,CAAC,CAAC;AACX,QAAQ,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,OAAO,MAAM;AACb;AACA;AACA,QAAQ,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7B,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC;AACA,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/C,QAAQ,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACvC,OAAO,CAAC,CAAC;AACT;AACA,MAAM,KAAK,IAAI,KAAK,IAAI,WAAW,EAAE;AACrC;AACA,QAAQ,IAAI,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;AAC3C,UAAU,SAAS;AACnB,SAAS;AACT;AACA,QAAQ,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,OAAO;AACP;AACA,MAAM,SAAS;AACf,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjE,MAAM,OAAO,IAAI,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACtD,MAAM,IAAI,OAAO,GAAG,IAAI,QAAQ,EAAE,CAAC;AACnC,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACnC;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACpC,OAAO;AACP;AACA,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5B,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,IAAI,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACjD,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC;;ACphBD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;AAC/B,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO;AACnB,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;AACtC,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO;AACnB,EAAE,IAAI,IAAI;AACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9B;AACA,EAAE,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtD;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK;AAC7C,EAAE,IAAI,KAAK,EAAE,GAAG,CAAC;AACjB,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACvB,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;AACrB,EAAE,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;AACpC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3B,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7C,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC;AAC9B,EAAE,OAAO,KAAK,GAAG,MAAM,CAAC;AACxB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AAClC,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB,EAAE,IAAI,OAAO,KAAK,IAAI,UAAU,EAAE,OAAO,KAAK,CAAC;AAC/C;AACA,EAAE,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMc,SAAO,GAAG,CAAC,MAAM,EAAE,QAAQ,KAAK;AACtC,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC7B,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7B,GAAG,MAAM;AACT,IAAI,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;AAC5B,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACtC,QAAQ,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACnC,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AACtB,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACtD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACtC,GAAG;AACH;AACA,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACtC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACtC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACvB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;;AC3FD;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,CAAC;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC/B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI;AAChC,MAAM,UAAU,EAAE,IAAI;AACtB,KAAK,CAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE;AACpD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AAC3C,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,IAAI,WAAW,CAAC;AACpB;AACA,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;AACrG,KAAK;AACL;AACA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI;AAC1B,MAAM,IAAI,WAAW,CAAC;AACtB,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC;AACvB,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC;AACvB;AACA,MAAM,IAAI,WAAW,KAAK,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE;AAClE,QAAQ,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAC9B,OAAO;AACP;AACA,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AACtC,UAAU,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC3C,SAAS,MAAM;AACf,UAAU,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AACrC,SAAS;AACT;AACA,QAAQ,IAAI,KAAK,IAAI,uBAAuB,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,OAAO;AACP;AACA,MAAM,MAAM,CAAC,IAAI,CAAC;AAClB,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,KAAK,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI;AACrD,QAAQ,KAAK,EAAE,KAAK;AACpB,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE;AACnC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACpD,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1C,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,iBAAiB,CAAC,MAAM,EAAE;AAC5B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAChC,UAAU,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACtC;AACA,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO,YAAY;AACzB,QAAQ,OAAO,CAAC,CAAC;AACjB,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;AACxC,UAAU,OAAO,GAAG,MAAM,CAAC,OAAO;AAClC,UAAU,WAAW,GAAG,MAAM,CAAC,MAAM;AACrC,UAAU,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACvC;AACA,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO,YAAY;AACzB,QAAQ,OAAO,CAAC,CAAC;AACjB,OAAO,CAAC;AACR,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG,YAAY;AACpC,MAAM,IAAI,WAAW,KAAK,CAAC,EAAE;AAC7B,QAAQ,OAAO,UAAU,KAAK,EAAE,IAAI,EAAE;AACtC,UAAU,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxC,UAAU,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAChF,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,OAAO,UAAU,KAAK,EAAE,IAAI,EAAE;AACpC,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC;AACpB;AACA,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,UAAU,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACrD;AACA,UAAU,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE;AACrC,YAAY,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC;AACnC,WAAW,MAAM;AACjB,YAAY,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/C,WAAW;AACX,SAAS,MAAM;AACf,UAAUA,SAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK;AAC9C,YAAY,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACrE,WAAW,CAAC,CAAC;AACb,SAAS;AACT;AACA,QAAQ,OAAO,GAAG,GAAG,WAAW,CAAC;AACjC,OAAO,CAAC;AACR,KAAK,EAAE,CAAC;AACR;AACA,IAAI,IAAI,WAAW,KAAK,CAAC,EAAE;AAC3B,MAAM,OAAO,UAAU,IAAI,EAAE;AAC7B,QAAQ,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5C,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE;AAC9C,MAAM,OAAO,UAAU,IAAI,EAAE;AAC7B,QAAQ,IAAI,KAAK;AACjB,YAAY,GAAG,GAAG,CAAC,CAAC;AACpB;AACA,QAAQ,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;AAClC,UAAU,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3C,UAAU,IAAI,KAAK,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AACnC,UAAU,GAAG,IAAI,KAAK,CAAC;AACvB,SAAS;AACT;AACA,QAAQ,OAAO,GAAG,GAAG,WAAW,CAAC;AACjC,OAAO,CAAC;AACR,KAAK,MAAM;AACX,MAAM,OAAO,UAAU,IAAI,EAAE;AAC7B,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC;AACpB,QAAQA,SAAO,CAAC,MAAM,EAAE,KAAK,IAAI;AACjC,UAAU,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1C,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,GAAG,GAAG,WAAW,CAAC;AACjC,OAAO,CAAC;AACR,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE;AAClC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACpD,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACzC,GAAG;AACH;AACA,EAAE,gBAAgB,CAAC,MAAM,EAAE;AAC3B,IAAI,IAAI,cAAc;AACtB,QAAQ,SAAS,GAAG,EAAE,CAAC;AACvB,IAAI,MAAM,IAAI,GAAG,IAAI;AACrB,UAAU,OAAO,GAAG,MAAM,CAAC,OAAO;AAClC,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;AACzF;AACA,IAAI,IAAI,OAAO,IAAI,IAAI,UAAU,EAAE;AACnC,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG,SAAS,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE;AACvD,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC;AACjD,MAAM,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3D,KAAK,CAAC;AACN;AACA;AACA,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;AAC1B,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE;AAClD,UAAU,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;AACtB,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B;AACA,MAAM,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;AACjC,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE;AACpC,UAAU,cAAc,GAAG,KAAK,CAAC;AACjC,UAAU,MAAM;AAChB,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,cAAc,EAAE;AAC1B,QAAQ,SAAS,CAAC,OAAO,CAAC;AAC1B,UAAU,KAAK,EAAE,QAAQ;AACzB,UAAU,SAAS,EAAE,MAAM;AAC3B,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA,KAAK,MAAM;AACX,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;AAClE,KAAK;AACL;AACA;AACA,IAAI,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC;AAC7C;AACA,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;AAC3B,MAAM,IAAI,MAAM,EAAE,KAAK,CAAC;AACxB;AACA,MAAM,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE;AACtC,QAAQ,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC/B,QAAQ,IAAI,UAAU,GAAG,QAAQ,CAAC,SAAS,KAAK,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAChE,QAAQ,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,QAAQ,IAAI,MAAM,EAAE,OAAO,MAAM,CAAC;AAClC,OAAO;AACP;AACA,MAAM,OAAO,CAAC,CAAC;AACf,KAAK,CAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE;AACjC,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB,IAAI,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9C,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACjC,IAAI,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACvC;AACA,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;AACxB,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACrC,MAAM,MAAM,MAAM,GAAG,EAAE,CAAC;AACxB,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI;AACtC,QAAQ,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;AACtC,UAAU,KAAK,GAAG;AAClB,YAAY,KAAK,EAAE,KAAK;AACxB,YAAY,MAAM,EAAE,CAAC;AACrB,WAAW,CAAC;AACZ,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,QAAQ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACpE,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,KAAK;AACL;AACA,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,OAAO;AACtB,MAAM,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;AACvC,MAAM,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;AAC5E,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,KAAK,EAAE,EAAE;AACf,MAAM,OAAO,EAAE,OAAO;AACtB,MAAM,SAAS,EAAE,OAAO,CAAC,OAAO,GAAG,cAAc,GAAG,OAAO;AAC3D,KAAK,CAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;AACzB,IAAI,IAAI,IAAI,GAAG,IAAI;AACnB,QAAQ,KAAK;AACb,QAAQ,MAAM,CAAC;AACf,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAChD,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB;AACA,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACrE;AACA;AACA,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE;AACtB,MAAMA,SAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK;AACxC,QAAQ,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/B;AACA,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE;AACnD,UAAU,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC5B,YAAY,OAAO,EAAE,KAAK;AAC1B,YAAY,IAAI,EAAE,EAAE;AACpB,WAAW,CAAC,CAAC;AACb,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAMA,SAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK;AACrC,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1B,UAAU,OAAO,EAAE,CAAC;AACpB,UAAU,IAAI,EAAE,EAAE;AAClB,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClD;AACA,IAAI,IAAI,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C;AACA,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AACvC;AACA,IAAI,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;AAC3C,MAAM,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1D,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA;;ACzSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,MAAMA,OAAO,GAAG,CAACC,MAAD,EAA+B7C,QAA/B,KAAqE;AAE3F,EAAA,IAAKmC,KAAK,CAACC,OAAN,CAAcS,MAAd,CAAL,EAA4B;AAC3BA,IAAAA,MAAM,CAAC3C,OAAP,CAAeF,QAAf,CAAA,CAAA;AAEA,GAHD,MAGK;AAEJ,IAAA,KAAK,IAAIiC,GAAT,IAAgBY,MAAhB,EAAwB;AACvB,MAAA,IAAIA,MAAM,CAACN,cAAP,CAAsBN,GAAtB,CAAJ,EAAgC;AAC/BjC,QAAAA,QAAQ,CAAC6C,MAAM,CAACZ,GAAD,CAAP,EAAcA,GAAd,CAAR,CAAA;AACA,OAAA;AACD,KAAA;AACD,GAAA;AACD,CAbM;;ACzEP;AACA;AACA;AACA;AACA;AACA;;AACO,MAAMa,MAAM,GAAKC,KAAF,IAA6B;AAElD,EAAIA,IAAAA,KAAK,CAACC,MAAV,EAAkB;AACjB,IAAOD,OAAAA,KAAK,CAAC,CAAD,CAAZ,CAAA;AACA,GAAA;;AAED,EAAIA,IAAAA,KAAK,YAAYE,WAArB,EAAkC;AACjC,IAAA,OAAOF,KAAP,CAAA;AACA,GAAA;;AAED,EAAA,IAAIG,YAAY,CAACH,KAAD,CAAhB,EAAyB;AACxB,IAAA,IAAII,GAAG,GAAGC,QAAQ,CAACC,aAAT,CAAuB,UAAvB,CAAV,CAAA;AACAF,IAAAA,GAAG,CAACG,SAAJ,GAAgBP,KAAK,CAACQ,IAAN,EAAhB,CAFwB;;AAGxB,IAAA,OAAOJ,GAAG,CAACK,OAAJ,CAAYC,UAAnB,CAAA;AACA,GAAA;;AAED,EAAA,OAAOL,QAAQ,CAACM,aAAT,CAAuBX,KAAvB,CAAP,CAAA;AACA,CAjBM,CAAA;AAmBA,MAAMG,YAAY,GAAIS,GAAD,IAAsB;AACjD,EAAA,IAAI,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,CAAC1C,OAAJ,CAAY,GAAZ,CAAmB,GAAA,CAAC,CAAnD,EAAsD;AACrD,IAAA,OAAO,IAAP,CAAA;AACA,GAAA;;AACD,EAAA,OAAO,KAAP,CAAA;AACA,CALM,CAAA;AAOA,MAAM2C,WAAW,GAAIb,KAAD,IAAyB;AACnD,EAAA,OAAOA,KAAK,CAACc,OAAN,CAAc,SAAd,EAAyB,MAAzB,CAAP,CAAA;AACA,CAFM,CAAA;AAIP;AACA;AACA;AACA;;AACO,MAAMC,YAAY,GAAG,CAAEC,MAAF,EAAsBC,UAAtB,KAAkD;AAC7E,EAAA,IAAI7D,KAAK,GAAGiD,QAAQ,CAACa,WAAT,CAAqB,YAArB,CAAZ,CAAA;AACA9D,EAAAA,KAAK,CAAC+D,SAAN,CAAgBF,UAAhB,EAA4B,IAA5B,EAAkC,KAAlC,CAAA,CAAA;AACAD,EAAAA,MAAM,CAACI,aAAP,CAAqBhE,KAArB,CAAA,CAAA;AACA,CAJM,CAAA;AAMP;AACA;AACA;AACA;;AACO,MAAMiE,QAAQ,GAAG,CAAEL,MAAF,EAAsBM,GAAtB,KAAoE;AAC3FC,EAAAA,MAAM,CAACC,MAAP,CAAcR,MAAM,CAACS,KAArB,EAA4BH,GAA5B,CAAA,CAAA;AACA,CAFM,CAAA;AAKP;AACA;AACA;AACA;;AACO,MAAMI,UAAU,GAAG,CAAEC,KAAF,EAAmC,GAAGC,OAAtC,KAAuE;AAEhG,EAAA,IAAIC,YAAY,GAAIC,YAAY,CAACF,OAAD,CAAhC,CAAA;AACAD,EAAAA,KAAK,GAAMI,WAAW,CAACJ,KAAD,CAAtB,CAAA;AAEAA,EAAAA,KAAK,CAACK,GAAN,CAAWC,EAAE,IAAI;AAChBJ,IAAAA,YAAY,CAACG,GAAb,CAAkBE,GAAG,IAAI;AACxBD,MAAAA,EAAE,CAACE,SAAH,CAAaC,GAAb,CAAkBF,GAAlB,CAAA,CAAA;AACA,KAFD,CAAA,CAAA;AAGA,GAJD,CAAA,CAAA;AAKA,CAVM,CAAA;AAYP;AACA;AACA;AACA;;AACQ,MAAMG,aAAa,GAAG,CAAEV,KAAF,EAAmC,GAAGC,OAAtC,KAAuE;AAEnG,EAAA,IAAIC,YAAY,GAAIC,YAAY,CAACF,OAAD,CAAhC,CAAA;AACDD,EAAAA,KAAK,GAAMI,WAAW,CAACJ,KAAD,CAAtB,CAAA;AAEAA,EAAAA,KAAK,CAACK,GAAN,CAAWC,EAAE,IAAI;AAChBJ,IAAAA,YAAY,CAACG,GAAb,CAAiBE,GAAG,IAAI;AACtBD,MAAAA,EAAE,CAACE,SAAH,CAAaG,MAAb,CAAqBJ,GAArB,CAAA,CAAA;AACD,KAFD,CAAA,CAAA;AAGC,GAJF,CAAA,CAAA;AAKC,CAVM,CAAA;AAaR;AACA;AACA;AACA;;AACO,MAAMJ,YAAY,GAAI1D,IAAD,IAAuC;AAClE,EAAIwD,IAAAA,OAAgB,GAAG,EAAvB,CAAA;AACA/B,EAAAA,OAAO,CAAEzB,IAAF,EAASmE,QAAD,IAAa;AAC3B,IAAA,IAAI,OAAOA,QAAP,KAAoB,QAAxB,EAAkC;AACjCA,MAAAA,QAAQ,GAAGA,QAAQ,CAAC/B,IAAT,EAAgBtD,CAAAA,KAAhB,CAAsB,mBAAtB,CAAX,CAAA;AACA,KAAA;;AACD,IAAA,IAAIkC,KAAK,CAACC,OAAN,CAAckD,QAAd,CAAJ,EAA6B;AAC5BX,MAAAA,OAAO,GAAGA,OAAO,CAACY,MAAR,CAAeD,QAAf,CAAV,CAAA;AACA,KAAA;AACD,GAPM,CAAP,CAAA;AASA,EAAA,OAAOX,OAAO,CAACa,MAAR,CAAeC,OAAf,CAAP,CAAA;AACA,CAZM,CAAA;AAeP;AACA;AACA;AACA;;AACO,MAAMX,WAAW,GAAInB,GAAD,IAAwB;AAClD,EAAA,IAAI,CAACxB,KAAK,CAACC,OAAN,CAAcuB,GAAd,CAAL,EAAyB;AACvBA,IAAAA,GAAG,GAAG,CAACA,GAAD,CAAN,CAAA;AACA,GAAA;;AACF,EAAA,OAAOA,GAAP,CAAA;AACA,CALM,CAAA;AAQP;AACA;AACA;AACA;AACA;;AACO,MAAM+B,WAAW,GAAG,CAAEC,MAAF,EAA2BC,QAA3B,EAA4CC,OAA5C,KAAuF;AAEjH,EAAIA,IAAAA,OAAO,IAAI,CAACA,OAAO,CAACC,QAAR,CAAiBH,MAAjB,CAAhB,EAA0C;AACzC,IAAA,OAAA;AACA,GAAA;;AAED,EAAA,OAAOA,MAAM,IAAIA,MAAM,CAACI,OAAxB,EAAiC;AAEhC,IAAA,IAAIJ,MAAM,CAACI,OAAP,CAAeH,QAAf,CAAJ,EAA8B;AAC7B,MAAA,OAAOD,MAAP,CAAA;AACA,KAAA;;AAEDA,IAAAA,MAAM,GAAGA,MAAM,CAACK,UAAhB,CAAA;AACA,GAAA;AACD,CAdM,CAAA;AAiBP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,MAAMC,OAAO,GAAG,CAAEC,IAAF,EAA4BC,SAAgB,GAAC,CAA7C,KAAwD;AAE9E,EAAIA,IAAAA,SAAS,GAAG,CAAhB,EAAmB;AAClB,IAAA,OAAOD,IAAI,CAACA,IAAI,CAACpF,MAAL,GAAY,CAAb,CAAX,CAAA;AACA,GAAA;;AAED,EAAOoF,OAAAA,IAAI,CAAC,CAAD,CAAX,CAAA;AACA,CAPM,CAAA;AASP;AACA;AACA;AACA;;AACO,MAAME,aAAa,GAAIC,GAAD,IAAwB;AACpD,EAAQ/B,OAAAA,MAAM,CAACgC,IAAP,CAAYD,GAAZ,CAAiBvF,CAAAA,MAAjB,KAA4B,CAApC,CAAA;AACA,CAFM,CAAA;AAKP;AACA;AACA;AACA;;AACO,MAAMyF,SAAS,GAAG,CAAEvB,EAAF,EAAmBwB,OAAnB,KAA+C;AACvE,EAAA,IAAI,CAACxB,EAAL,EAAS,OAAO,CAAC,CAAR,CAAA;AAETwB,EAAAA,OAAO,GAAGA,OAAO,IAAIxB,EAAE,CAACyB,QAAxB,CAAA;AAEA,EAAIC,IAAAA,CAAC,GAAG,CAAR,CAAA;;AACA,EAAA,OAAO1B,EAAE,GAAGA,EAAE,CAAC2B,sBAAf,EAAuC;AAEtC,IAAA,IAAI3B,EAAE,CAACe,OAAH,CAAWS,OAAX,CAAJ,EAAyB;AACxBE,MAAAA,CAAC,EAAA,CAAA;AACD,KAAA;AACD,GAAA;;AACD,EAAA,OAAOA,CAAP,CAAA;AACA,CAbM,CAAA;AAgBP;AACA;AACA;AACA;;AACO,MAAME,OAAO,GAAG,CAAC5B,EAAD,EAAY6B,KAAZ,KAA4D;AAClFjE,EAAAA,OAAO,CAAEiE,KAAF,EAAQ,CAACC,GAAD,EAAKC,IAAL,KAAc;AAC5B,IAAID,IAAAA,GAAG,IAAI,IAAX,EAAiB;AAChB9B,MAAAA,EAAE,CAACgC,eAAH,CAAmBD,IAAnB,CAAA,CAAA;AACA,KAFD,MAEK;AACJ/B,MAAAA,EAAE,CAACiC,YAAH,CAAgBF,IAAhB,EAAgC,KAAGD,GAAnC,CAAA,CAAA;AACA,KAAA;AACD,GANM,CAAP,CAAA;AAOA,CARM,CAAA;AAWP;AACA;AACA;;AACO,MAAMI,WAAW,GAAG,CAAEC,QAAF,EAAiBC,WAAjB,KAAuC;AACjE,EAAA,IAAID,QAAQ,CAACnB,UAAb,EAA0BmB,QAAQ,CAACnB,UAAT,CAAoBqB,YAApB,CAAiCD,WAAjC,EAA8CD,QAA9C,CAAA,CAAA;AAC1B,CAFM;;AC/MP;AACA;AACA;AACA;AACA;AACA;AACA;AAKO,MAAMG,SAAS,GAAG,CAACC,OAAD,EAAsBC,KAAtB,KAA8C;AAEtE,EAAA,IAAIA,KAAK,KAAK,IAAd,EAAqB,OAFiD;;AAKtE,EAAA,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAE9B,IAAA,IAAI,CAACA,KAAK,CAAC1G,MAAX,EAAoB,OAAA;AACpB0G,IAAAA,KAAK,GAAG,IAAIC,MAAJ,CAAWD,KAAX,EAAkB,GAAlB,CAAR,CAAA;AACA,GATqE;AAatE;;;AACA,EAAME,MAAAA,aAAa,GAAKC,IAAF,IAAwB;AAE7C,IAAIC,IAAAA,KAAK,GAAGD,IAAI,CAACE,IAAL,CAAUD,KAAV,CAAgBJ,KAAhB,CAAZ,CAAA;;AACA,IAAII,IAAAA,KAAK,IAAID,IAAI,CAACE,IAAL,CAAU/G,MAAV,GAAmB,CAAhC,EAAmC;AAClC,MAAA,IAAIgH,QAAQ,GAAI1E,QAAQ,CAACC,aAAT,CAAuB,MAAvB,CAAhB,CAAA;AACAyE,MAAAA,QAAQ,CAACC,SAAT,GAAqB,WAArB,CAAA;AACA,MAAIC,IAAAA,SAAS,GAAIL,IAAI,CAACM,SAAL,CAAeL,KAAK,CAACM,KAArB,CAAjB,CAAA;AAEAF,MAAAA,SAAS,CAACC,SAAV,CAAoBL,KAAK,CAAC,CAAD,CAAL,CAAU9G,MAA9B,CAAA,CAAA;AACA,MAAA,IAAIqH,WAAW,GAAIH,SAAS,CAACI,SAAV,CAAoB,IAApB,CAAnB,CAAA;AAEAN,MAAAA,QAAQ,CAACO,WAAT,CAAqBF,WAArB,CAAA,CAAA;AACAjB,MAAAA,WAAW,CAACc,SAAD,EAAYF,QAAZ,CAAX,CAAA;AACA,MAAA,OAAO,CAAP,CAAA;AACA,KAAA;;AAED,IAAA,OAAO,CAAP,CAAA;AACA,GAjBD,CAdsE;AAkCtE;;;AACA,EAAMQ,MAAAA,iBAAiB,GAAKX,IAAF,IAAyB;AAClD,IAAA,IAAIA,IAAI,CAACY,QAAL,KAAkB,CAAlB,IAAuBZ,IAAI,CAACa,UAA5B,IAA0C,CAAC,iBAAA,CAAkBC,IAAlB,CAAuBd,IAAI,CAACe,OAA5B,CAA3C,KAAqFf,IAAI,CAACI,SAAL,KAAmB,WAAnB,IAAkCJ,IAAI,CAACe,OAAL,KAAiB,MAAxI,CAAJ,EAAsJ;AACrJvG,MAAAA,KAAK,CAACwG,IAAN,CAAWhB,IAAI,CAACa,UAAhB,CAA4BtI,CAAAA,OAA5B,CAAoCqH,OAAO,IAAI;AAC9CqB,QAAAA,kBAAkB,CAACrB,OAAD,CAAlB,CAAA;AACA,OAFD,CAAA,CAAA;AAGA,KAAA;AACD,GAND,CAAA;;AASA,EAAMqB,MAAAA,kBAAkB,GAAKjB,IAAF,IAAgC;AAE1D,IAAA,IAAIA,IAAI,CAACY,QAAL,KAAkB,CAAtB,EAAyB;AACxB,MAAOb,OAAAA,aAAa,CAACC,IAAD,CAApB,CAAA;AACA,KAAA;;AAEDW,IAAAA,iBAAiB,CAACX,IAAD,CAAjB,CAAA;AAEA,IAAA,OAAO,CAAP,CAAA;AACA,GATD,CAAA;;AAWAiB,EAAAA,kBAAkB,CAAErB,OAAF,CAAlB,CAAA;AACA,CAxDM,CAAA;AA0DP;AACA;AACA;AACA;;AACO,MAAMsB,eAAe,GAAI7D,EAAD,IAAoB;AAClD,EAAA,IAAI8D,QAAQ,GAAG9D,EAAE,CAAC+D,gBAAH,CAAoB,gBAApB,CAAf,CAAA;AACA5G,EAAAA,KAAK,CAAC6G,SAAN,CAAgB9I,OAAhB,CAAwB+I,IAAxB,CAA6BH,QAA7B,EAAuC,UAAS9D,EAAT,EAAwB;AAC9D,IAAA,IAAIkE,MAAM,GAAGlE,EAAE,CAACgB,UAAhB,CAAA;AACAkD,IAAAA,MAAM,CAAC7B,YAAP,CAAoBrC,EAAE,CAACvB,UAAvB,EAA2CuB,EAA3C,CAAA,CAAA;AACAkE,IAAAA,MAAM,CAACC,SAAP,EAAA,CAAA;AACA,GAJD,CAAA,CAAA;AAKA,CAPM;;ACzEA,MAAMC,KAAK,GAAM,EAAjB,CAAA;AACA,MAAMC,UAAU,GAAK,EAArB,CAAA;AACA,MAAMC,OAAO,GAAK,EAAlB,CAAA;AACA,MAAMC,QAAQ,GAAK,EAAnB,CAAA;AACA,MAAMC,MAAM,GAAM,EAAlB,CAAA;AACA,MAAMC,SAAS,GAAK,EAApB,CAAA;AACA,MAAMC,QAAQ,GAAK,EAAnB,CAAA;AACA,MAAMC,aAAa,GAAI,CAAvB,CAAA;AACA,MAAMC,UAAU,GAAK,EAArB,CAAA;AACA,MAAMC,OAAO,GAAK,CAAlB,CAAA;AAEA,MAAMC,MAAM,GAAU,OAAOC,SAAP,KAAqB,WAArB,GAAmC,KAAnC,GAA2C,MAAMtB,IAAN,CAAWsB,SAAS,CAACC,SAArB,CAAjE,CAAA;AACA,MAAMC,YAAY,GAAIH,MAAM,GAAG,SAAH,GAAe,SAA3C;;ACXP,eAAe;AACdxH,EAAAA,OAAO,EAAE,EADK;AAEd4H,EAAAA,SAAS,EAAE,EAFG;AAId1I,EAAAA,OAAO,EAAE,EAJK;AAKd2I,EAAAA,SAAS,EAAE,GALG;AAMdC,EAAAA,OAAO,EAAE,IANK;AAMC;AACfC,EAAAA,OAAO,EAAE,IAPK;AAQdC,EAAAA,UAAU,EAAE,IARE;AASdC,EAAAA,MAAM,EAAE,IATM;AAUdC,EAAAA,YAAY,EAAE,KAVA;AAWdC,EAAAA,YAAY,EAAE,IAXA;AAYdnD,EAAAA,SAAS,EAAE,IAZG;AAadoD,EAAAA,WAAW,EAAE,IAbC;AAcdC,EAAAA,UAAU,EAAE,IAdE;AAedC,EAAAA,UAAU,EAAE,EAfE;AAgBdC,EAAAA,QAAQ,EAAE,IAhBI;AAiBdC,EAAAA,YAAY,EAAE,IAjBA;AAkBdC,EAAAA,UAAU,EAAE,KAlBE;AAmBdC,EAAAA,aAAa,EAAE,KAnBD;AAoBdC,EAAAA,WAAW,EAAE,KApBC;AAqBdC,EAAAA,OAAO,EAAE,IArBK;AAsBdC,EAAAA,gBAAgB,EAAE,KAtBJ;AAuBd;AAEAC,EAAAA,YAAY,EAAE,GAzBA;AA0BdC,EAAAA,YAAY,EAAE,SA1BA;AA4BdC,EAAAA,QAAQ,EAAE,IA5BI;AA4BE;AAChBC,EAAAA,aAAa,EAAE,UA7BD;AA8BdC,EAAAA,UAAU,EAAE,OA9BE;AA+BdC,EAAAA,UAAU,EAAE,MA/BE;AAgCdC,EAAAA,aAAa,EAAE,UAhCD;AAiCdC,EAAAA,kBAAkB,EAAE,OAjCN;AAkCdC,EAAAA,kBAAkB,EAAE,OAlCN;AAmCdC,EAAAA,iBAAiB,EAAE,KAnCL;AAqCdC,EAAAA,SAAS,EAAE,QArCG;AAsCdC,EAAAA,WAAW,EAAE,CAAC,MAAD,CAtCC;AAuCdC,EAAAA,iBAAiB,EAAE,KAvCL;AAyCdC,EAAAA,IAAI,EAAE,IAzCQ;AA0CdC,EAAAA,YAAY,EAAE,YA1CA;AA2CdC,EAAAA,YAAY,EAAE,YA3CA;AA4CdC,EAAAA,aAAa,EAAE,aA5CD;AA6CdC,EAAAA,oBAAoB,EAAE,qBA7CR;AA8CdC,EAAAA,SAAS,EAAE,MA9CG;AA+CdC,EAAAA,WAAW,EAAE,QA/CC;AAiDdC,EAAAA,cAAc,EAAE,IAjDF;AAkDdC,EAAAA,YAAY,EAAE,mDAlDA;AAoDdC,EAAAA,qBAAqB,EAAE,KApDT;AAsDdC,EAAAA,WAAW,EAAE,IAtDC;AAuDdC,EAAAA,eAAe,EAAE,IAvDH;AAyDdC,EAAAA,UAAU,EAAE,UAAS9J,KAAT,EAA8B;AACzC,IAAA,OAAOA,KAAK,CAACjC,MAAN,GAAe,CAAtB,CAAA;AACA,GA3Da;;AA6Dd;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAECgM,EAAAA,MAAM,EAAE;AACP;AACF;AACA;AACA;AACA;AACA;AACA;AAPS,GAAA;AAjFM,CAAf;;ACIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,QAAQ,GAAIC,KAAD,IAA4D;AACnF,EAAI,IAAA,OAAOA,KAAP,KAAiB,WAAjB,IAAgCA,KAAK,KAAK,IAA9C,EAAoD,OAAO,IAAP,CAAA;AACpD,EAAOC,OAAAA,QAAQ,CAACD,KAAD,CAAf,CAAA;AACA,CAHM,CAAA;AAKA,MAAMC,QAAQ,GAAID,KAAD,IAAwC;AAC/D,EAAI,IAAA,OAAOA,KAAP,KAAiB,SAArB,EAAgC,OAAOA,KAAK,GAAG,GAAH,GAAS,GAArB,CAAA;AAChC,EAAOA,OAAAA,KAAK,GAAG,EAAf,CAAA;AACA,CAHM,CAAA;AAKP;AACA;AACA;AACA;;AACO,MAAME,WAAW,GAAIC,GAAD,IAAuB;AACjD,EAAA,OAAO,CAACA,GAAG,GAAG,EAAP,EACLtJ,OADK,CACG,IADH,EACS,OADT,CAELA,CAAAA,OAFK,CAEG,IAFH,EAES,MAFT,CAGLA,CAAAA,OAHK,CAGG,IAHH,EAGS,MAHT,CAILA,CAAAA,OAJK,CAIG,IAJH,EAIS,QAJT,CAAP,CAAA;AAKA,CANM,CAAA;AASP;AACA;AACA;AACA;;AACO,MAAMuJ,YAAY,GAAG,CAACrL,EAAD,EAAoDsL,KAApD,KAAqE;AAChG,EAAA,IAAIC,OAAJ,CAAA;AACA,EAAA,OAAO,UAAyBN,KAAzB,EAAsChN,QAAtC,EAAgE;AACtE,IAAIoB,IAAAA,IAAI,GAAG,IAAX,CAAA;;AAEA,IAAA,IAAIkM,OAAJ,EAAa;AACZlM,MAAAA,IAAI,CAACmM,OAAL,GAAeC,IAAI,CAACC,GAAL,CAASrM,IAAI,CAACmM,OAAL,GAAe,CAAxB,EAA2B,CAA3B,CAAf,CAAA;AACAG,MAAAA,YAAY,CAACJ,OAAD,CAAZ,CAAA;AACA,KAAA;;AACDA,IAAAA,OAAO,GAAGK,UAAU,CAAC,YAAW;AAC/BL,MAAAA,OAAO,GAAG,IAAV,CAAA;AACAlM,MAAAA,IAAI,CAACwM,cAAL,CAAoBZ,KAApB,IAA6B,IAA7B,CAAA;AACAjL,MAAAA,EAAE,CAACkH,IAAH,CAAQ7H,IAAR,EAAc4L,KAAd,EAAqBhN,QAArB,CAAA,CAAA;AAEA,KALmB,EAKjBqN,KALiB,CAApB,CAAA;AAMA,GAbD,CAAA;AAcA,CAhBM,CAAA;AAmBP;AACA;AACA;AACA;AACA;;AACO,MAAMQ,eAAe,GAAG,CAAEzM,IAAF,EAAkB0M,KAAlB,EAAkC/L,EAAlC,KAAqD;AACnF,EAAA,IAAIgM,IAAJ,CAAA;AACA,EAAA,IAAI7M,OAAO,GAAGE,IAAI,CAACF,OAAnB,CAAA;AACA,EAAA,IAAI8M,UAAiC,GAAG,EAAxC,CAHmF;;AAMnF5M,EAAAA,IAAI,CAACF,OAAL,GAAe,YAAU;AACxB,IAAA,IAAI6M,IAAI,GAAGlN,SAAS,CAAC,CAAD,CAApB,CAAA;;AACA,IAAIiN,IAAAA,KAAK,CAAC7M,OAAN,CAAc8M,IAAd,CAAwB,KAAA,CAAC,CAA7B,EAAgC;AAC/BC,MAAAA,UAAU,CAACD,IAAD,CAAV,GAAmBlN,SAAnB,CAAA;AACA,KAFD,MAEO;AACN,MAAA,OAAOK,OAAO,CAACG,KAAR,CAAcD,IAAd,EAAoBP,SAApB,CAAP,CAAA;AACA,KAAA;AACD,GAPD,CANmF;;;AAgBnFkB,EAAAA,EAAE,CAACV,KAAH,CAASD,IAAT,EAAe,EAAf,CAAA,CAAA;AACAA,EAAAA,IAAI,CAACF,OAAL,GAAeA,OAAf,CAjBmF;;AAoBnF,EAAK6M,KAAAA,IAAL,IAAaD,KAAb,EAAoB;AACnB,IAAIC,IAAAA,IAAI,IAAIC,UAAZ,EAAwB;AACvB9M,MAAAA,OAAO,CAACG,KAAR,CAAcD,IAAd,EAAoB4M,UAAU,CAACD,IAAD,CAA9B,CAAA,CAAA;AACA,KAAA;AACD,GAAA;AACD,CAzBM,CAAA;AA4BP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,MAAME,YAAY,GAAIC,KAAD,IAA8D;AACzF,EAAO,OAAA;AACNC,IAAAA,KAAK,EAAGD,KAAK,CAACE,cAAN,IAAwB,CAD1B;AAENtN,IAAAA,MAAM,EAAG,CAACoN,KAAK,CAACG,YAAN,IAAoB,CAArB,KAA2BH,KAAK,CAACE,cAAN,IAAsB,CAAjD,CAAA;AAFH,GAAP,CAAA;AAIA,CALM,CAAA;AAQP;AACA;AACA;AACA;;AACO,MAAME,cAAc,GAAG,CAACC,GAAD,EAAaC,IAAY,GAAC,KAA1B,KAAyC;AACtE,EAAA,IAAID,GAAJ,EAAS;AACRA,IAAAA,GAAG,CAACD,cAAJ,EAAA,CAAA;;AACA,IAAA,IAAIE,IAAJ,EAAU;AACTD,MAAAA,GAAG,CAACE,eAAJ,EAAA,CAAA;AACA,KAAA;AACD,GAAA;AACD,CAPM,CAAA;AAUP;AACA;AACA;AACA;;AACO,MAAMC,QAAQ,GAAG,CAAC/I,MAAD,EAAqBoI,IAArB,EAAkC/N,QAAlC,EAA+EsC,OAA/E,KAAwG;AAC/HqD,EAAAA,MAAM,CAACgJ,gBAAP,CAAwBZ,IAAxB,EAA6B/N,QAA7B,EAAsCsC,OAAtC,CAAA,CAAA;AACA,CAFM,CAAA;AAKP;AACA;AACA;AACA;AACA;AACA;;AACO,MAAMsM,SAAS,GAAG,CAAEC,QAAF,EAA6CN,GAA7C,KAAgF;AAExG,EAAI,IAAA,CAACA,GAAL,EAAU;AACT,IAAA,OAAO,KAAP,CAAA;AACA,GAAA;;AAED,EAAA,IAAI,CAACA,GAAG,CAACM,QAAD,CAAR,EAAoB;AACnB,IAAA,OAAO,KAAP,CAAA;AACA,GAAA;;AAED,EAAA,IAAIC,KAAK,GAAG,CAACP,GAAG,CAACQ,MAAJ,GAAW,CAAX,GAAa,CAAd,KAAoBR,GAAG,CAACS,OAAJ,GAAY,CAAZ,GAAc,CAAlC,CAAA,IAAwCT,GAAG,CAACU,QAAJ,GAAa,CAAb,GAAe,CAAvD,CAA6DV,IAAAA,GAAG,CAACW,OAAJ,GAAY,CAAZ,GAAc,CAA3E,CAAZ,CAAA;;AAEA,EAAIJ,IAAAA,KAAK,KAAK,CAAd,EAAiB;AAChB,IAAA,OAAO,IAAP,CAAA;AACA,GAAA;;AAED,EAAA,OAAO,KAAP,CAAA;AACA,CAjBM,CAAA;AAoBP;AACA;AACA;AACA;AACA;;AACO,MAAMK,KAAK,GAAG,CAACnK,EAAD,EAAYoK,EAAZ,KAA0B;AAC9C,EAAA,MAAMC,WAAW,GAAGrK,EAAE,CAACsK,YAAH,CAAgB,IAAhB,CAApB,CAAA;;AACA,EAAA,IAAID,WAAJ,EAAiB;AAChB,IAAA,OAAOA,WAAP,CAAA;AACA,GAAA;;AAEDrK,EAAAA,EAAE,CAACiC,YAAH,CAAgB,IAAhB,EAAqBmI,EAArB,CAAA,CAAA;AACA,EAAA,OAAOA,EAAP,CAAA;AACA,CARM,CAAA;AAWP;AACA;AACA;;AACO,MAAMG,UAAU,GAAIpC,GAAD,IAAuB;AAChD,EAAA,OAAOA,GAAG,CAACtJ,OAAJ,CAAY,SAAZ,EAAuB,MAAvB,CAAP,CAAA;AACA,CAFM,CAAA;AAIP;AACA;AACA;;AACO,MAAM2L,MAAM,GAAG,CAAEtG,MAAF,EAAmCvB,IAAnC,KAA6E;AAClG,EAAA,IAAIA,IAAJ,EAAWuB,MAAM,CAACsG,MAAP,CAAc7H,IAAd,CAAA,CAAA;AACX,CAFM;;ACrLQ,SAAS8H,WAAT,CAAsBvB,KAAtB,EAAsCwB,aAAtC,EAA8F;AAC5G,EAAIhO,IAAAA,QAAoB,GAAG4C,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBoL,QAAlB,EAA4BD,aAA5B,CAA3B,CAAA;AAEA,EAAA,IAAIE,SAAS,GAAMlO,QAAQ,CAAC4J,QAA5B,CAAA;AACA,EAAA,IAAIuE,WAAW,GAAMnO,QAAQ,CAAC+J,UAA9B,CAAA;AACA,EAAA,IAAIqE,WAAW,GAAMpO,QAAQ,CAAC8J,UAA9B,CAAA;AACA,EAAA,IAAIuE,cAAc,GAAKrO,QAAQ,CAACgK,aAAhC,CAAA;AACA,EAAA,IAAIsE,cAAc,GAAKtO,QAAQ,CAAC6J,aAAhC,CAAA;AACA,EAAA,IAAI0E,oBAAoB,GAAGvO,QAAQ,CAACiK,kBAApC,CAAA;AACA,EAAA,IAAIuE,oBAAoB,GAAGxO,QAAQ,CAACkK,kBAApC,CAAA;AAEA,EAAA,IAAIuE,QAAQ,GAAMjC,KAAK,CAACxF,OAAN,CAAc0H,WAAd,EAAlB,CAAA;AACA,EAAA,IAAIzD,WAAW,GAAMuB,KAAK,CAACoB,YAAN,CAAmB,aAAnB,CAAA,IAAqCpB,KAAK,CAACoB,YAAN,CAAmB,kBAAnB,CAA1D,CAAA;;AAEA,EAAA,IAAI,CAAC3C,WAAD,IAAgB,CAACjL,QAAQ,CAACyJ,gBAA9B,EAAgD;AAC/C,IAAA,IAAIkF,MAAM,GAAInC,KAAK,CAACxK,aAAN,CAAoB,kBAApB,CAAd,CAAA;;AACA,IAAA,IAAI2M,MAAJ,EAAY;AACX1D,MAAAA,WAAW,GAAG0D,MAAM,CAACC,WAArB,CAAA;AACA,KAAA;AAED,GAAA;;AAED,EAAA,IAAIC,gBAMH,GAAG;AACH5D,IAAAA,WAAW,EAAGA,WADX;AAEHrK,IAAAA,OAAO,EAAI,EAFR;AAGH4H,IAAAA,SAAS,EAAG,EAHT;AAIHsG,IAAAA,KAAK,EAAI,EAJN;AAKH3F,IAAAA,QAAQ,EAAG,IAAA;AALR,GANJ,CAAA;AAeA;AACD;AACA;AACA;;AACC,EAAI4F,IAAAA,WAAW,GAAG,MAAM;AACvB,IAAA,IAAI/H,OAAJ,CAAA;AACA,IAAA,IAAIpG,OAAO,GAAGiO,gBAAgB,CAACjO,OAA/B,CAAA;AACA,IAAIoO,IAAAA,UAA6B,GAAG,EAApC,CAAA;AACA,IAAIC,IAAAA,WAAW,GAAG,CAAlB,CAAA;;AAEA,IAAIC,IAAAA,QAAQ,GAAI5L,EAAD,IAA8B;AAE5C,MAAA,IAAI6C,IAAI,GAAGvD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAiBS,EAAE,CAAC6L,OAApB,CAAX,CAF4C;;AAG5C,MAAA,IAAIC,IAAI,GAAGlB,SAAS,IAAI/H,IAAI,CAAC+H,SAAD,CAA5B,CAAA;;AAEA,MAAI,IAAA,OAAOkB,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,CAAChQ,MAArC,EAA6C;AAC5C+G,QAAAA,IAAI,GAAGvD,MAAM,CAACC,MAAP,CAAcsD,IAAd,EAAmBkJ,IAAI,CAACC,KAAL,CAAWF,IAAX,CAAnB,CAAP,CAAA;AACA,OAAA;;AAED,MAAA,OAAOjJ,IAAP,CAAA;AACA,KAVD,CAAA;;AAYA,IAAA,IAAIoJ,SAAS,GAAG,CAACZ,MAAD,EAA2Ba,KAA3B,KAA6C;AAE5D,MAAA,IAAIlE,KAAK,GAAGD,QAAQ,CAACsD,MAAM,CAACrD,KAAR,CAApB,CAAA;AACA,MAAKA,IAAAA,KAAK,IAAI,IAAd,EAAqB,OAAA;AACrB,MAAK,IAAA,CAACA,KAAD,IAAU,CAACtL,QAAQ,CAACyJ,gBAAzB,EAA2C,OAJiB;AAO5D;AACA;AACA;;AACA,MAAA,IAAIuF,UAAU,CAACnO,cAAX,CAA0ByK,KAA1B,CAAJ,EAAsC;AACrC,QAAA,IAAIkE,KAAJ,EAAW;AACV,UAAIC,IAAAA,GAAG,GAAGT,UAAU,CAAC1D,KAAD,CAAV,CAAkBgD,cAAlB,CAAV,CAAA;;AACA,UAAI,IAAA,CAACmB,GAAL,EAAU;AACTT,YAAAA,UAAU,CAAC1D,KAAD,CAAV,CAAkBgD,cAAlB,IAAoCkB,KAApC,CAAA;AACA,WAFD,MAEO,IAAI,CAAC/O,KAAK,CAACC,OAAN,CAAc+O,GAAd,CAAL,EAAyB;AAC/BT,YAAAA,UAAU,CAAC1D,KAAD,CAAV,CAAkBgD,cAAlB,CAAA,GAAoC,CAACmB,GAAD,EAAMD,KAAN,CAApC,CAAA;AACA,WAFM,MAEA;AACNC,YAAAA,GAAG,CAACzQ,IAAJ,CAASwQ,KAAT,CAAA,CAAA;AACA,WAAA;AACD,SAAA;AAED,OAZD,MAYK;AAEJ,QAAA,IAAIE,WAAW,GAAeR,QAAQ,CAACP,MAAD,CAAtC,CAAA;AACAe,QAAAA,WAAW,CAACvB,WAAD,CAAX,GAA8BuB,WAAW,CAACvB,WAAD,CAAX,IAA4BQ,MAAM,CAACC,WAAjE,CAAA;AACAc,QAAAA,WAAW,CAACtB,WAAD,CAAX,GAA8BsB,WAAW,CAACtB,WAAD,CAAX,IAA4B9C,KAA1D,CAAA;AACAoE,QAAAA,WAAW,CAACrB,cAAD,CAAX,GAA8BqB,WAAW,CAACrB,cAAD,CAAX,IAA+BM,MAAM,CAACgB,QAApE,CAAA;AACAD,QAAAA,WAAW,CAACpB,cAAD,CAAX,GAA8BoB,WAAW,CAACpB,cAAD,CAAX,IAA+BkB,KAA7D,CAAA;AACAE,QAAAA,WAAW,CAACE,OAAZ,GAAwBjB,MAAxB,CAAA;AAEAK,QAAAA,UAAU,CAAC1D,KAAD,CAAV,GAAoBoE,WAApB,CAAA;AACA9O,QAAAA,OAAO,CAAC5B,IAAR,CAAa0Q,WAAb,CAAA,CAAA;AACA,OAAA;;AAED,MAAIf,IAAAA,MAAM,CAACkB,QAAX,EAAqB;AACpBhB,QAAAA,gBAAgB,CAACC,KAAjB,CAAuB9P,IAAvB,CAA4BsM,KAA5B,CAAA,CAAA;AACA,OAAA;AACD,KAtCD,CAAA;;AAwCA,IAAIwE,IAAAA,QAAQ,GAAKC,QAAF,IAAoC;AAClD,MAAIrC,IAAAA,EAAJ,EAAesC,aAAf,CAAA;AAEAA,MAAAA,aAAa,GAASd,QAAQ,CAACa,QAAD,CAA9B,CAAA;AACAC,MAAAA,aAAa,CAACzB,oBAAD,CAAb,GAAuCyB,aAAa,CAACzB,oBAAD,CAAb,IAAuCwB,QAAQ,CAACnC,YAAT,CAAsB,OAAtB,CAAvC,IAAyE,EAAhH,CAAA;AACAoC,MAAAA,aAAa,CAACxB,oBAAD,CAAb,GAAuCwB,aAAa,CAACxB,oBAAD,CAAb,IAAuCS,WAAW,EAAzF,CAAA;AACAe,MAAAA,aAAa,CAAC3B,cAAD,CAAb,GAAkC2B,aAAa,CAAC3B,cAAD,CAAb,IAAiC0B,QAAQ,CAACJ,QAA5E,CAAA;AACAd,MAAAA,gBAAgB,CAACrG,SAAjB,CAA2BxJ,IAA3B,CAAgCgR,aAAhC,CAAA,CAAA;AAEAtC,MAAAA,EAAE,GAAGsC,aAAa,CAACxB,oBAAD,CAAlB,CAAA;AAEAtN,MAAAA,OAAO,CAAC6O,QAAQ,CAACE,QAAV,EAAqBtB,MAAD,IAAU;AACpCY,QAAAA,SAAS,CAACZ,MAAD,EAA8BjB,EAA9B,CAAT,CAAA;AACA,OAFM,CAAP,CAAA;AAIA,KAfD,CAAA;;AAiBAmB,IAAAA,gBAAgB,CAAC1F,QAAjB,GAA4BqD,KAAK,CAAC0D,YAAN,CAAmB,UAAnB,CAAA,GAAiC,IAAjC,GAAwC,CAApE,CAAA;AAEAhP,IAAAA,OAAO,CAACsL,KAAK,CAACyD,QAAP,EAAiBE,KAAD,IAAS;AAC/BnJ,MAAAA,OAAO,GAAGmJ,KAAK,CAACnJ,OAAN,CAAc0H,WAAd,EAAV,CAAA;;AACA,MAAI1H,IAAAA,OAAO,KAAK,UAAhB,EAA4B;AAC3B8I,QAAAA,QAAQ,CAACK,KAAD,CAAR,CAAA;AACA,OAFD,MAEO,IAAInJ,OAAO,KAAK,QAAhB,EAA0B;AAChCuI,QAAAA,SAAS,CAACY,KAAD,CAAT,CAAA;AACA,OAAA;AACD,KAPM,CAAP,CAAA;AASA,GAtFD,CAAA;AAyFA;AACD;AACA;AACA;;;AACC,EAAIC,IAAAA,YAAY,GAAG,MAAM;AACxB,IAAA,MAAMC,QAAQ,GAAG7D,KAAK,CAACoB,YAAN,CAAmBM,SAAnB,CAAjB,CAAA;;AAEA,IAAI,IAAA,CAACmC,QAAL,EAAe;AACd,MAAI/E,IAAAA,KAAK,GAAGkB,KAAK,CAAClB,KAAN,CAAYzJ,IAAZ,MAAsB,EAAlC,CAAA;AACA,MAAI,IAAA,CAAC7B,QAAQ,CAACyJ,gBAAV,IAA8B,CAAC6B,KAAK,CAAClM,MAAzC,EAAiD,OAAA;AACjD,MAAMkR,MAAAA,MAAM,GAAGhF,KAAK,CAAC/M,KAAN,CAAYyB,QAAQ,CAACyI,SAArB,CAAf,CAAA;AAEAvH,MAAAA,OAAO,CAAEoP,MAAF,EAAWhF,KAAD,IAAW;AAC3B,QAAMqD,MAAAA,MAAgB,GAAG,EAAzB,CAAA;AACAA,QAAAA,MAAM,CAACR,WAAD,CAAN,GAAsB7C,KAAtB,CAAA;AACAqD,QAAAA,MAAM,CAACP,WAAD,CAAN,GAAsB9C,KAAtB,CAAA;AACAuD,QAAAA,gBAAgB,CAACjO,OAAjB,CAAyB5B,IAAzB,CAA8B2P,MAA9B,CAAA,CAAA;AACA,OALM,CAAP,CAAA;AAMAE,MAAAA,gBAAgB,CAACC,KAAjB,GAAyBwB,MAAzB,CAAA;AACA,KAZD,MAYO;AACNzB,MAAAA,gBAAgB,CAACjO,OAAjB,GAA2ByO,IAAI,CAACC,KAAL,CAAWe,QAAX,CAA3B,CAAA;AACAnP,MAAAA,OAAO,CAAE2N,gBAAgB,CAACjO,OAAnB,EAA6B2P,GAAD,IAAS;AAC3C1B,QAAAA,gBAAgB,CAACC,KAAjB,CAAuB9P,IAAvB,CAA4BuR,GAAG,CAACnC,WAAD,CAA/B,CAAA,CAAA;AACA,OAFM,CAAP,CAAA;AAGA,KAAA;AACD,GArBD,CAAA;;AAwBA,EAAIK,IAAAA,QAAQ,KAAK,QAAjB,EAA2B;AAC1BM,IAAAA,WAAW,EAAA,CAAA;AACX,GAFD,MAEO;AACNqB,IAAAA,YAAY,EAAA,CAAA;AACZ,GAAA;;AAED,EAAOxN,OAAAA,MAAM,CAACC,MAAP,CAAe,EAAf,EAAmBoL,QAAnB,EAA6BY,gBAA7B,EAA+Cb,aAA/C,CAAP,CAAA;AACA;;ACpID,IAAIwC,UAAU,GAAG,CAAjB,CAAA;AAEe,MAAMC,SAAN,SAAwB7Q,WAAW,CAAClB,UAAD,CAAnC,CAA+C;AAwBtB;AAyBvCC,EAAAA,WAAW,CAAE+R,SAAF,EAA8BC,aAA9B,EAA2E;AACrF,IAAA,KAAA,EAAA,CAAA;AADqF,IAAA,IAAA,CA/C/EC,aA+C+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CA9C/EzM,OA8C+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CA7C/E0M,QA6C+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CA5C/EC,OA4C+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CA3C/EC,gBA2C+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CA1C/EC,UA0C+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAxC/EC,IAAAA,CAAAA,KAwC+E,GAxC1D,CAwC0D,CAAA;AAAA,IAAA,IAAA,CAvC/EjR,QAuC+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CAtC/EwM,KAsC+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CArC/E0E,QAqC+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CApC/EC,aAoC+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CAnC/EC,GAmC+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CAlC9EC,OAkC8E,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CAhC9EC,QAgC8E,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CA/B/EC,MA+B+E,GAAA,KAAA,CAAA,CAAA;AAAA,IA5B/EC,IAAAA,CAAAA,MA4B+E,GA5BxD,KA4BwD,CAAA;AAAA,IA3B/EC,IAAAA,CAAAA,UA2B+E,GA3BrD,KA2BqD,CAAA;AAAA,IAAA,IAAA,CA1B/EC,UA0B+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAzB/EC,IAAAA,CAAAA,SAyB+E,GAzBtD,KAyBsD,CAAA;AAAA,IAxB/EC,IAAAA,CAAAA,OAwB+E,GAxBvD,IAwBuD,CAAA;AAAA,IAvB/EC,IAAAA,CAAAA,QAuB+E,GAvBtD,KAuBsD,CAAA;AAAA,IAtB/EC,IAAAA,CAAAA,SAsB+E,GAtBtD,KAsBsD,CAAA;AAAA,IArB/EC,IAAAA,CAAAA,aAqB+E,GArBnD,KAqBmD,CAAA;AAAA,IApB/EC,IAAAA,CAAAA,OAoB+E,GApBvD,KAoBuD,CAAA;AAAA,IAnB/EC,IAAAA,CAAAA,WAmB+E,GAnBpD,KAmBoD,CAAA;AAAA,IAlB/EC,IAAAA,CAAAA,WAkB+E,GAlBpD,KAkBoD,CAAA;AAAA,IAjB/EC,IAAAA,CAAAA,UAiB+E,GAjBrD,KAiBqD,CAAA;AAAA,IAAA,IAAA,CAhB/EC,cAgB+E,GAAA,KAAA,CAAA,CAAA;AAAA,IAf/EC,IAAAA,CAAAA,SAe+E,GAfvD,EAeuD,CAAA;AAAA,IAd/EC,IAAAA,CAAAA,QAc+E,GAdvD,CAcuD,CAAA;AAAA,IAb/EzG,IAAAA,CAAAA,OAa+E,GAbxD,CAawD,CAAA;AAAA,IAZ/EK,IAAAA,CAAAA,cAY+E,GAZ/B,EAY+B,CAAA;AAAA,IAV/EqG,IAAAA,CAAAA,YAU+E,GAV1C,IAU0C,CAAA;AAAA,IAT/EC,IAAAA,CAAAA,WAS+E,GATlD,EASkD,CAAA;AAAA,IAP/EhK,IAAAA,CAAAA,SAO+E,GAPnD,EAOmD,CAAA;AAAA,IAN/E5H,IAAAA,CAAAA,OAM+E,GANpD,EAMoD,CAAA;AAAA,IAL/E6R,IAAAA,CAAAA,WAK+E,GALrC,EAKqC,CAAA;AAAA,IAJ/E3D,IAAAA,CAAAA,KAI+E,GAJxD,EAIwD,CAAA;AAGrF0B,IAAAA,UAAU,EAAA,CAAA;AAEV,IAAA,IAAIkC,GAAJ,CAAA;AACA,IAAA,IAAIlG,KAAK,GAAMpL,MAAM,CAAEsP,SAAF,CAArB,CAAA;;AAEA,IAAIlE,IAAAA,KAAK,CAACmG,SAAV,EAAqB;AACpB,MAAA,MAAM,IAAI1R,KAAJ,CAAU,gDAAV,CAAN,CAAA;AACA,KAAA;;AAGDuL,IAAAA,KAAK,CAACmG,SAAN,GAAoB,IAApB,CAbqF;;AAiBrF,IAAA,IAAIC,aAAa,GAAIC,MAAM,CAACC,gBAAP,IAA2BD,MAAM,CAACC,gBAAP,CAAwBtG,KAAxB,EAA+B,IAA/B,CAAhD,CAAA;AACAkG,IAAAA,GAAG,GAAQE,aAAa,CAACG,gBAAd,CAA+B,WAA/B,CAAX,CAlBqF;;AAqBrF,IAAA,MAAM/S,QAAQ,GAAK+N,WAAW,CAAEvB,KAAF,EAASmE,aAAT,CAA9B,CAAA;AACA,IAAK3Q,IAAAA,CAAAA,QAAL,GAAkBA,QAAlB,CAAA;AACA,IAAKwM,IAAAA,CAAAA,KAAL,GAAgBA,KAAhB,CAAA;AACA,IAAA,IAAA,CAAK0E,QAAL,GAAkB1E,KAAK,CAAC0E,QAAN,IAAkB,CAApC,CAAA;AACA,IAAKC,IAAAA,CAAAA,aAAL,GAAsB3E,KAAK,CAACxF,OAAN,CAAc0H,WAAd,OAAgC,QAAtD,CAAA;AACA,IAAA,IAAA,CAAK0C,GAAL,GAAc,MAAA,CAAOrK,IAAP,CAAY2L,GAAZ,CAAd,CAAA;AACA,IAAKrB,IAAAA,CAAAA,OAAL,GAAiB5D,KAAK,CAACjB,KAAD,EAAQ,YAAA,GAAagE,UAArB,CAAtB,CAAA;AACA,IAAA,IAAA,CAAKkB,UAAL,GAAoBlF,KAAK,CAACwG,QAA1B,CA5BqF;;AAgCrF,IAAA,IAAA,CAAKzB,MAAL,GAAc,IAAI0B,MAAJ,CAAW,IAAA,CAAKrS,OAAhB,EAAyB;AAACgI,MAAAA,UAAU,EAAE5I,QAAQ,CAAC4I,UAAAA;AAAtB,KAAzB,CAAd,CAhCqF;;AAmCrF5I,IAAAA,QAAQ,CAACuK,IAAT,GAAgBvK,QAAQ,CAACuK,IAAT,KAAkBvK,QAAQ,CAACmJ,QAAT,KAAsB,CAAtB,GAA0B,QAA1B,GAAqC,OAAvD,CAAhB,CAAA;;AACA,IAAA,IAAI,OAAOnJ,QAAQ,CAACoJ,YAAhB,KAAiC,SAArC,EAAgD;AAC/CpJ,MAAAA,QAAQ,CAACoJ,YAAT,GAAwBpJ,QAAQ,CAACuK,IAAT,KAAkB,OAA1C,CAAA;AACA,KAAA;;AAED,IAAA,IAAI,OAAOvK,QAAQ,CAACkL,eAAhB,KAAoC,SAAxC,EAAmD;AAClDlL,MAAAA,QAAQ,CAACkL,eAAT,GAA2BlL,QAAQ,CAACuK,IAAT,KAAkB,OAA7C,CAAA;AACA,KA1CoF;;;AA6CrF,IAAA,IAAIzG,MAAM,GAAG9D,QAAQ,CAAC+I,YAAtB,CAAA;;AACA,IAAA,IAAI,OAAOjF,MAAP,KAAkB,UAAtB,EAAkC;AAEjC,MAAA,IAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC/BA,QAAAA,MAAM,GAAG,IAAIiC,MAAJ,CAAWjC,MAAX,CAAT,CAAA;AACA,OAAA;;AAED,MAAIA,IAAAA,MAAM,YAAYiC,MAAtB,EAA8B;AAC7B/F,QAAAA,QAAQ,CAAC+I,YAAT,GAAyByD,KAAD,IAAY1I,MAAD,CAAmBiD,IAAnB,CAAwByF,KAAxB,CAAnC,CAAA;AACA,OAFD,MAEK;AACJxM,QAAAA,QAAQ,CAAC+I,YAAT,GAAyBuC,KAAD,IAAW;AAClC,UAAO,OAAA,IAAA,CAAKtL,QAAL,CAAcqJ,UAAd,IAA4B,CAAC,IAAKzI,CAAAA,OAAL,CAAa0K,KAAb,CAApC,CAAA;AACA,SAFD,CAAA;AAGA,OAAA;AACD,KAAA;;AAGD,IAAA,IAAA,CAAKhL,iBAAL,CAAuBN,QAAQ,CAACF,OAAhC,CAAA,CAAA;AACA,IAAA,IAAA,CAAKoT,cAAL,EAAA,CAAA;AACA,IAAKC,IAAAA,CAAAA,cAAL,GAhEqF;;AAoErF,IAAA,MAAMhP,OAAO,GAAK/C,MAAM,CAAC,OAAD,CAAxB,CAAA;AACA,IAAA,MAAM0P,OAAO,GAAK1P,MAAM,CAAC,OAAD,CAAxB,CAAA;;AACA,IAAA,MAAMyP,QAAQ,GAAK,IAAA,CAAKuC,OAAL,CAAa,UAAb,CAAnB,CAAA;;AACA,IAAA,MAAMrC,gBAAgB,GAAG3P,MAAM,CAAE,oCAAF,CAA/B,CAAA;AAEA,IAAM6B,MAAAA,OAAO,GAAK,IAAKuJ,CAAAA,KAAL,CAAWoB,YAAX,CAAwB,OAAxB,CAAA,IAAoC,EAAtD,CAAA;AACA,IAAA,MAAMyF,SAAS,GAAKrT,QAAQ,CAACuK,IAA7B,CAAA;AAEA,IAAA,IAAIqG,aAAJ,CAAA;AAGA7N,IAAAA,UAAU,CAAEoB,OAAF,EAAWnE,QAAQ,CAACwK,YAApB,EAAkCvH,OAAlC,EAA2CoQ,SAA3C,CAAV,CAAA;AAGAtQ,IAAAA,UAAU,CAAC+N,OAAD,EAAS9Q,QAAQ,CAACyK,YAAlB,CAAV,CAAA;AACAqD,IAAAA,MAAM,CAAE3J,OAAF,EAAW2M,OAAX,CAAN,CAAA;AAGA/N,IAAAA,UAAU,CAAC8N,QAAD,EAAW7Q,QAAQ,CAAC0K,aAApB,EAAmC2I,SAAnC,CAAV,CAAA;;AACA,IAAIrT,IAAAA,QAAQ,CAACgL,qBAAb,EAAoC;AACnCjI,MAAAA,UAAU,CAAE8N,QAAF,EAAY5N,OAAZ,CAAV,CAAA;AACA,KAAA;;AAGDF,IAAAA,UAAU,CAACgO,gBAAD,EAAmB/Q,QAAQ,CAAC2K,oBAA5B,CAAV,CAAA;AACAmD,IAAAA,MAAM,CAAE+C,QAAF,EAAYE,gBAAZ,CAAN,CAAA;AAEA3P,IAAAA,MAAM,CAAEpB,QAAQ,CAAC8K,cAAT,IAA2B3G,OAA7B,CAAN,CAA6CwC,WAA7C,CAA0DkK,QAA1D,EA/FqF;;AAmGrF,IAAA,IAAIrP,YAAY,CAACxB,QAAQ,CAAC+K,YAAV,CAAhB,EAAyC;AACxC6F,MAAAA,aAAa,GAAIxP,MAAM,CAACpB,QAAQ,CAAC+K,YAAV,CAAvB,CADwC;;AAIxC,MAAI5F,IAAAA,KAAK,GAAG,CAAC,aAAD,EAAe,gBAAf,EAAgC,cAAhC,CAAZ,CAAA;AACAjE,MAAAA,SAAO,CAACiE,KAAD,EAAQE,IAAD,IAAiB;AAC9B,QAAA,IAAImH,KAAK,CAACoB,YAAN,CAAmBvI,IAAnB,CAAJ,EAA8B;AAC7BH,UAAAA,OAAO,CAAC0L,aAAD,EAAe;AAAC,YAAA,CAACvL,IAAD,GAAOmH,KAAK,CAACoB,YAAN,CAAmBvI,IAAnB,CAAA;AAAR,WAAf,CAAP,CAAA;AACA,SAAA;AACD,OAJM,CAAP,CAAA;AAMAuL,MAAAA,aAAa,CAACM,QAAd,GAAyB,CAAC,CAA1B,CAAA;AACAJ,MAAAA,OAAO,CAACnK,WAAR,CAAqBiK,aAArB,CAAA,CAAA;AACA,MAAA,IAAA,CAAKI,UAAL,GAAmBJ,aAAnB,CAbwC;AAgBxC,KAhBD,MAgBM,IAAI5Q,QAAQ,CAAC+K,YAAb,EAA2B;AAChC6F,MAAAA,aAAa,GAAIxP,MAAM,CAAEpB,QAAQ,CAAC+K,YAAX,CAAvB,CAAA;AACA,MAAKiG,IAAAA,CAAAA,UAAL,GAAmBJ,aAAnB,CAAA;AAEA,KAJK,MAID;AACJA,MAAAA,aAAa,GAAIxP,MAAM,CAAC,UAAD,CAAvB,CAAA;AACA,MAAK4P,IAAAA,CAAAA,UAAL,GAAmBF,OAAnB,CAAA;AACA,KAAA;;AAED,IAAK3M,IAAAA,CAAAA,OAAL,GAAiBA,OAAjB,CAAA;AACA,IAAK0M,IAAAA,CAAAA,QAAL,GAAkBA,QAAlB,CAAA;AACA,IAAKE,IAAAA,CAAAA,gBAAL,GAAwBA,gBAAxB,CAAA;AACA,IAAKD,IAAAA,CAAAA,OAAL,GAAkBA,OAAlB,CAAA;AACA,IAAKF,IAAAA,CAAAA,aAAL,GAAsBA,aAAtB,CAAA;AAEA,IAAA,IAAA,CAAK0C,KAAL,EAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACCA,EAAAA,KAAK,GAAE;AAEN,IAAM5T,MAAAA,IAAI,GAAG,IAAb,CAAA;AACA,IAAA,MAAMM,QAAQ,GAAMN,IAAI,CAACM,QAAzB,CAAA;AACA,IAAA,MAAM4Q,aAAa,GAAKlR,IAAI,CAACkR,aAA7B,CAAA;AACA,IAAA,MAAMC,QAAQ,GAAMnR,IAAI,CAACmR,QAAzB,CAAA;AACA,IAAA,MAAME,gBAAgB,GAAIrR,IAAI,CAACqR,gBAA/B,CAAA;AACA,IAAA,MAAM5M,OAAO,GAAMzE,IAAI,CAACyE,OAAxB,CAAA;AACA,IAAA,MAAM2M,OAAO,GAAMpR,IAAI,CAACoR,OAAxB,CAAA;AACA,IAAA,MAAMtE,KAAK,GAAO9M,IAAI,CAAC8M,KAAvB,CAAA;AACA,IAAA,MAAMwE,UAAU,GAAKtR,IAAI,CAACsR,UAA1B,CAAA;AACA,IAAA,MAAMuC,aAAa,GAAK;AAAEC,MAAAA,OAAO,EAAE,IAAA;AAAX,KAAxB,CAAA;AACA,IAAA,MAAMC,SAAS,GAAM/T,IAAI,CAAC2R,OAAL,GAAc,cAAnC,CAAA;AAGAnM,IAAAA,OAAO,CAAC6L,gBAAD,EAAkB;AACxBrD,MAAAA,EAAE,EAAE+F,SAAAA;AADoB,KAAlB,CAAP,CAAA;AAIAvO,IAAAA,OAAO,CAAC8L,UAAD,EAAY;AAClB0C,MAAAA,IAAI,EAAC,UADa;AAElB,MAAA,eAAA,EAAgB,SAFE;AAGlB,MAAA,eAAA,EAAgB,OAHE;AAIlB,MAAgBD,eAAAA,EAAAA,SAAAA;AAJE,KAAZ,CAAP,CAAA;AAOA,IAAME,MAAAA,UAAU,GAAGlG,KAAK,CAACuD,UAAD,EAAYtR,IAAI,CAAC2R,OAAL,GAAe,aAA3B,CAAxB,CAAA;AACA,IAAMhQ,MAAAA,KAAK,GAAK,aAAA,GAAca,WAAW,CAACxC,IAAI,CAAC2R,OAAN,CAAzB,GAAwC,IAAxD,CAAA;AACA,IAAA,MAAMuC,KAAK,GAAKlS,QAAQ,CAACM,aAAT,CAAuBX,KAAvB,CAAhB,CAAA;AACA,IAAMwS,MAAAA,WAAW,GAAGnU,IAAI,CAACoU,KAAL,CAAWC,IAAX,CAAgBrU,IAAhB,CAApB,CAAA;;AACA,IAAA,IAAIkU,KAAJ,EAAW;AACV5G,MAAAA,QAAQ,CAAC4G,KAAD,EAAO,OAAP,EAAgBC,WAAhB,CAAR,CAAA;AACA3O,MAAAA,OAAO,CAAC0O,KAAD,EAAO;AAACI,QAAAA,GAAG,EAACL,UAAAA;AAAL,OAAP,CAAP,CAAA;AACA,MAAMM,MAAAA,QAAQ,GAAGxG,KAAK,CAACmG,KAAD,EAAOlU,IAAI,CAAC2R,OAAL,GAAa,WAApB,CAAtB,CAAA;AACAnM,MAAAA,OAAO,CAAC8L,UAAD,EAAY;AAAC,QAAkBiD,iBAAAA,EAAAA,QAAAA;AAAnB,OAAZ,CAAP,CAAA;AACA/O,MAAAA,OAAO,CAAC6L,gBAAD,EAAkB;AAAC,QAAkBkD,iBAAAA,EAAAA,QAAAA;AAAnB,OAAlB,CAAP,CAAA;AACA,KAAA;;AAED9P,IAAAA,OAAO,CAACrB,KAAR,CAAcoR,KAAd,GAAsB1H,KAAK,CAAC1J,KAAN,CAAYoR,KAAlC,CAAA;;AAEA,IAAA,IAAIxU,IAAI,CAACI,OAAL,CAAaC,KAAb,CAAmBX,MAAvB,EAA+B;AAC9B,MAAA,MAAM+U,eAAe,GAAG,SAAYzU,GAAAA,IAAI,CAACI,OAAL,CAAaC,KAAb,CAAmBqU,IAAnB,CAAwB,UAAxB,CAApC,CAAA;AACArR,MAAAA,UAAU,CAAE,CAACoB,OAAD,EAAS0M,QAAT,CAAF,EAAsBsD,eAAtB,CAAV,CAAA;AACA,KAAA;;AAED,IAAA,IAAI,CAACnU,QAAQ,CAACmJ,QAAT,KAAsB,IAAtB,IAA8BnJ,QAAQ,CAACmJ,QAAT,GAAoB,CAAnD,KAAyDzJ,IAAI,CAACyR,aAAlE,EAAiF;AAChFjM,MAAAA,OAAO,CAACsH,KAAD,EAAO;AAAC6H,QAAAA,QAAQ,EAAC,UAAA;AAAV,OAAP,CAAP,CAAA;AACA,KAAA;;AAED,IAAIrU,IAAAA,QAAQ,CAACiL,WAAb,EAA0B;AACzB/F,MAAAA,OAAO,CAAC0L,aAAD,EAAe;AAAC3F,QAAAA,WAAW,EAACjL,QAAQ,CAACiL,WAAAA;AAAtB,OAAf,CAAP,CAAA;AACA,KAnDK;;;AAsDN,IAAI,IAAA,CAACjL,QAAQ,CAAC0I,OAAV,IAAqB1I,QAAQ,CAACyI,SAAlC,EAA6C;AAC5CzI,MAAAA,QAAQ,CAAC0I,OAAT,GAAmB,IAAI3C,MAAJ,CAAW,MAAA,GAASuO,YAAY,CAACtU,QAAQ,CAACyI,SAAV,CAArB,GAA4C,OAAvD,CAAnB,CAAA;AACA,KAxDK;AA2DN;;;AACA,IAAA,IAAIzI,QAAQ,CAACuU,IAAT,IAAiBvU,QAAQ,CAAC0J,YAA9B,EAA4C;AAC3C1J,MAAAA,QAAQ,CAACuU,IAAT,GAAgB7I,YAAY,CAAC1L,QAAQ,CAACuU,IAAV,EAAevU,QAAQ,CAAC0J,YAAxB,CAA5B,CAAA;AACA,KAAA;;AAEDhK,IAAAA,IAAI,CAACkR,aAAL,CAAmBvE,IAAnB,GAA0BG,KAAK,CAACH,IAAhC,CAAA;AAEAW,IAAAA,QAAQ,CAAC6D,QAAD,EAAU,WAAV,EAAuB,MAAM;AACpCnR,MAAAA,IAAI,CAACwS,WAAL,GAAmB,KAAnB,CAAA;AACA,KAFO,CAAR,CAAA;AAIAlF,IAAAA,QAAQ,CAAC6D,QAAD,EAAU,YAAV,EAAyB2D,CAAD,IAAO;AAEtC,MAAIC,IAAAA,YAAY,GAAGzQ,WAAW,CAACwQ,CAAC,CAACvQ,MAAH,EAA0B,mBAA1B,EAA+C4M,QAA/C,CAA9B,CAAA;AACA,MAAI4D,IAAAA,YAAJ,EAAmB/U,IAAI,CAACgV,aAAL,CAAoBF,CAApB,EAAqCC,YAArC,CAAA,CAAA;AAEnB,KALO,EAKL;AAACE,MAAAA,OAAO,EAAC,IAAA;AAAT,KALK,CAAR,CAtEM;;AA8EN3H,IAAAA,QAAQ,CAAC6D,QAAD,EAAU,OAAV,EAAmBhE,GAAD,IAAS;AAClC,MAAM8B,MAAAA,MAAM,GAAG3K,WAAW,CAAC6I,GAAG,CAAC5I,MAAL,EAA4B,mBAA5B,CAA1B,CAAA;;AACA,MAAA,IAAI0K,MAAJ,EAAY;AACXjP,QAAAA,IAAI,CAACkV,cAAL,CAAqB/H,GAArB,EAAwC8B,MAAxC,CAAA,CAAA;AACA/B,QAAAA,cAAc,CAACC,GAAD,EAAK,IAAL,CAAd,CAAA;AACA,OAAA;AACD,KANO,CAAR,CAAA;AAQAG,IAAAA,QAAQ,CAAC8D,OAAD,EAAS,OAAT,EAAmBjE,GAAD,IAAS;AAElC,MAAI4H,IAAAA,YAAY,GAAGzQ,WAAW,CAAE6I,GAAG,CAAC5I,MAAN,EAA6B,gBAA7B,EAA+C6M,OAA/C,CAA9B,CAAA;;AACA,MAAI2D,IAAAA,YAAY,IAAI/U,IAAI,CAACmV,YAAL,CAAkBhI,GAAlB,EAAqC4H,YAArC,CAApB,EAAmF;AAClF7H,QAAAA,cAAc,CAACC,GAAD,EAAK,IAAL,CAAd,CAAA;AACA,QAAA,OAAA;AACA,OANiC;;;AASlC,MAAA,IAAI+D,aAAa,CAACtF,KAAd,IAAuB,EAA3B,EAA+B;AAC9B,QAAA,OAAA;AACA,OAAA;;AAED5L,MAAAA,IAAI,CAACoV,OAAL,EAAA,CAAA;AACAlI,MAAAA,cAAc,CAACC,GAAD,EAAK,IAAL,CAAd,CAAA;AACA,KAfO,CAAR,CAtFM;;AAyGNG,IAAAA,QAAQ,CAACgE,UAAD,EAAY,SAAZ,EAAyBwD,CAAD,IAAO9U,IAAI,CAACqV,SAAL,CAAeP,CAAf,CAA/B,CAAR,CAzGM;;AA4GNxH,IAAAA,QAAQ,CAAC4D,aAAD,EAAe,UAAf,EAA4B4D,CAAD,IAAO9U,IAAI,CAACsV,UAAL,CAAgBR,CAAhB,CAAlC,CAAR,CAAA;AACAxH,IAAAA,QAAQ,CAAC4D,aAAD,EAAe,OAAf,EAA0B4D,CAAD,IAAO9U,IAAI,CAACuV,OAAL,CAAaT,CAAb,CAAhC,CAAR,CAAA;AACAxH,IAAAA,QAAQ,CAACgE,UAAD,EAAY,MAAZ,EAAuBwD,CAAD,IAAO9U,IAAI,CAACwV,MAAL,CAAYV,CAAZ,CAA7B,CAAR,CAAA;AACAxH,IAAAA,QAAQ,CAACgE,UAAD,EAAY,OAAZ,EAAuBwD,CAAD,IAAO9U,IAAI,CAACyV,OAAL,CAAaX,CAAb,CAA7B,CAAR,CAAA;AACAxH,IAAAA,QAAQ,CAAC4D,aAAD,EAAe,OAAf,EAA0B4D,CAAD,IAAO9U,IAAI,CAAC0V,OAAL,CAAaZ,CAAb,CAAhC,CAAR,CAAA;;AAGA,IAAMa,MAAAA,aAAa,GAAIxI,GAAD,IAAe;AAEpC;AACA;AACA,MAAA,MAAM5I,MAAM,GAAG4I,GAAG,CAACyI,YAAJ,EAAA,CAAmB,CAAnB,CAAf,CAAA;;AACA,MAAA,IAAI,CAACnR,OAAO,CAACC,QAAR,CAAiBH,MAAjB,CAAD,IAA4C,CAAC4M,QAAQ,CAACzM,QAAT,CAAkBH,MAAlB,CAAjD,EAA2F;AAC1F,QAAIvE,IAAAA,IAAI,CAACoS,SAAT,EAAoB;AACnBpS,UAAAA,IAAI,CAAC6V,IAAL,EAAA,CAAA;AACA,SAAA;;AACD7V,QAAAA,IAAI,CAAC8V,UAAL,EAAA,CAAA;AACA,QAAA,OAAA;AACA,OAXmC;AAepC;AACA;AACA;;;AACA,MAAA,IAAIvR,MAAM,IAAI2M,aAAV,IAA2BlR,IAAI,CAAC8R,MAApC,EAA4C;AAC3C3E,QAAAA,GAAG,CAACE,eAAJ,EAAA,CAD2C;AAI3C,OAJD,MAIK;AACJH,QAAAA,cAAc,CAACC,GAAD,EAAK,IAAL,CAAd,CAAA;AACA,OAAA;AAED,KA1BD,CAAA;;AA4BA,IAAM4I,MAAAA,UAAU,GAAG,MAAM;AACxB,MAAI/V,IAAAA,IAAI,CAAC8R,MAAT,EAAiB;AAChB9R,QAAAA,IAAI,CAACgW,gBAAL,EAAA,CAAA;AACA,OAAA;AACD,KAJD,CAAA;;AAOA1I,IAAAA,QAAQ,CAACtL,QAAD,EAAU,WAAV,EAAuB2T,aAAvB,CAAR,CAAA;AACArI,IAAAA,QAAQ,CAAC6F,MAAD,EAAQ,QAAR,EAAkB4C,UAAlB,EAA8BlC,aAA9B,CAAR,CAAA;AACAvG,IAAAA,QAAQ,CAAC6F,MAAD,EAAQ,QAAR,EAAkB4C,UAAlB,EAA8BlC,aAA9B,CAAR,CAAA;;AAEA,IAAKjC,IAAAA,CAAAA,QAAL,GAAgB,MAAM;AACrB5P,MAAAA,QAAQ,CAACiU,mBAAT,CAA6B,WAA7B,EAAyCN,aAAzC,CAAA,CAAA;AACAxC,MAAAA,MAAM,CAAC8C,mBAAP,CAA2B,QAA3B,EAAoCF,UAApC,CAAA,CAAA;AACA5C,MAAAA,MAAM,CAAC8C,mBAAP,CAA2B,QAA3B,EAAoCF,UAApC,CAAA,CAAA;AACA,MAAI7B,IAAAA,KAAJ,EAAYA,KAAK,CAAC+B,mBAAN,CAA0B,OAA1B,EAAkC9B,WAAlC,CAAA,CAAA;AACZ,KALD,CA1JM;AAkKN;;;AACA,IAAA,IAAA,CAAK+B,cAAL,GAAsB;AACrBhU,MAAAA,SAAS,EAAG4K,KAAK,CAAC5K,SADG;AAErBsP,MAAAA,QAAQ,EAAG1E,KAAK,CAAC0E,QAAAA;AAFI,KAAtB,CAAA;AAMA1E,IAAAA,KAAK,CAAC0E,QAAN,GAAiB,CAAC,CAAlB,CAAA;AACA1E,IAAAA,KAAK,CAACqJ,qBAAN,CAA4B,UAA5B,EAAwCnW,IAAI,CAACyE,OAA7C,CAAA,CAAA;AAEAzE,IAAAA,IAAI,CAACoW,IAAL,CAAU,KAAV,CAAA,CAAA;AACA9V,IAAAA,QAAQ,CAAC8O,KAAT,GAAiB,EAAjB,CAAA;AACA,IAAO9O,OAAAA,QAAQ,CAACwI,SAAhB,CAAA;AACA,IAAOxI,OAAAA,QAAQ,CAACY,OAAhB,CAAA;AAEAoM,IAAAA,QAAQ,CAACR,KAAD,EAAO,SAAP,EAAkB,MAAM;AAC/B,MAAI9M,IAAAA,IAAI,CAACkS,OAAT,EAAkB;AACjBlS,QAAAA,IAAI,CAACkS,OAAL,GAAe,KAAf,CAAA;AACAlS,QAAAA,IAAI,CAACiS,SAAL,GAAiB,IAAjB,CAAA;AACAjS,QAAAA,IAAI,CAACqW,YAAL,EAAA,CAAA;AACA,OAAA;AACD,KANO,CAAR,CAAA;AAQArW,IAAAA,IAAI,CAACsW,mBAAL,EAAA,CAAA;AACAtW,IAAAA,IAAI,CAACuW,YAAL,EAAA,CAAA;AACAvW,IAAAA,IAAI,CAACwW,KAAL,CAAW,KAAX,CAAA,CAAA;AACAxW,IAAAA,IAAI,CAAC8V,UAAL,EAAA,CAAA;AACA9V,IAAAA,IAAI,CAACsS,OAAL,GAAe,IAAf,CAAA;;AAEA,IAAIxF,IAAAA,KAAK,CAACmD,QAAV,EAAoB;AACnBjQ,MAAAA,IAAI,CAACyW,OAAL,EAAA,CAAA;AACA,KAFD,MAEK;AACJzW,MAAAA,IAAI,CAAC0W,MAAL,EAAA,CADI;AAEJ,KAAA;;AAED1W,IAAAA,IAAI,CAACb,EAAL,CAAQ,QAAR,EAAkB,KAAKwX,QAAvB,CAAA,CAAA;AAEAtT,IAAAA,UAAU,CAACyJ,KAAD,EAAO,aAAP,EAAqB,sBAArB,CAAV,CAAA;AACA9M,IAAAA,IAAI,CAACF,OAAL,CAAa,YAAb,EAxMM;;AA2MN,IAAA,IAAIQ,QAAQ,CAACwJ,OAAT,KAAqB,IAAzB,EAA+B;AAC9B9J,MAAAA,IAAI,CAAC8J,OAAL,EAAA,CAAA;AACA,KAAA;AAED,GAAA;AAGD;AACD;AACA;AACA;;;AACC8M,EAAAA,YAAY,CAAC1V,OAAmB,GAAG,EAAvB,EAA2B4H,SAAqB,GAAG,EAAnD,EAAsD;AAEjE;AACA,IAAA,IAAA,CAAK+N,UAAL,CAAgB3V,OAAhB,CAAA,CAHiE;;AAOjEM,IAAAA,SAAO,CAAEsH,SAAF,EAAcuH,QAAD,IAAwB;AAC3C,MAAKyG,IAAAA,CAAAA,mBAAL,CAAyBzG,QAAzB,CAAA,CAAA;AACA,KAFM,CAAP,CAAA;AAGA,GAAA;AAED;AACD;AACA;;;AACCoD,EAAAA,cAAc,GAAG;AAChB,IAAIzT,IAAAA,IAAI,GAAG,IAAX,CAAA;AACA,IAAA,IAAIyO,WAAW,GAAGzO,IAAI,CAACM,QAAL,CAAc+J,UAAhC,CAAA;AACA,IAAA,IAAIuE,cAAc,GAAG5O,IAAI,CAACM,QAAL,CAAciK,kBAAnC,CAAA;AAEA,IAAA,IAAIwM,SAAS,GAAG;AACf,MAAA,UAAA,EAAatQ,IAAD,IAAoB;AAC/B,QAAA,IAAI4J,QAAQ,GAAGrO,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAf,CAAA;AACAoO,QAAAA,QAAQ,CAAC1J,SAAT,GAAqB,UAArB,CAAA;AACA0J,QAAAA,QAAQ,CAACpJ,WAAT,CAAqBR,IAAI,CAACvF,OAA1B,CAAA,CAAA;AACA,QAAA,OAAOmP,QAAP,CAAA;AAEA,OAPc;AAQf,MAAA,iBAAA,EAAmB,CAAC5J,IAAD,EAAiBuQ,MAAjB,KAA+C;AACjE,QAAO,OAAA,+BAAA,GAAkCA,MAAM,CAACvQ,IAAI,CAACmI,cAAD,CAAL,CAAxC,GAAiE,QAAxE,CAAA;AACA,OAVc;AAWf,MAAA,QAAA,EAAU,CAACnI,IAAD,EAAiBuQ,MAAjB,KAA+C;AACxD,QAAO,OAAA,OAAA,GAAUA,MAAM,CAACvQ,IAAI,CAACgI,WAAD,CAAL,CAAhB,GAAsC,QAA7C,CAAA;AACA,OAbc;AAcf,MAAA,MAAA,EAAQ,CAAChI,IAAD,EAAiBuQ,MAAjB,KAA+C;AACtD,QAAO,OAAA,OAAA,GAAUA,MAAM,CAACvQ,IAAI,CAACgI,WAAD,CAAL,CAAhB,GAAsC,QAA7C,CAAA;AACA,OAhBc;AAiBf,MAAA,eAAA,EAAiB,CAAChI,IAAD,EAAiBuQ,MAAjB,KAA+C;AAC/D,QAAO,OAAA,kCAAA,GAAqCA,MAAM,CAACvQ,IAAI,CAACqG,KAAN,CAA3C,GAA0D,yBAAjE,CAAA;AACA,OAnBc;AAoBf,MAAA,YAAA,EAAa,MAAM;AAClB,QAAA,OAAO,gDAAP,CAAA;AACA,OAtBc;AAuBf,MAAA,SAAA,EAAU,MAAM;AACf,QAAA,OAAO,6BAAP,CAAA;AACA,OAzBc;AA0Bf,MAAc,aAAA,EAAA,MAAM,EA1BL;AA2Bf,MAAA,UAAA,EAAW,MAAM;AAChB,QAAA,OAAO,aAAP,CAAA;AACA,OAAA;AA7Bc,KAAhB,CAAA;AAiCA9M,IAAAA,IAAI,CAACM,QAAL,CAAcoL,MAAd,GAAuBxI,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB4T,SAAlB,EAA6B/W,IAAI,CAACM,QAAL,CAAcoL,MAA3C,CAAvB,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACC8H,EAAAA,cAAc,GAAG;AAChB,IAAI3S,IAAAA,GAAJ,EAASF,EAAT,CAAA;AACA,IAAA,IAAIsW,SAA+B,GAAG;AACrC,MAAA,YAAA,EAAoB,cADiB;AAErC,MAAA,QAAA,EAAoB,UAFiB;AAGrC,MAAA,UAAA,EAAoB,WAHiB;AAIrC,MAAA,aAAA,EAAoB,cAJiB;AAKrC,MAAA,aAAA,EAAoB,cALiB;AAMrC,MAAA,OAAA,EAAoB,SANiB;AAOrC,MAAA,YAAA,EAAoB,aAPiB;AAQrC,MAAA,eAAA,EAAoB,gBARiB;AASrC,MAAA,cAAA,EAAoB,eATiB;AAUrC,MAAA,cAAA,EAAoB,kBAViB;AAWrC,MAAA,iBAAA,EAAoB,qBAXiB;AAYrC,MAAA,gBAAA,EAAoB,oBAZiB;AAarC,MAAA,eAAA,EAAoB,gBAbiB;AAcrC,MAAA,gBAAA,EAAoB,iBAdiB;AAerC,MAAA,MAAA,EAAoB,QAfiB;AAgBrC,MAAA,MAAA,EAAoB,QAhBiB;AAiBrC,MAAA,OAAA,EAAoB,SAjBiB;AAkBrC,MAAoB,MAAA,EAAA,QAAA;AAlBiB,KAAtC,CAAA;;AAqBA,IAAKpW,KAAAA,GAAL,IAAYoW,SAAZ,EAAuB;AAEtBtW,MAAAA,EAAE,GAAG,IAAKL,CAAAA,QAAL,CAAc2W,SAAS,CAACpW,GAAD,CAAvB,CAAL,CAAA;AACA,MAAA,IAAIF,EAAJ,EAAQ,IAAA,CAAKxB,EAAL,CAAQ0B,GAAR,EAAaF,EAAb,CAAA,CAAA;AAER,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;;;AACCyV,EAAAA,IAAI,CAACc,YAAoB,GAAC,IAAtB,EAAgC;AACnC,IAAMlX,MAAAA,IAAI,GAAI,IAAd,CAAA;AACA,IAAMM,MAAAA,QAAQ,GAAG4W,YAAY,GAAG7I,WAAW,CAAErO,IAAI,CAAC8M,KAAP,EAAc;AAAC/D,MAAAA,SAAS,EAAC/I,IAAI,CAACM,QAAL,CAAcyI,SAAAA;AAAzB,KAAd,CAAd,GAAqG/I,IAAI,CAACM,QAAvI,CAAA;AAEAN,IAAAA,IAAI,CAAC4W,YAAL,CAAkBtW,QAAQ,CAACY,OAA3B,EAAmCZ,QAAQ,CAACwI,SAA5C,CAAA,CAAA;AAEA9I,IAAAA,IAAI,CAACmX,QAAL,CAAc7W,QAAQ,CAAC8O,KAAT,IAAgB,EAA9B,EAAiC,IAAjC,CAAA,CANmC;;AAQnCpP,IAAAA,IAAI,CAACoX,SAAL,GAAiB,IAAjB,CARmC;AASnC,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACChC,EAAAA,OAAO,GAAQ;AACd,IAAIpV,IAAAA,IAAI,GAAG,IAAX,CAAA;;AAEA,IAAA,IAAIA,IAAI,CAAC8S,WAAL,CAAiBpT,MAAjB,GAA0B,CAA9B,EAAiC;AAChCM,MAAAA,IAAI,CAACqX,gBAAL,EAAA,CAAA;AACArX,MAAAA,IAAI,CAACoU,KAAL,EAAA,CAAA;AACA,MAAA,OAAA;AACA,KAAA;;AAED,IAAA,IAAIpU,IAAI,CAACoS,SAAL,IAAkBpS,IAAI,CAAC8R,MAA3B,EAAmC;AAClC9R,MAAAA,IAAI,CAAC6V,IAAL,EAAA,CAAA;AACA,KAFD,MAEO;AACN7V,MAAAA,IAAI,CAACoU,KAAL,EAAA,CAAA;AACA,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;;;AACCkD,EAAAA,WAAW,GAAQ,EAAE;AAErB;AACD;AACA;AACA;AACA;;;AACCX,EAAAA,QAAQ,GAAG;AACVjU,IAAAA,YAAY,CAAC,IAAA,CAAKoK,KAAN,EAAa,OAAb,CAAZ,CAAA;AACApK,IAAAA,YAAY,CAAC,IAAA,CAAKoK,KAAN,EAAa,QAAb,CAAZ,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACC4I,EAAAA,OAAO,CAACZ,CAAD,EAAkC;AACxC,IAAI9U,IAAAA,IAAI,GAAG,IAAX,CAAA;;AAEA,IAAA,IAAIA,IAAI,CAACqS,aAAL,IAAsBrS,IAAI,CAACmS,QAA/B,EAAyC;AACxCjF,MAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA,MAAA,OAAA;AACA,KANuC;AASxC;;;AACA,IAAA,IAAI,CAAC9U,IAAI,CAACM,QAAL,CAAc0I,OAAnB,EAA4B;AAC3B,MAAA,OAAA;AACA,KAZuC;;;AAexCuD,IAAAA,UAAU,CAAC,MAAM;AAChB,MAAA,IAAIgL,UAAU,GAAGvX,IAAI,CAACwX,UAAL,EAAjB,CAAA;;AACA,MAAI,IAAA,CAACD,UAAU,CAAC/Q,KAAX,CAAiBxG,IAAI,CAACM,QAAL,CAAc0I,OAA/B,CAAL,EAA6C;AAC5C,QAAA,OAAA;AACA,OAAA;;AAED,MAAA,IAAIyO,UAAU,GAAGF,UAAU,CAACpV,IAAX,EAAA,CAAkBtD,KAAlB,CAAwBmB,IAAI,CAACM,QAAL,CAAc0I,OAAtC,CAAjB,CAAA;AACAxH,MAAAA,SAAO,CAAEiW,UAAF,EAAeC,KAAD,IAAkB;AAEtC,QAAA,MAAMC,IAAI,GAAGhM,QAAQ,CAAC+L,KAAD,CAArB,CAAA;;AACA,QAAA,IAAIC,IAAJ,EAAU;AACT,UAAA,IAAI,IAAKzW,CAAAA,OAAL,CAAawW,KAAb,CAAJ,EAAyB;AACxB1X,YAAAA,IAAI,CAAC4X,OAAL,CAAaF,KAAb,CAAA,CAAA;AACA,WAFD,MAEK;AACJ1X,YAAAA,IAAI,CAAC6X,UAAL,CAAgBH,KAAhB,CAAA,CAAA;AACA,WAAA;AACD,SAAA;AACD,OAVM,CAAP,CAAA;AAWA,KAlBS,EAkBP,CAlBO,CAAV,CAAA;AAoBA,GAAA;AAED;AACD;AACA;AACA;;;AACCpC,EAAAA,UAAU,CAACR,CAAD,EAAuB;AAChC,IAAI9U,IAAAA,IAAI,GAAG,IAAX,CAAA;;AACA,IAAGA,IAAAA,IAAI,CAACmS,QAAR,EAAiB;AAChBjF,MAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA,MAAA,OAAA;AACA,KAAA;;AACD,IAAA,IAAIgD,SAAS,GAAGC,MAAM,CAACC,YAAP,CAAoBlD,CAAC,CAACmD,OAAF,IAAanD,CAAC,CAACoD,KAAnC,CAAhB,CAAA;;AACA,IAAIlY,IAAAA,IAAI,CAACM,QAAL,CAAc6I,MAAd,IAAwBnJ,IAAI,CAACM,QAAL,CAAcuK,IAAd,KAAuB,OAA/C,IAA0DiN,SAAS,KAAK9X,IAAI,CAACM,QAAL,CAAcyI,SAA1F,EAAqG;AACpG/I,MAAAA,IAAI,CAAC6X,UAAL,EAAA,CAAA;AACA3K,MAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA,MAAA,OAAA;AACA,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;;;AACCO,EAAAA,SAAS,CAACP,CAAD,EAAuB;AAC/B,IAAI9U,IAAAA,IAAI,GAAG,IAAX,CAAA;AAEAA,IAAAA,IAAI,CAACwS,WAAL,GAAmB,IAAnB,CAAA;;AAEA,IAAIxS,IAAAA,IAAI,CAACmS,QAAT,EAAmB;AAClB,MAAA,IAAI2C,CAAC,CAACmD,OAAF,KAAcE,OAAlB,EAAqC;AACpCjL,QAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA,OAAA;;AACD,MAAA,OAAA;AACA,KAAA;;AAED,IAAQA,QAAAA,CAAC,CAACmD,OAAV;AAEC;AACA,MAAKE,KAAAA,KAAL;AACC,QAAI3K,IAAAA,SAAS,CAAC2K,YAAD,EAAwBrD,CAAxB,CAAb,EAAyC;AACxC,UAAA,IAAI9U,IAAI,CAACkR,aAAL,CAAmBtF,KAAnB,IAA4B,EAAhC,EAAoC;AACnCsB,YAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA9U,YAAAA,IAAI,CAACoY,SAAL,EAAA,CAAA;AACA,YAAA,OAAA;AACA,WAAA;AACD,SAAA;;AACD,QAAA,MAAA;AAED;;AACA,MAAKD,KAAAA,OAAL;AACC,QAAInY,IAAAA,IAAI,CAAC8R,MAAT,EAAiB;AAChB5E,UAAAA,cAAc,CAAC4H,CAAD,EAAG,IAAH,CAAd,CAAA;AACA9U,UAAAA,IAAI,CAACwW,KAAL,EAAA,CAAA;AACA,SAAA;;AACDxW,QAAAA,IAAI,CAACqX,gBAAL,EAAA,CAAA;AACA,QAAA,OAAA;AAED;;AACA,MAAKc,KAAAA,QAAL;AACC,QAAI,IAAA,CAACnY,IAAI,CAAC8R,MAAN,IAAgB9R,IAAI,CAACyS,UAAzB,EAAqC;AACpCzS,UAAAA,IAAI,CAACqY,IAAL,EAAA,CAAA;AACA,SAFD,MAEO,IAAIrY,IAAI,CAAC6S,YAAT,EAAuB;AAC7B,UAAIyF,IAAAA,IAAI,GAAGtY,IAAI,CAACuY,WAAL,CAAiBvY,IAAI,CAAC6S,YAAtB,EAAoC,CAApC,CAAX,CAAA;AACA,UAAA,IAAIyF,IAAJ,EAAUtY,IAAI,CAACwY,eAAL,CAAqBF,IAArB,CAAA,CAAA;AACV,SAAA;;AACDpL,QAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA,QAAA,OAAA;AAED;;AACA,MAAKqD,KAAAA,MAAL;AACC,QAAInY,IAAAA,IAAI,CAAC6S,YAAT,EAAuB;AACtB,UAAA,IAAI4F,IAAI,GAAGzY,IAAI,CAACuY,WAAL,CAAiBvY,IAAI,CAAC6S,YAAtB,EAAoC,CAAC,CAArC,CAAX,CAAA;AACA,UAAA,IAAI4F,IAAJ,EAAUzY,IAAI,CAACwY,eAAL,CAAqBC,IAArB,CAAA,CAAA;AACV,SAAA;;AACDvL,QAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA,QAAA,OAAA;AAED;;AACA,MAAKqD,KAAAA,UAAL;AACC,QAAInY,IAAAA,IAAI,CAAC0Y,SAAL,CAAe1Y,IAAI,CAAC6S,YAApB,CAAJ,EAAuC;AACtC7S,UAAAA,IAAI,CAACkV,cAAL,CAAoBJ,CAApB,EAAsB9U,IAAI,CAAC6S,YAA3B,CAAA,CAAA;AACA3F,UAAAA,cAAc,CAAC4H,CAAD,CAAd,CAFsC;AAKtC,SALD,MAKM,IAAI9U,IAAI,CAACM,QAAL,CAAc6I,MAAd,IAAwBnJ,IAAI,CAAC6X,UAAL,EAA5B,EAA+C;AACpD3K,UAAAA,cAAc,CAAC4H,CAAD,CAAd,CADoD;AAIpD,SAJK,MAIA,IAAI9S,QAAQ,CAAC2W,aAAT,IAA0B3Y,IAAI,CAACkR,aAA/B,IAAgDlR,IAAI,CAAC8R,MAAzD,EAAiE;AACtE5E,UAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA,SAAA;;AAED,QAAA,OAAA;AAED;;AACA,MAAKqD,KAAAA,QAAL;AACCnY,QAAAA,IAAI,CAAC4Y,gBAAL,CAAsB,CAAC,CAAvB,EAA0B9D,CAA1B,CAAA,CAAA;AACA,QAAA,OAAA;AAED;;AACA,MAAKqD,KAAAA,SAAL;AACCnY,QAAAA,IAAI,CAAC4Y,gBAAL,CAAsB,CAAtB,EAAyB9D,CAAzB,CAAA,CAAA;AACA,QAAA,OAAA;AAED;;AACA,MAAKqD,KAAAA,OAAL;AAEC,QAAA,IAAInY,IAAI,CAACM,QAAL,CAAcuJ,WAAlB,EAA+B;AAC9B,UAAI7J,IAAAA,IAAI,CAAC0Y,SAAL,CAAe1Y,IAAI,CAAC6S,YAApB,CAAJ,EAAuC;AACtC7S,YAAAA,IAAI,CAACkV,cAAL,CAAoBJ,CAApB,EAAsB9U,IAAI,CAAC6S,YAA3B,CAAA,CADsC;AAItC;;AACA3F,YAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA,WAAA;;AACD,UAAI9U,IAAAA,IAAI,CAACM,QAAL,CAAc6I,MAAd,IAAwBnJ,IAAI,CAAC6X,UAAL,EAA5B,EAA+C;AAC9C3K,YAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA,WAAA;AACD,SAAA;;AACD,QAAA,OAAA;AAED;;AACA,MAAKqD,KAAAA,aAAL,CAAA;AACA,MAAKA,KAAAA,UAAL;AACCnY,QAAAA,IAAI,CAAC6Y,eAAL,CAAqB/D,CAArB,CAAA,CAAA;AACA,QAAA,OAAA;AA1FF,KAZ+B;;;AA0G/B,IAAA,IAAI9U,IAAI,CAACqS,aAAL,IAAsB,CAAC7E,SAAS,CAAC2K,YAAD,EAAwBrD,CAAxB,CAApC,EAAgE;AAC/D5H,MAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;;;AACCS,EAAAA,OAAO,CAACT,CAAD,EAAkC;AACxC,IAAI9U,IAAAA,IAAI,GAAG,IAAX,CAAA;;AAEA,IAAIA,IAAAA,IAAI,CAACmS,QAAT,EAAmB;AAClB,MAAA,OAAA;AACA,KAAA;;AAED,IAAA,IAAIvG,KAAK,GAAG5L,IAAI,CAACwX,UAAL,EAAZ,CAAA;;AACA,IAAA,IAAIxX,IAAI,CAAC2S,SAAL,KAAmB/G,KAAvB,EAA8B;AAC7B5L,MAAAA,IAAI,CAAC2S,SAAL,GAAiB/G,KAAjB,CAAA;;AAEA,MAAA,IAAI5L,IAAI,CAACM,QAAL,CAAcmL,UAAd,CAAyB5D,IAAzB,CAA8B7H,IAA9B,EAAmC4L,KAAnC,CAAJ,EAA+C;AAC9C5L,QAAAA,IAAI,CAAC6U,IAAL,CAAUjJ,KAAV,CAAA,CAAA;AACA,OAAA;;AAED5L,MAAAA,IAAI,CAAC8Y,cAAL,EAAA,CAAA;AACA9Y,MAAAA,IAAI,CAACF,OAAL,CAAa,MAAb,EAAqB8L,KAArB,CAAA,CAAA;AACA,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCoJ,EAAAA,aAAa,CAAE7H,GAAF,EAAgC8B,MAAhC,EAAyD;AACrE,IAAI,IAAA,IAAA,CAAKuD,WAAT,EAAuB,OAAA;AACvB,IAAA,IAAA,CAAKgG,eAAL,CAAqBvJ,MAArB,EAA6B,KAA7B,CAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACCwG,EAAAA,OAAO,CAACX,CAAD,EAAmC;AACzC,IAAI9U,IAAAA,IAAI,GAAG,IAAX,CAAA;AACA,IAAA,IAAI+Y,UAAU,GAAG/Y,IAAI,CAACoS,SAAtB,CAAA;;AAEA,IAAIpS,IAAAA,IAAI,CAAC+R,UAAT,EAAqB;AACpB/R,MAAAA,IAAI,CAAC6V,IAAL,EAAA,CAAA;AACA3I,MAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA,MAAA,OAAA;AACA,KAAA;;AAED,IAAI9U,IAAAA,IAAI,CAACuS,WAAT,EAAsB,OAAA;AACtBvS,IAAAA,IAAI,CAACoS,SAAL,GAAiB,IAAjB,CAAA;AACA,IAAIpS,IAAAA,IAAI,CAACM,QAAL,CAAcwJ,OAAd,KAA0B,OAA9B,EAAwC9J,IAAI,CAAC8J,OAAL,EAAA,CAAA;AAExC,IAAA,IAAI,CAACiP,UAAL,EAAiB/Y,IAAI,CAACF,OAAL,CAAa,OAAb,CAAA,CAAA;;AAEjB,IAAA,IAAI,CAACE,IAAI,CAAC8S,WAAL,CAAiBpT,MAAtB,EAA8B;AAC7BM,MAAAA,IAAI,CAACgZ,SAAL,EAAA,CAAA;AACAhZ,MAAAA,IAAI,CAAC8Y,cAAL,CAAoB,CAAC,CAAC9Y,IAAI,CAACM,QAAL,CAAcgJ,WAApC,CAAA,CAAA;AACA,KAAA;;AAEDtJ,IAAAA,IAAI,CAACqW,YAAL,EAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACCb,EAAAA,MAAM,CAACV,CAAD,EAAqB;AAE1B,IAAA,IAAI9S,QAAQ,CAACiX,QAAT,EAAA,KAAwB,KAA5B,EAAoC,OAAA;AAEpC,IAAIjZ,IAAAA,IAAI,GAAG,IAAX,CAAA;AACA,IAAA,IAAI,CAACA,IAAI,CAACoS,SAAV,EAAqB,OAAA;AACrBpS,IAAAA,IAAI,CAACoS,SAAL,GAAiB,KAAjB,CAAA;AACApS,IAAAA,IAAI,CAACuS,WAAL,GAAmB,KAAnB,CAAA;;AAEA,IAAI2G,IAAAA,UAAU,GAAG,MAAM;AACtBlZ,MAAAA,IAAI,CAACwW,KAAL,EAAA,CAAA;AACAxW,MAAAA,IAAI,CAACmZ,aAAL,EAAA,CAAA;AACAnZ,MAAAA,IAAI,CAACoZ,QAAL,CAAcpZ,IAAI,CAACoP,KAAL,CAAW1P,MAAzB,CAAA,CAAA;AACAM,MAAAA,IAAI,CAACF,OAAL,CAAa,MAAb,CAAA,CAAA;AACA,KALD,CAAA;;AAOA,IAAIE,IAAAA,IAAI,CAACM,QAAL,CAAc6I,MAAd,IAAwBnJ,IAAI,CAACM,QAAL,CAAc8I,YAA1C,EAAwD;AACvDpJ,MAAAA,IAAI,CAAC6X,UAAL,CAAgB,IAAhB,EAAsBqB,UAAtB,CAAA,CAAA;AACA,KAFD,MAEO;AACNA,MAAAA,UAAU,EAAA,CAAA;AACV,KAAA;AACD,GAAA;AAGD;AACD;AACA;AACA;AACA;;;AACChE,EAAAA,cAAc,CAAE/H,GAAF,EAAgC8B,MAAhC,EAAoD;AACjE,IAAA,IAAIrD,KAAJ;AAAA,QAAW5L,IAAI,GAAG,IAAlB,CADiE;;AAKjE,IAAA,IAAIiP,MAAM,CAACoK,aAAP,IAAwBpK,MAAM,CAACoK,aAAP,CAAqB1U,OAArB,CAA6B,iBAA7B,CAA5B,EAA6E;AAC5E,MAAA,OAAA;AACA,KAAA;;AAGD,IAAIsK,IAAAA,MAAM,CAACnL,SAAP,CAAiBY,QAAjB,CAA0B,QAA1B,CAAJ,EAAyC;AACxC1E,MAAAA,IAAI,CAAC6X,UAAL,CAAgB,IAAhB,EAAsB,MAAM;AAC3B,QAAA,IAAI7X,IAAI,CAACM,QAAL,CAAcgZ,gBAAlB,EAAoC;AACnCtZ,UAAAA,IAAI,CAACwW,KAAL,EAAA,CAAA;AACA,SAAA;AACD,OAJD,CAAA,CAAA;AAKA,KAND,MAMO;AACN5K,MAAAA,KAAK,GAAGqD,MAAM,CAACQ,OAAP,CAAe7D,KAAvB,CAAA;;AACA,MAAA,IAAI,OAAOA,KAAP,KAAiB,WAArB,EAAkC;AACjC5L,QAAAA,IAAI,CAACoX,SAAL,GAAiB,IAAjB,CAAA;AACApX,QAAAA,IAAI,CAAC4X,OAAL,CAAahM,KAAb,CAAA,CAAA;;AACA,QAAA,IAAI5L,IAAI,CAACM,QAAL,CAAcgZ,gBAAlB,EAAoC;AACnCtZ,UAAAA,IAAI,CAACwW,KAAL,EAAA,CAAA;AACA,SAAA;;AAED,QAAA,IAAI,CAACxW,IAAI,CAACM,QAAL,CAAcoJ,YAAf,IAA+ByD,GAAG,CAACR,IAAnC,IAA2C,QAAQtF,IAAR,CAAa8F,GAAG,CAACR,IAAjB,CAA/C,EAAuE;AACtE3M,UAAAA,IAAI,CAACwY,eAAL,CAAqBvJ,MAArB,CAAA,CAAA;AACA,SAAA;AACD,OAAA;AACD,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;;;AACCyJ,EAAAA,SAAS,CAACzJ,MAAD,EAAiC;AAEzC,IAAA,IAAI,IAAK6C,CAAAA,MAAL,IAAe7C,MAAf,IAAyB,IAAA,CAAKoC,gBAAL,CAAsB3M,QAAtB,CAA+BuK,MAA/B,CAA7B,EAAsE;AACrE,MAAA,OAAO,IAAP,CAAA;AACA,KAAA;;AACD,IAAA,OAAO,KAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCkG,EAAAA,YAAY,CAAEhI,GAAF,EAAmBoM,IAAnB,EAA0C;AACrD,IAAIvZ,IAAAA,IAAI,GAAG,IAAX,CAAA;;AAEA,IAAA,IAAI,CAACA,IAAI,CAACmS,QAAN,IAAkBnS,IAAI,CAACM,QAAL,CAAcuK,IAAd,KAAuB,OAA7C,EAAsD;AACrDqC,MAAAA,cAAc,CAACC,GAAD,CAAd,CAAA;AACAnN,MAAAA,IAAI,CAACmZ,aAAL,CAAmBI,IAAnB,EAAyBpM,GAAzB,CAAA,CAAA;AACA,MAAA,OAAO,IAAP,CAAA;AACA,KAAA;;AACD,IAAA,OAAO,KAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACCqM,EAAAA,OAAO,CAAC5N,KAAD,EAAsB;AAE5B,IAAA,IAAI,CAAC,IAAKtL,CAAAA,QAAL,CAAcuU,IAAnB,EAA0B,OAAO,KAAP,CAAA;AAC1B,IAAI,IAAA,IAAA,CAAKrI,cAAL,CAAoBrL,cAApB,CAAmCyK,KAAnC,CAAJ,EAAgD,OAAO,KAAP,CAAA;AAEhD,IAAA,OAAO,IAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACCiJ,EAAAA,IAAI,CAACjJ,KAAD,EAAoB;AACvB,IAAM5L,MAAAA,IAAI,GAAG,IAAb,CAAA;AAEA,IAAA,IAAI,CAACA,IAAI,CAACwZ,OAAL,CAAa5N,KAAb,CAAL,EAA2B,OAAA;AAE3BvI,IAAAA,UAAU,CAACrD,IAAI,CAACyE,OAAN,EAAczE,IAAI,CAACM,QAAL,CAAc2J,YAA5B,CAAV,CAAA;AACAjK,IAAAA,IAAI,CAACmM,OAAL,EAAA,CAAA;AAEA,IAAMvN,MAAAA,QAAQ,GAAGoB,IAAI,CAACyZ,YAAL,CAAkBpF,IAAlB,CAAuBrU,IAAvB,CAAjB,CAAA;AACAA,IAAAA,IAAI,CAACM,QAAL,CAAcuU,IAAd,CAAmBhN,IAAnB,CAAwB7H,IAAxB,EAA8B4L,KAA9B,EAAqChN,QAArC,CAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACC6a,EAAAA,YAAY,CAAEvY,OAAF,EAAuB4H,SAAvB,EAAmD;AAC9D,IAAM9I,MAAAA,IAAI,GAAG,IAAb,CAAA;AACAA,IAAAA,IAAI,CAACmM,OAAL,GAAeC,IAAI,CAACC,GAAL,CAASrM,IAAI,CAACmM,OAAL,GAAe,CAAxB,EAA2B,CAA3B,CAAf,CAAA;AACAnM,IAAAA,IAAI,CAACoX,SAAL,GAAiB,IAAjB,CAAA;AAEApX,IAAAA,IAAI,CAAC0Z,iBAAL,EAAA,CAL8D;;AAM9D1Z,IAAAA,IAAI,CAAC4W,YAAL,CAAkB1V,OAAlB,EAA0B4H,SAA1B,CAAA,CAAA;AAEA9I,IAAAA,IAAI,CAAC8Y,cAAL,CAAoB9Y,IAAI,CAACoS,SAAL,IAAkB,CAACpS,IAAI,CAACqS,aAA5C,CAAA,CAAA;;AAEA,IAAA,IAAI,CAACrS,IAAI,CAACmM,OAAV,EAAmB;AAClBnI,MAAAA,aAAa,CAAChE,IAAI,CAACyE,OAAN,EAAczE,IAAI,CAACM,QAAL,CAAc2J,YAA5B,CAAb,CAAA;AACA,KAAA;;AAEDjK,IAAAA,IAAI,CAACF,OAAL,CAAa,MAAb,EAAqBoB,OAArB,EAA8B4H,SAA9B,CAAA,CAAA;AACA,GAAA;;AAEDgB,EAAAA,OAAO,GAAO;AACb,IAAA,IAAIhG,SAAS,GAAG,IAAKW,CAAAA,OAAL,CAAaX,SAA7B,CAAA;AACA,IAAA,IAAIA,SAAS,CAACY,QAAV,CAAmB,WAAnB,CAAJ,EAAsC,OAAA;AACtCZ,IAAAA,SAAS,CAACC,GAAV,CAAc,WAAd,CAAA,CAAA;AACA,IAAK8Q,IAAAA,CAAAA,IAAL,CAAU,EAAV,CAAA,CAAA;AACA,GAAA;AAGD;AACD;AACA;AACA;;;AACC8E,EAAAA,eAAe,CAAC/N,KAAY,GAAG,EAAhB,EAAoB;AAClC,IAAIkB,IAAAA,KAAK,GAAG,IAAA,CAAKoE,aAAjB,CAAA;AACA,IAAA,IAAI0I,OAAO,GAAG9M,KAAK,CAAClB,KAAN,KAAgBA,KAA9B,CAAA;;AACA,IAAA,IAAIgO,OAAJ,EAAa;AACZ9M,MAAAA,KAAK,CAAClB,KAAN,GAAcA,KAAd,CAAA;AACAlJ,MAAAA,YAAY,CAACoK,KAAD,EAAO,QAAP,CAAZ,CAAA;AACA,MAAK6F,IAAAA,CAAAA,SAAL,GAAiB/G,KAAjB,CAAA;AACA,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;;;AACCiO,EAAAA,QAAQ,GAAmB;AAE1B,IAAI,IAAA,IAAA,CAAKpI,aAAL,IAAsB,IAAK3E,CAAAA,KAAL,CAAW0D,YAAX,CAAwB,UAAxB,CAA1B,EAA+D;AAC9D,MAAA,OAAO,KAAKpB,KAAZ,CAAA;AACA,KAAA;;AAED,IAAO,OAAA,IAAA,CAAKA,KAAL,CAAWsF,IAAX,CAAgB,IAAKpU,CAAAA,QAAL,CAAcyI,SAA9B,CAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACCoO,EAAAA,QAAQ,CAAEvL,KAAF,EAAyBkO,MAAzB,EAA+C;AACtD,IAAInb,IAAAA,MAAM,GAAGmb,MAAM,GAAG,EAAH,GAAQ,CAAC,QAAD,CAA3B,CAAA;AAEArN,IAAAA,eAAe,CAAC,IAAD,EAAO9N,MAAP,EAAc,MAAM;AAClC,MAAKob,IAAAA,CAAAA,KAAL,CAAWD,MAAX,CAAA,CAAA;AACA,MAAA,IAAA,CAAKE,QAAL,CAAcpO,KAAd,EAAqBkO,MAArB,CAAA,CAAA;AACA,KAHc,CAAf,CAAA;AAIA,GAAA;AAGD;AACD;AACA;AACA;;;AACCG,EAAAA,WAAW,CAACrO,KAAD,EAAmB;AAC7B,IAAGA,IAAAA,KAAK,KAAK,CAAb,EAAgBA,KAAK,GAAG,IAAR,CADa;;AAE7B,IAAA,IAAA,CAAKtL,QAAL,CAAcmJ,QAAd,GAAyBmC,KAAzB,CAAA;AACA,IAAA,IAAA,CAAKyK,YAAL,EAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACC8C,EAAAA,aAAa,CAAEI,IAAF,EAAiBzE,CAAjB,EAA8C;AAC1D,IAAI9U,IAAAA,IAAI,GAAG,IAAX,CAAA;AACA,IAAA,IAAIka,SAAJ,CAAA;AACA,IAAA,IAAI5U,CAAJ,EAAO6U,KAAP,EAAcC,GAAd,EAAmBC,IAAnB,CAAA;AACA,IAAA,IAAIC,IAAJ,CAAA;AAEA,IAAIta,IAAAA,IAAI,CAACM,QAAL,CAAcuK,IAAd,KAAuB,QAA3B,EAAqC,OANqB;;AAS1D,IAAI,IAAA,CAAC0O,IAAL,EAAW;AACVvZ,MAAAA,IAAI,CAACqX,gBAAL,EAAA,CAAA;;AACA,MAAIrX,IAAAA,IAAI,CAACoS,SAAT,EAAoB;AACnBpS,QAAAA,IAAI,CAACgZ,SAAL,EAAA,CAAA;AACA,OAAA;;AACD,MAAA,OAAA;AACA,KAfyD;;;AAkB1DkB,IAAAA,SAAS,GAAGpF,CAAC,IAAIA,CAAC,CAACnI,IAAF,CAAOqC,WAAP,EAAjB,CAAA;;AAEA,IAAA,IAAIkL,SAAS,KAAK,OAAd,IAAyB1M,SAAS,CAAC,UAAD,EAAYsH,CAAZ,CAAlC,IAAoD9U,IAAI,CAAC8S,WAAL,CAAiBpT,MAAzE,EAAiF;AAChF4a,MAAAA,IAAI,GAAGta,IAAI,CAACua,aAAL,EAAP,CAAA;AACAJ,MAAAA,KAAK,GAAGpZ,KAAK,CAAC6G,SAAN,CAAgB/H,OAAhB,CAAwBgI,IAAxB,CAA6B7H,IAAI,CAACoR,OAAL,CAAab,QAA1C,EAAoD+J,IAApD,CAAR,CAAA;AACAF,MAAAA,GAAG,GAAIrZ,KAAK,CAAC6G,SAAN,CAAgB/H,OAAhB,CAAwBgI,IAAxB,CAA6B7H,IAAI,CAACoR,OAAL,CAAab,QAA1C,EAAoDgJ,IAApD,CAAP,CAAA;;AAEA,MAAIY,IAAAA,KAAK,GAAGC,GAAZ,EAAiB;AAChBC,QAAAA,IAAI,GAAIF,KAAR,CAAA;AACAA,QAAAA,KAAK,GAAGC,GAAR,CAAA;AACAA,QAAAA,GAAG,GAAKC,IAAR,CAAA;AACA,OAAA;;AACD,MAAK/U,KAAAA,CAAC,GAAG6U,KAAT,EAAgB7U,CAAC,IAAI8U,GAArB,EAA0B9U,CAAC,EAA3B,EAA+B;AAC9BiU,QAAAA,IAAI,GAAGvZ,IAAI,CAACoR,OAAL,CAAab,QAAb,CAAsBjL,CAAtB,CAAP,CAAA;;AACA,QAAItF,IAAAA,IAAI,CAAC8S,WAAL,CAAiBjT,OAAjB,CAAyB0Z,IAAzB,CAAA,KAAmC,CAAC,CAAxC,EAA2C;AAC1CvZ,UAAAA,IAAI,CAACwa,kBAAL,CAAwBjB,IAAxB,CAAA,CAAA;AACA,SAAA;AACD,OAAA;;AACDrM,MAAAA,cAAc,CAAC4H,CAAD,CAAd,CAAA;AACA,KAjBD,MAiBO,IAAKoF,SAAS,KAAK,OAAd,IAAyB1M,SAAS,CAAC2K,YAAD,EAAwBrD,CAAxB,CAAnC,IAAoEoF,SAAS,KAAK,SAAd,IAA2B1M,SAAS,CAAC,UAAD,EAAYsH,CAAZ,CAA5G,EAA6H;AACnI,MAAIyE,IAAAA,IAAI,CAACzV,SAAL,CAAeY,QAAf,CAAwB,QAAxB,CAAJ,EAAuC;AACtC1E,QAAAA,IAAI,CAACya,gBAAL,CAAuBlB,IAAvB,CAAA,CAAA;AACA,OAFD,MAEO;AACNvZ,QAAAA,IAAI,CAACwa,kBAAL,CAAwBjB,IAAxB,CAAA,CAAA;AACA,OAAA;AACD,KANM,MAMA;AACNvZ,MAAAA,IAAI,CAACqX,gBAAL,EAAA,CAAA;AACArX,MAAAA,IAAI,CAACwa,kBAAL,CAAwBjB,IAAxB,CAAA,CAAA;AACA,KA9CyD;;;AAiD1DvZ,IAAAA,IAAI,CAAC0a,SAAL,EAAA,CAAA;;AACA,IAAA,IAAI,CAAC1a,IAAI,CAACoS,SAAV,EAAqB;AACpBpS,MAAAA,IAAI,CAACoU,KAAL,EAAA,CAAA;AACA,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;;;AACCoG,EAAAA,kBAAkB,CAAEjB,IAAF,EAAgB;AACjC,IAAMvZ,MAAAA,IAAI,GAAG,IAAb,CAAA;AACA,IAAM2a,MAAAA,WAAW,GAAG3a,IAAI,CAACoR,OAAL,CAAa9O,aAAb,CAA2B,cAA3B,CAApB,CAAA;AACA,IAAA,IAAIqY,WAAJ,EAAkB3W,aAAa,CAAC2W,WAAD,EAA4B,aAA5B,CAAb,CAAA;AAElBtX,IAAAA,UAAU,CAACkW,IAAD,EAAM,oBAAN,CAAV,CAAA;AACAvZ,IAAAA,IAAI,CAACF,OAAL,CAAa,aAAb,EAA4ByZ,IAA5B,CAAA,CAAA;;AACA,IAAIvZ,IAAAA,IAAI,CAAC8S,WAAL,CAAiBjT,OAAjB,CAAyB0Z,IAAzB,CAAA,IAAkC,CAAC,CAAvC,EAA0C;AACzCvZ,MAAAA,IAAI,CAAC8S,WAAL,CAAiBxT,IAAjB,CAAuBia,IAAvB,CAAA,CAAA;AACA,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;;;AACCkB,EAAAA,gBAAgB,CAAElB,IAAF,EAAgB;AAC/B,IAAIqB,IAAAA,GAAG,GAAG,IAAK9H,CAAAA,WAAL,CAAiBjT,OAAjB,CAAyB0Z,IAAzB,CAAV,CAAA;AACA,IAAA,IAAA,CAAKzG,WAAL,CAAiBlT,MAAjB,CAAwBgb,GAAxB,EAA6B,CAA7B,CAAA,CAAA;AACA5W,IAAAA,aAAa,CAACuV,IAAD,EAAM,QAAN,CAAb,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACClC,EAAAA,gBAAgB,GAAE;AACjBrT,IAAAA,aAAa,CAAC,IAAA,CAAK8O,WAAN,EAAkB,QAAlB,CAAb,CAAA;AACA,IAAKA,IAAAA,CAAAA,WAAL,GAAmB,EAAnB,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACC0F,EAAAA,eAAe,CAAEvJ,MAAF,EAA0B4L,MAAc,GAAC,IAAzC,EAAoD;AAElE,IAAA,IAAI5L,MAAM,KAAK,IAAK4D,CAAAA,YAApB,EAAkC;AACjC,MAAA,OAAA;AACA,KAAA;;AAED,IAAA,IAAA,CAAK6G,iBAAL,EAAA,CAAA;AACA,IAAI,IAAA,CAACzK,MAAL,EAAc,OAAA;AAEd,IAAK4D,IAAAA,CAAAA,YAAL,GAAoB5D,MAApB,CAAA;AACAzJ,IAAAA,OAAO,CAAC,IAAK8L,CAAAA,UAAN,EAAiB;AAAC,MAAA,uBAAA,EAAwBrC,MAAM,CAACf,YAAP,CAAoB,IAApB,CAAA;AAAzB,KAAjB,CAAP,CAAA;AACA1I,IAAAA,OAAO,CAACyJ,MAAD,EAAQ;AAAC,MAAgB,eAAA,EAAA,MAAA;AAAjB,KAAR,CAAP,CAAA;AACA5L,IAAAA,UAAU,CAAC4L,MAAD,EAAQ,QAAR,CAAV,CAAA;AACA,IAAA,IAAI4L,MAAJ,EAAa,IAAKC,CAAAA,cAAL,CAAoB7L,MAApB,CAAA,CAAA;AACb,GAAA;AAED;AACD;AACA;AACA;;;AACC6L,EAAAA,cAAc,CAAE7L,MAAF,EAA2B8L,QAA3B,EAAkD;AAE/D,IAAI,IAAA,CAAC9L,MAAL,EAAc,OAAA;AAEd,IAAM7M,MAAAA,OAAO,GAAI,IAAA,CAAKiP,gBAAtB,CAAA;AACA,IAAA,MAAM2J,WAAW,GAAG5Y,OAAO,CAAC6Y,YAA5B,CAAA;AACA,IAAA,MAAMC,SAAS,GAAI9Y,OAAO,CAAC8Y,SAAR,IAAqB,CAAxC,CAAA;AACA,IAAA,MAAMC,WAAW,GAAGlM,MAAM,CAACmM,YAA3B,CAAA;AACA,IAAA,MAAMC,CAAC,GAAMpM,MAAM,CAACqM,qBAAP,EAA+BC,CAAAA,GAA/B,GAAqCnZ,OAAO,CAACkZ,qBAAR,EAAgCC,CAAAA,GAArE,GAA2EL,SAAxF,CAAA;;AAEA,IAAA,IAAIG,CAAC,GAAGF,WAAJ,GAAkBH,WAAW,GAAGE,SAApC,EAA+C;AAC9C,MAAKL,IAAAA,CAAAA,MAAL,CAAYQ,CAAC,GAAGL,WAAJ,GAAkBG,WAA9B,EAA2CJ,QAA3C,CAAA,CAAA;AAEA,KAHD,MAGO,IAAIM,CAAC,GAAGH,SAAR,EAAmB;AACzB,MAAA,IAAA,CAAKL,MAAL,CAAYQ,CAAZ,EAAeN,QAAf,CAAA,CAAA;AACA,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;;;AACCF,EAAAA,MAAM,CAAEK,SAAF,EAAoBH,QAApB,EAA2C;AAChD,IAAM3Y,MAAAA,OAAO,GAAG,IAAA,CAAKiP,gBAArB,CAAA;;AACA,IAAA,IAAI0J,QAAJ,EAAc;AACb3Y,MAAAA,OAAO,CAACgB,KAAR,CAAcoY,cAAd,GAA+BT,QAA/B,CAAA;AACA,KAAA;;AACD3Y,IAAAA,OAAO,CAAC8Y,SAAR,GAAoBA,SAApB,CAAA;AACA9Y,IAAAA,OAAO,CAACgB,KAAR,CAAcoY,cAAd,GAA+B,EAA/B,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACC9B,EAAAA,iBAAiB,GAAE;AAClB,IAAI,IAAA,IAAA,CAAK7G,YAAT,EAAuB;AACtB7O,MAAAA,aAAa,CAAC,IAAA,CAAK6O,YAAN,EAAmB,QAAnB,CAAb,CAAA;AACArN,MAAAA,OAAO,CAAC,IAAKqN,CAAAA,YAAN,EAAmB;AAAC,QAAgB,eAAA,EAAA,IAAA;AAAjB,OAAnB,CAAP,CAAA;AACA,KAAA;;AACD,IAAKA,IAAAA,CAAAA,YAAL,GAAoB,IAApB,CAAA;AACArN,IAAAA,OAAO,CAAC,IAAK8L,CAAAA,UAAN,EAAiB;AAAC,MAAwB,uBAAA,EAAA,IAAA;AAAzB,KAAjB,CAAP,CAAA;AACA,GAAA;AAGD;AACD;AACA;;;AACC8G,EAAAA,SAAS,GAAG;AACX,IAAMpY,MAAAA,IAAI,GAAG,IAAb,CAAA;AAEA,IAAA,IAAIA,IAAI,CAACM,QAAL,CAAcuK,IAAd,KAAuB,QAA3B,EAAqC,OAAA;AAErC,IAAA,MAAMiI,WAAW,GAAG9S,IAAI,CAACyb,eAAL,EAApB,CAAA;AAEA,IAAA,IAAI,CAAC3I,WAAW,CAACpT,MAAjB,EAA0B,OAAA;AAE1BM,IAAAA,IAAI,CAAC0a,SAAL,EAAA,CAAA;AACA1a,IAAAA,IAAI,CAACwW,KAAL,EAAA,CAAA;AAEAxW,IAAAA,IAAI,CAAC8S,WAAL,GAAmBA,WAAnB,CAAA;AACAtR,IAAAA,SAAO,CAAEsR,WAAF,EAAgByG,IAAD,IAAkB;AACvCvZ,MAAAA,IAAI,CAACwa,kBAAL,CAAwBjB,IAAxB,CAAA,CAAA;AACA,KAFM,CAAP,CAAA;AAIA,GAAA;AAED;AACD;AACA;AACA;;;AACCzD,EAAAA,UAAU,GAAE;AACX,IAAI9V,IAAAA,IAAI,GAAG,IAAX,CAAA;AAEA,IAAI,IAAA,CAACA,IAAI,CAACoR,OAAL,CAAa1M,QAAb,CAAsB1E,IAAI,CAACkR,aAA3B,CAAL,EAAiD,OAAA;AAEjD1L,IAAAA,OAAO,CAACxF,IAAI,CAACkR,aAAN,EAAoB;AAAC3F,MAAAA,WAAW,EAACvL,IAAI,CAACM,QAAL,CAAciL,WAAAA;AAA3B,KAApB,CAAP,CAAA;;AAEA,IAAIvL,IAAAA,IAAI,CAAC8S,WAAL,CAAiBpT,MAAjB,GAA0B,CAA1B,IAAgC,CAACM,IAAI,CAACoS,SAAN,IAAmBpS,IAAI,CAACM,QAAL,CAAckL,eAAjC,IAAoDxL,IAAI,CAACoP,KAAL,CAAW1P,MAAX,GAAoB,CAA5G,EAAgH;AAC/GM,MAAAA,IAAI,CAAC2Z,eAAL,EAAA,CAAA;AACA3Z,MAAAA,IAAI,CAACqS,aAAL,GAAqB,IAArB,CAAA;AAEA,KAJD,MAIK;AAEJ,MAAA,IAAIrS,IAAI,CAACM,QAAL,CAAckL,eAAd,IAAiCxL,IAAI,CAACoP,KAAL,CAAW1P,MAAX,GAAoB,CAAzD,EAA4D;AAC3D8F,QAAAA,OAAO,CAACxF,IAAI,CAACkR,aAAN,EAAoB;AAAC3F,UAAAA,WAAW,EAAC,EAAA;AAAb,SAApB,CAAP,CAAA;AACA,OAAA;;AACDvL,MAAAA,IAAI,CAACqS,aAAL,GAAqB,KAArB,CAAA;AACA,KAAA;;AAEDrS,IAAAA,IAAI,CAACyE,OAAL,CAAaX,SAAb,CAAuB4X,MAAvB,CAA8B,cAA9B,EAA8C1b,IAAI,CAACqS,aAAnD,CAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCqI,EAAAA,SAAS,GAAG;AACX,IAAA,IAAA,CAAK5E,UAAL,EAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACCkD,EAAAA,SAAS,GAAG;AACX,IAAA,IAAA,CAAKlD,UAAL,EAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;;;AACC0B,EAAAA,UAAU,GAAE;AACX,IAAA,OAAO,KAAKtG,aAAL,CAAmBtF,KAAnB,CAAyBzJ,IAAzB,EAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;;;AACCiS,EAAAA,KAAK,GAAG;AACP,IAAIpU,IAAAA,IAAI,GAAG,IAAX,CAAA;AACA,IAAIA,IAAAA,IAAI,CAAC+R,UAAT,EAAqB,OAAA;AAErB/R,IAAAA,IAAI,CAACuS,WAAL,GAAmB,IAAnB,CAAA;;AAEA,IAAA,IAAIvS,IAAI,CAACkR,aAAL,CAAmByK,WAAvB,EAAoC;AACnC3b,MAAAA,IAAI,CAACkR,aAAL,CAAmBkD,KAAnB,EAAA,CAAA;AACA,KAFD,MAEK;AACJpU,MAAAA,IAAI,CAACsR,UAAL,CAAgB8C,KAAhB,EAAA,CAAA;AACA,KAAA;;AAED7H,IAAAA,UAAU,CAAC,MAAM;AAChBvM,MAAAA,IAAI,CAACuS,WAAL,GAAmB,KAAnB,CAAA;AACAvS,MAAAA,IAAI,CAACyV,OAAL,EAAA,CAAA;AACA,KAHS,EAGP,CAHO,CAAV,CAAA;AAIA,GAAA;AAED;AACD;AACA;AACA;;;AACCI,EAAAA,IAAI,GAAQ;AACX,IAAKvE,IAAAA,CAAAA,UAAL,CAAgBuE,IAAhB,EAAA,CAAA;AACA,IAAA,IAAA,CAAKL,MAAL,EAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;;;AACCoG,EAAAA,gBAAgB,CAACja,KAAD,EAAe;AAC9B,IAAO,OAAA,IAAA,CAAKkQ,MAAL,CAAY+J,gBAAZ,CAA6Bja,KAA7B,EAAoC,IAAA,CAAKka,gBAAL,EAApC,CAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;;;AACCA,EAAAA,gBAAgB,GAAG;AAClB,IAAIvb,IAAAA,QAAQ,GAAG,IAAA,CAAKA,QAApB,CAAA;AACA,IAAA,IAAIwb,IAAI,GAAGxb,QAAQ,CAACoK,SAApB,CAAA;;AACA,IAAA,IAAI,OAAOpK,QAAQ,CAACoK,SAAhB,KAA8B,QAAlC,EAA4C;AAC3CoR,MAAAA,IAAI,GAAG,CAAC;AAACC,QAAAA,KAAK,EAAEzb,QAAQ,CAACoK,SAAAA;AAAjB,OAAD,CAAP,CAAA;AACA,KAAA;;AAED,IAAO,OAAA;AACNsR,MAAAA,MAAM,EAAQ1b,QAAQ,CAACqK,WADjB;AAENsR,MAAAA,WAAW,EAAG3b,QAAQ,CAACsK,iBAFjB;AAGNkR,MAAAA,IAAI,EAAUA,IAHR;AAINI,MAAAA,OAAO,EAAO5b,QAAQ,CAAC4b,OAAAA;AAJjB,KAAP,CAAA;AAMA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCC,EAAAA,MAAM,CAACxa,KAAD,EAA6C;AAClD,IAAIya,IAAAA,MAAJ,EAAYC,cAAZ,CAAA;AACA,IAAIrc,IAAAA,IAAI,GAAO,IAAf,CAAA;AACA,IAAA,IAAIkB,OAAO,GAAI,IAAA,CAAK2a,gBAAL,EAAf,CAHkD;;AAMlD,IAAA,IAAK7b,IAAI,CAACM,QAAL,CAAcgc,KAAnB,EAA0B;AACzBD,MAAAA,cAAc,GAAGrc,IAAI,CAACM,QAAL,CAAcgc,KAAd,CAAoBzU,IAApB,CAAyB7H,IAAzB,EAA8B2B,KAA9B,CAAjB,CAAA;;AACA,MAAA,IAAI,OAAO0a,cAAP,KAA0B,UAA9B,EAA0C;AACzC,QAAA,MAAM,IAAI9a,KAAJ,CAAU,uEAAV,CAAN,CAAA;AACA,OAAA;AACD,KAXiD;;;AAclD,IAAA,IAAII,KAAK,KAAK3B,IAAI,CAACoX,SAAnB,EAA8B;AAC7BpX,MAAAA,IAAI,CAACoX,SAAL,GAAmBzV,KAAnB,CAAA;AACAya,MAAAA,MAAM,GAAOpc,IAAI,CAAC6R,MAAL,CAAYsK,MAAZ,CAAmBxa,KAAnB,EAA0BuB,MAAM,CAACC,MAAP,CAAcjC,OAAd,EAAuB;AAACob,QAAAA,KAAK,EAAED,cAAAA;AAAR,OAAvB,CAA1B,CAAb,CAAA;AACArc,MAAAA,IAAI,CAAC0S,cAAL,GAAuB0J,MAAvB,CAAA;AACA,KAJD,MAIO;AACNA,MAAAA,MAAM,GAAOlZ,MAAM,CAACC,MAAP,CAAe,EAAf,EAAmBnD,IAAI,CAAC0S,cAAxB,CAAb,CAAA;AACA,KApBiD;;;AAuBlD,IAAA,IAAI1S,IAAI,CAACM,QAAL,CAAcoJ,YAAlB,EAAgC;AAC/B0S,MAAAA,MAAM,CAAChN,KAAP,GAAegN,MAAM,CAAChN,KAAP,CAAahL,MAAb,CAAqBmV,IAAD,IAAU;AAC5C,QAAA,IAAIgD,MAAM,GAAG5Q,QAAQ,CAAC4N,IAAI,CAACvL,EAAN,CAArB,CAAA;AACA,QAAA,OAAO,EAAEuO,MAAM,IAAIvc,IAAI,CAACoP,KAAL,CAAWvP,OAAX,CAAmB0c,MAAnB,CAA+B,KAAA,CAAC,CAA5C,CAAP,CAAA;AACA,OAHc,CAAf,CAAA;AAIA,KAAA;;AAED,IAAA,OAAOH,MAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCtD,EAAAA,cAAc,CAAE0D,eAAuB,GAAG,IAA5B,EAAkC;AAC/C,IAAA,IAAIlX,CAAJ,EAAOmX,CAAP,EAAUC,CAAV,EAAald,CAAb,EAAgB6Q,QAAhB,EAA0BvH,SAA1B,EAAqC6T,IAArC,EAA4DC,iBAA5D,EAA+EC,YAA/E,CAAA;AACA,IAAA,IAAI1T,MAAJ,CAAA;AACA,IAAM2T,MAAAA,MAAuC,GAAG,EAAhD,CAAA;AAEA,IAAMC,MAAAA,YAAqB,GAAG,EAA9B,CAAA;AACA,IAAI/c,IAAAA,IAAI,GAAO,IAAf,CAAA;AACA,IAAA,IAAI2B,KAAK,GAAO3B,IAAI,CAACwX,UAAL,EAAhB,CAAA;AACA,IAAA,MAAMwF,UAAU,GAAKrb,KAAK,KAAK3B,IAAI,CAACoX,SAAf,IAA6BzV,KAAK,IAAI,EAAT,IAAe3B,IAAI,CAACoX,SAAL,IAAkB,IAAnF,CAAA;AACA,IAAA,IAAI6F,OAAO,GAAOjd,IAAI,CAACmc,MAAL,CAAYxa,KAAZ,CAAlB,CAAA;AACA,IAAIub,IAAAA,aAAa,GAAK,IAAtB,CAAA;AACA,IAAIC,IAAAA,aAAa,GAAKnd,IAAI,CAACM,QAAL,CAAciJ,UAAd,IAA4B,KAAlD,CAAA;AACA,IAAA,IAAI8H,gBAAgB,GAAIrR,IAAI,CAACqR,gBAA7B,CAAA;;AAGA,IAAA,IAAI2L,UAAJ,EAAgB;AACfE,MAAAA,aAAa,GAAKld,IAAI,CAAC6S,YAAvB,CAAA;;AAEA,MAAA,IAAIqK,aAAJ,EAAmB;AAClBL,QAAAA,YAAY,GAAGK,aAAa,CAACE,OAAd,CAAsB,cAAtB,CAAf,CAAA;AACA,OAAA;AACD,KArB8C;;;AAwB/C5d,IAAAA,CAAC,GAAGyd,OAAO,CAAC7N,KAAR,CAAc1P,MAAlB,CAAA;;AACA,IAAI,IAAA,OAAOM,IAAI,CAACM,QAAL,CAAckJ,UAArB,KAAoC,QAAxC,EAAkD;AACjDhK,MAAAA,CAAC,GAAG4M,IAAI,CAACiR,GAAL,CAAS7d,CAAT,EAAYQ,IAAI,CAACM,QAAL,CAAckJ,UAA1B,CAAJ,CAAA;AACA,KAAA;;AAED,IAAIhK,IAAAA,CAAC,GAAG,CAAR,EAAW;AACV2d,MAAAA,aAAa,GAAG,IAAhB,CAAA;AACA,KA/B8C;;;AAkC/C,IAAK7X,KAAAA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG9F,CAAhB,EAAmB8F,CAAC,EAApB,EAAwB;AAEvB;AACA,MAAA,IAAIiU,IAAI,GAAK0D,OAAO,CAAC7N,KAAR,CAAc9J,CAAd,CAAb,CAAA;AACA,MAAI,IAAA,CAACiU,IAAL,EAAY,SAAA;AAEZ,MAAA,IAAI+D,SAAS,GAAI/D,IAAI,CAACvL,EAAtB,CAAA;AACA,MAAA,IAAIiB,MAAM,GAAKjP,IAAI,CAACkB,OAAL,CAAaoc,SAAb,CAAf,CAAA;AAEA,MAAIrO,IAAAA,MAAM,KAAKtP,SAAf,EAA2B,SAAA;AAE3B,MAAA,IAAI4d,QAAQ,GAAI1R,QAAQ,CAACyR,SAAD,CAAxB,CAAA;AACA,MAAIE,IAAAA,SAAS,GAAIxd,IAAI,CAACyd,SAAL,CAAeF,QAAf,EAAwB,IAAxB,CAAjB,CAZuB;;AAevB,MAAA,IAAI,CAACvd,IAAI,CAACM,QAAL,CAAcoJ,YAAnB,EAAiC;AAChC8T,QAAAA,SAAS,CAAC1Z,SAAV,CAAoB4X,MAApB,CAA2B,UAA3B,EAAuC1b,IAAI,CAACoP,KAAL,CAAWsO,QAAX,CAAoBH,QAApB,CAAvC,CAAA,CAAA;AACA,OAAA;;AAEDlN,MAAAA,QAAQ,GAAMpB,MAAM,CAACjP,IAAI,CAACM,QAAL,CAAc6J,aAAf,CAAN,IAAuC,EAArD,CAAA;AACArB,MAAAA,SAAS,GAAK/H,KAAK,CAACC,OAAN,CAAcqP,QAAd,CAAA,GAA0BA,QAA1B,GAAqC,CAACA,QAAD,CAAnD,CAAA;;AAEA,MAAA,KAAKoM,CAAC,GAAG,CAAJ,EAAOC,CAAC,GAAG5T,SAAS,IAAIA,SAAS,CAACpJ,MAAvC,EAA+C+c,CAAC,GAAGC,CAAnD,EAAsDD,CAAC,EAAvD,EAA2D;AAC1DpM,QAAAA,QAAQ,GAAGvH,SAAS,CAAC2T,CAAD,CAApB,CAAA;;AACA,QAAI,IAAA,CAACzc,IAAI,CAAC8I,SAAL,CAAe3H,cAAf,CAA8BkP,QAA9B,CAAL,EAA8C;AAC7CA,UAAAA,QAAQ,GAAG,EAAX,CAAA;AACA,SAAA;;AAED,QAAA,IAAIsN,cAAc,GAAGb,MAAM,CAACzM,QAAD,CAA3B,CAAA;;AACA,QAAIsN,IAAAA,cAAc,KAAKhe,SAAvB,EAAkC;AACjCge,UAAAA,cAAc,GAAG3b,QAAQ,CAAC4b,sBAAT,EAAjB,CAAA;AACAb,UAAAA,YAAY,CAACzd,IAAb,CAAkB+Q,QAAlB,CAAA,CAAA;AACA,SAVyD;;;AAa1D,QAAIoM,IAAAA,CAAC,GAAG,CAAR,EAAW;AACVe,UAAAA,SAAS,GAAGA,SAAS,CAACxW,SAAV,CAAoB,IAApB,CAAZ,CAAA;AACAxB,UAAAA,OAAO,CAACgY,SAAD,EAAW;AAACxP,YAAAA,EAAE,EAAEiB,MAAM,CAAC4O,GAAP,GAAW,SAAX,GAAqBpB,CAA1B;AAA4B,YAAgB,eAAA,EAAA,IAAA;AAA5C,WAAX,CAAP,CAAA;AACAe,UAAAA,SAAS,CAAC1Z,SAAV,CAAoBC,GAApB,CAAwB,WAAxB,CAAA,CAAA;AACAC,UAAAA,aAAa,CAACwZ,SAAD,EAAW,QAAX,CAAb,CAJU;;AAQV,UAAA,IAAIxd,IAAI,CAAC6S,YAAL,IAAqB7S,IAAI,CAAC6S,YAAL,CAAkBpD,OAAlB,CAA0B7D,KAA1B,IAAmC0R,SAA5D,EAAuE;AACtE,YAAA,IAAIT,YAAY,IAAIA,YAAY,CAACpN,OAAb,CAAqBK,KAArB,KAA+BO,QAAQ,CAACyN,QAAT,EAAnD,EAAwE;AACvEZ,cAAAA,aAAa,GAAGM,SAAhB,CAAA;AACA,aAAA;AACD,WAAA;AACD,SAAA;;AAEDG,QAAAA,cAAc,CAAC1W,WAAf,CAA2BuW,SAA3B,CAAA,CAAA;AACAV,QAAAA,MAAM,CAACzM,QAAD,CAAN,GAAmBsN,cAAnB,CAAA;AACA,OAAA;AACD,KAvF8C;;;AA0F/C,IAAA,IAAI3d,IAAI,CAACM,QAAL,CAAcmK,iBAAlB,EAAqC;AACpCsS,MAAAA,YAAY,CAACjB,IAAb,CAAkB,CAACiC,CAAD,EAAIC,CAAJ,KAAU;AAC3B,QAAA,MAAMC,KAAK,GAAIje,IAAI,CAAC8I,SAAL,CAAeiV,CAAf,CAAf,CAAA;AACA,QAAA,MAAMG,KAAK,GAAIle,IAAI,CAAC8I,SAAL,CAAekV,CAAf,CAAf,CAAA;AACA,QAAMG,MAAAA,OAAO,GAAGF,KAAK,IAAIA,KAAK,CAACG,MAAf,IAAyB,CAAzC,CAAA;AACA,QAAMC,MAAAA,OAAO,GAAGH,KAAK,IAAIA,KAAK,CAACE,MAAf,IAAyB,CAAzC,CAAA;AACA,QAAOD,OAAAA,OAAO,GAAGE,OAAjB,CAAA;AACA,OAND,CAAA,CAAA;AAOA,KAlG8C;;;AAqG/C1B,IAAAA,IAAI,GAAG3a,QAAQ,CAAC4b,sBAAT,EAAP,CAAA;AACApc,IAAAA,SAAO,CAAEub,YAAF,EAAiB1M,QAAD,IAAqB;AAE3C,MAAA,IAAIsN,cAAc,GAAGb,MAAM,CAACzM,QAAD,CAA3B,CAAA;AAEA,MAAI,IAAA,CAACsN,cAAD,IAAmB,CAACA,cAAc,CAACpN,QAAf,CAAwB7Q,MAAhD,EAAyD,OAAA;AAEzD,MAAA,IAAI4e,aAAa,GAAGte,IAAI,CAAC8I,SAAL,CAAeuH,QAAf,CAApB,CAAA;;AAEA,MAAIiO,IAAAA,aAAa,KAAK3e,SAAtB,EAAiC;AAEhC,QAAA,IAAI4e,aAAa,GAAGvc,QAAQ,CAAC4b,sBAAT,EAApB,CAAA;AACA,QAAIY,IAAAA,MAAM,GAAGxe,IAAI,CAAC0L,MAAL,CAAY,iBAAZ,EAA+B4S,aAA/B,CAAb,CAAA;AACAlQ,QAAAA,MAAM,CAAEmQ,aAAF,EAAiBC,MAAjB,CAAN,CAAA;AACApQ,QAAAA,MAAM,CAAEmQ,aAAF,EAAiBZ,cAAjB,CAAN,CAAA;AAEA,QAAA,IAAIc,UAAU,GAAGze,IAAI,CAAC0L,MAAL,CAAY,UAAZ,EAAwB;AAACoE,UAAAA,KAAK,EAACwO,aAAP;AAAqBpd,UAAAA,OAAO,EAACqd,aAAAA;AAA7B,SAAxB,CAAjB,CAAA;AAEAnQ,QAAAA,MAAM,CAAEuO,IAAF,EAAQ8B,UAAR,CAAN,CAAA;AAEA,OAXD,MAWO;AACNrQ,QAAAA,MAAM,CAAEuO,IAAF,EAAQgB,cAAR,CAAN,CAAA;AACA,OAAA;AACD,KAtBM,CAAP,CAAA;AAwBAtM,IAAAA,gBAAgB,CAACnP,SAAjB,GAA6B,EAA7B,CAAA;AACAkM,IAAAA,MAAM,CAAEiD,gBAAF,EAAoBsL,IAApB,CAAN,CA/H+C;;AAkI/C,IAAA,IAAI3c,IAAI,CAACM,QAAL,CAAc4F,SAAlB,EAA6B;AAC5BuB,MAAAA,eAAe,CAAE4J,gBAAF,CAAf,CAAA;;AACA,MAAI4L,IAAAA,OAAO,CAACtb,KAAR,CAAcjC,MAAd,IAAwBud,OAAO,CAACyB,MAAR,CAAehf,MAA3C,EAAmD;AAClD8B,QAAAA,SAAO,CAAEyb,OAAO,CAACyB,MAAV,EAAmBC,GAAD,IAAS;AACjCzY,UAAAA,SAAS,CAAEmL,gBAAF,EAAoBsN,GAAG,CAACvY,KAAxB,CAAT,CAAA;AACA,SAFM,CAAP,CAAA;AAGA,OAAA;AACD,KAzI8C;;;AA4I/C,IAAIwY,IAAAA,YAAY,GAAIC,QAAD,IAA+B;AACjD,MAAA,IAAIzc,OAAO,GAAGpC,IAAI,CAAC0L,MAAL,CAAYmT,QAAZ,EAAqB;AAAC/R,QAAAA,KAAK,EAACnL,KAAAA;AAAP,OAArB,CAAd,CAAA;;AACA,MAAA,IAAIS,OAAJ,EAAa;AACZ+a,QAAAA,aAAa,GAAG,IAAhB,CAAA;AACA9L,QAAAA,gBAAgB,CAACyN,YAAjB,CAA8B1c,OAA9B,EAAuCiP,gBAAgB,CAAChP,UAAxD,CAAA,CAAA;AACA,OAAA;;AACD,MAAA,OAAOD,OAAP,CAAA;AACA,KAPD,CA5I+C;;;AAuJ/C,IAAIpC,IAAAA,IAAI,CAACmM,OAAT,EAAkB;AACjByS,MAAAA,YAAY,CAAC,SAAD,CAAZ,CADiB;AAIjB,KAJD,MAIM,IAAI,CAAC5e,IAAI,CAACM,QAAL,CAAcmL,UAAd,CAAyB5D,IAAzB,CAA8B7H,IAA9B,EAAmC2B,KAAnC,CAAL,EAAgD;AACrDid,MAAAA,YAAY,CAAC,aAAD,CAAZ,CADqD;AAIrD,KAJK,MAIA,IAAI3B,OAAO,CAAC7N,KAAR,CAAc1P,MAAd,KAAyB,CAA7B,EAAgC;AACrCkf,MAAAA,YAAY,CAAC,YAAD,CAAZ,CAAA;AAEA,KAlK8C;;;AAuK/ChC,IAAAA,iBAAiB,GAAG5c,IAAI,CAAC+e,SAAL,CAAepd,KAAf,CAApB,CAAA;;AACA,IAAA,IAAIib,iBAAJ,EAAuB;AACtBzT,MAAAA,MAAM,GAAGyV,YAAY,CAAC,eAAD,CAArB,CAAA;AACA,KA1K8C;;;AA8K/C5e,IAAAA,IAAI,CAACyS,UAAL,GAAkBwK,OAAO,CAAC7N,KAAR,CAAc1P,MAAd,GAAuB,CAAvB,IAA4Bkd,iBAA9C,CAAA;;AACA,IAAA,IAAIO,aAAJ,EAAmB;AAElB,MAAA,IAAIF,OAAO,CAAC7N,KAAR,CAAc1P,MAAd,GAAuB,CAA3B,EAA8B;AAE7B,QAAA,IAAI,CAACwd,aAAD,IAAkBld,IAAI,CAACM,QAAL,CAAcuK,IAAd,KAAuB,QAAzC,IAAqD7K,IAAI,CAACoP,KAAL,CAAW,CAAX,CAAA,IAAiBzP,SAA1E,EAAqF;AACpFud,UAAAA,aAAa,GAAGld,IAAI,CAACyd,SAAL,CAAezd,IAAI,CAACoP,KAAL,CAAW,CAAX,CAAf,CAAhB,CAAA;AACA,SAAA;;AAED,QAAA,IAAI,CAACiC,gBAAgB,CAAC3M,QAAjB,CAA0BwY,aAA1B,CAAL,EAAgD;AAE/C,UAAI8B,IAAAA,YAAY,GAAG,CAAnB,CAAA;;AACA,UAAI7V,IAAAA,MAAM,IAAI,CAACnJ,IAAI,CAACM,QAAL,CAAcsJ,aAA7B,EAA4C;AAC3CoV,YAAAA,YAAY,GAAG,CAAf,CAAA;AACA,WAAA;;AACD9B,UAAAA,aAAa,GAAGld,IAAI,CAACif,UAAL,EAAA,CAAkBD,YAAlB,CAAhB,CAAA;AACA,SAAA;AAED,OAfD,MAeM,IAAI7V,MAAJ,EAAY;AACjB+T,QAAAA,aAAa,GAAG/T,MAAhB,CAAA;AACA,OAAA;;AAED,MAAA,IAAIqT,eAAe,IAAI,CAACxc,IAAI,CAAC8R,MAA7B,EAAqC;AACpC9R,QAAAA,IAAI,CAACqY,IAAL,EAAA,CAAA;AACArY,QAAAA,IAAI,CAAC8a,cAAL,CAAoBoC,aAApB,EAAkC,MAAlC,CAAA,CAAA;AACA,OAAA;;AACDld,MAAAA,IAAI,CAACwY,eAAL,CAAqB0E,aAArB,CAAA,CAAA;AAEA,KA3BD,MA2BK;AACJld,MAAAA,IAAI,CAAC0Z,iBAAL,EAAA,CAAA;;AACA,MAAA,IAAI8C,eAAe,IAAIxc,IAAI,CAAC8R,MAA5B,EAAoC;AACnC9R,QAAAA,IAAI,CAACwW,KAAL,CAAW,KAAX,EADmC;AAEnC,OAAA;AACD,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;;;AACCyI,EAAAA,UAAU,GAAW;AACpB,IAAA,OAAO,KAAK5N,gBAAL,CAAsB1J,gBAAtB,CAAuC,mBAAvC,CAAP,CAAA;AACA,GAAA;AAID;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACCkI,EAAAA,SAAS,CAAEpJ,IAAF,EAAkByY,YAAY,GAAG,KAAjC,EAAsD;AAC9D,IAAA,MAAMlf,IAAI,GAAG,IAAb,CAD8D;AAI9D;;AACA,IAAA,IAAIe,KAAK,CAACC,OAAN,CAAcyF,IAAd,CAAJ,EAAyB;AACxBzG,MAAAA,IAAI,CAAC6W,UAAL,CAAiBpQ,IAAjB,EAAuByY,YAAvB,CAAA,CAAA;AACA,MAAA,OAAO,KAAP,CAAA;AACA,KAAA;;AAED,IAAA,MAAMre,GAAG,GAAG8K,QAAQ,CAAClF,IAAI,CAACzG,IAAI,CAACM,QAAL,CAAc8J,UAAf,CAAL,CAApB,CAAA;;AACA,IAAA,IAAIvJ,GAAG,KAAK,IAAR,IAAgBb,IAAI,CAACkB,OAAL,CAAaC,cAAb,CAA4BN,GAA5B,CAApB,EAAsD;AACrD,MAAA,OAAO,KAAP,CAAA;AACA,KAAA;;AAED4F,IAAAA,IAAI,CAAC2X,MAAL,GAAgB3X,IAAI,CAAC2X,MAAL,IAAe,EAAEpe,IAAI,CAACuR,KAAtC,CAAA;AACA9K,IAAAA,IAAI,CAACoX,GAAL,GAAa7d,IAAI,CAAC2R,OAAL,GAAe,OAAf,GAAyBlL,IAAI,CAAC2X,MAA3C,CAAA;AACApe,IAAAA,IAAI,CAACkB,OAAL,CAAaL,GAAb,IAAoB4F,IAApB,CAAA;AACAzG,IAAAA,IAAI,CAACoX,SAAL,GAAkB,IAAlB,CAAA;;AAEA,IAAA,IAAI8H,YAAJ,EAAkB;AACjBlf,MAAAA,IAAI,CAAC+S,WAAL,CAAiBlS,GAAjB,IAAwBqe,YAAxB,CAAA;AACAlf,MAAAA,IAAI,CAACF,OAAL,CAAa,YAAb,EAA2Be,GAA3B,EAAgC4F,IAAhC,CAAA,CAAA;AACA,KAAA;;AAED,IAAA,OAAO5F,GAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACCgW,EAAAA,UAAU,CAAEpQ,IAAF,EAAoByY,YAAY,GAAG,KAAnC,EAA+C;AACxD1d,IAAAA,SAAO,CAAEiF,IAAF,EAAS0Y,GAAD,IAAmB;AACjC,MAAA,IAAA,CAAKtP,SAAL,CAAesP,GAAf,EAAoBD,YAApB,CAAA,CAAA;AACA,KAFM,CAAP,CAAA;AAGA,GAAA;AAED;AACD;AACA;;;AACCE,EAAAA,cAAc,CAAE3Y,IAAF,EAAgC;AAC7C,IAAA,OAAO,IAAKoJ,CAAAA,SAAL,CAAepJ,IAAf,CAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCqQ,EAAAA,mBAAmB,CAACrQ,IAAD,EAAiB;AACnC,IAAI5F,IAAAA,GAAG,GAAG8K,QAAQ,CAAClF,IAAI,CAAC,IAAA,CAAKnG,QAAL,CAAckK,kBAAf,CAAL,CAAlB,CAAA;AAEA,IAAA,IAAK3J,GAAG,KAAK,IAAb,EAAoB,OAAO,KAAP,CAAA;AAEpB4F,IAAAA,IAAI,CAAC2X,MAAL,GAAc3X,IAAI,CAAC2X,MAAL,IAAe,EAAE,IAAA,CAAK7M,KAApC,CAAA;AACA,IAAA,IAAA,CAAKzI,SAAL,CAAejI,GAAf,CAAA,GAAsB4F,IAAtB,CAAA;AACA,IAAA,OAAO5F,GAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCwe,EAAAA,cAAc,CAACrR,EAAD,EAAYvH,IAAZ,EAA4B;AACzC,IAAA,IAAI6Y,SAAJ,CAAA;AACA7Y,IAAAA,IAAI,CAAC,IAAKnG,CAAAA,QAAL,CAAckK,kBAAf,CAAJ,GAAyCwD,EAAzC,CAAA;;AAEA,IAAA,IAAIsR,SAAS,GAAG,IAAA,CAAKxI,mBAAL,CAAyBrQ,IAAzB,CAAhB,EAAgD;AAC/C,MAAA,IAAA,CAAK3G,OAAL,CAAa,cAAb,EAA6Bwf,SAA7B,EAAwC7Y,IAAxC,CAAA,CAAA;AACA,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;;;AACC8Y,EAAAA,iBAAiB,CAACvR,EAAD,EAAY;AAC5B,IAAA,IAAI,KAAKlF,SAAL,CAAe3H,cAAf,CAA8B6M,EAA9B,CAAJ,EAAuC;AACtC,MAAA,OAAO,IAAKlF,CAAAA,SAAL,CAAekF,EAAf,CAAP,CAAA;AACA,MAAA,IAAA,CAAKwR,UAAL,EAAA,CAAA;AACA,MAAA,IAAA,CAAK1f,OAAL,CAAa,iBAAb,EAAgCkO,EAAhC,CAAA,CAAA;AACA,KAAA;AACD,GAAA;AAED;AACD;AACA;;;AACCyR,EAAAA,iBAAiB,GAAG;AACnB,IAAK3W,IAAAA,CAAAA,SAAL,GAAiB,EAAjB,CAAA;AACA,IAAA,IAAA,CAAK0W,UAAL,EAAA,CAAA;AACA,IAAK1f,IAAAA,CAAAA,OAAL,CAAa,gBAAb,CAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;AACA;;;AACC4f,EAAAA,YAAY,CAAC9T,KAAD,EAAenF,IAAf,EAA+B;AAC1C,IAAMzG,MAAAA,IAAI,GAAG,IAAb,CAAA;AACA,IAAA,IAAI2f,QAAJ,CAAA;AACA,IAAA,IAAIC,UAAJ,CAAA;AAEA,IAAA,MAAMC,SAAS,GAAIlU,QAAQ,CAACC,KAAD,CAA3B,CAAA;AACA,IAAA,MAAMkU,SAAS,GAAInU,QAAQ,CAAClF,IAAI,CAACzG,IAAI,CAACM,QAAL,CAAc8J,UAAf,CAAL,CAA3B,CAN0C;;AAS1C,IAAIyV,IAAAA,SAAS,KAAK,IAAlB,EAAyB,OAAA;AAEzB,IAAA,MAAME,QAAQ,GAAI/f,IAAI,CAACkB,OAAL,CAAa2e,SAAb,CAAlB,CAAA;AAEA,IAAIE,IAAAA,QAAQ,IAAIpgB,SAAhB,EAA4B,OAAA;AAC5B,IAAI,IAAA,OAAOmgB,SAAP,KAAqB,QAAzB,EAAoC,MAAM,IAAIve,KAAJ,CAAU,kCAAV,CAAN,CAAA;AAGpC,IAAA,MAAM0N,MAAM,GAAIjP,IAAI,CAACyd,SAAL,CAAeoC,SAAf,CAAhB,CAAA;AACA,IAAA,MAAMtG,IAAI,GAAKvZ,IAAI,CAACggB,OAAL,CAAaH,SAAb,CAAf,CAAA;AAGApZ,IAAAA,IAAI,CAAC2X,MAAL,GAAc3X,IAAI,CAAC2X,MAAL,IAAe2B,QAAQ,CAAC3B,MAAtC,CAAA;AACA,IAAA,OAAOpe,IAAI,CAACkB,OAAL,CAAa2e,SAAb,CAAP,CAtB0C;AAyB1C;;AACA7f,IAAAA,IAAI,CAACigB,YAAL,CAAkBH,SAAlB,CAAA,CAAA;AAEA9f,IAAAA,IAAI,CAACkB,OAAL,CAAa4e,SAAb,CAA0BrZ,GAAAA,IAA1B,CA5B0C;;AA+B1C,IAAA,IAAIwI,MAAJ,EAAY;AACX,MAAIjP,IAAAA,IAAI,CAACqR,gBAAL,CAAsB3M,QAAtB,CAA+BuK,MAA/B,CAAJ,EAA4C;AAE3C,QAAMiR,MAAAA,UAAU,GAAGlgB,IAAI,CAAC0T,OAAL,CAAa,QAAb,EAAuBjN,IAAvB,CAAnB,CAAA;;AACAX,QAAAA,WAAW,CAACmJ,MAAD,EAASiR,UAAT,CAAX,CAAA;;AAEA,QAAA,IAAIlgB,IAAI,CAAC6S,YAAL,KAAsB5D,MAA1B,EAAkC;AACjCjP,UAAAA,IAAI,CAACwY,eAAL,CAAqB0H,UAArB,CAAA,CAAA;AACA,SAAA;AACD,OAAA;;AACDjR,MAAAA,MAAM,CAAChL,MAAP,EAAA,CAAA;AACA,KA1CyC;;;AA6C1C,IAAA,IAAIsV,IAAJ,EAAU;AACTqG,MAAAA,UAAU,GAAG5f,IAAI,CAACoP,KAAL,CAAWvP,OAAX,CAAmBggB,SAAnB,CAAb,CAAA;;AACA,MAAA,IAAID,UAAU,KAAK,CAAC,CAApB,EAAuB;AACtB5f,QAAAA,IAAI,CAACoP,KAAL,CAAWxP,MAAX,CAAkBggB,UAAlB,EAA8B,CAA9B,EAAiCE,SAAjC,CAAA,CAAA;AACA,OAAA;;AAEDH,MAAAA,QAAQ,GAAG3f,IAAI,CAAC0T,OAAL,CAAa,MAAb,EAAqBjN,IAArB,CAAX,CAAA;AAEA,MAAA,IAAI8S,IAAI,CAACzV,SAAL,CAAeY,QAAf,CAAwB,QAAxB,CAAJ,EAAwCrB,UAAU,CAACsc,QAAD,EAAU,QAAV,CAAV,CAAA;AAExC7Z,MAAAA,WAAW,CAAEyT,IAAF,EAAQoG,QAAR,CAAX,CAAA;AACA,KAxDyC;;;AA2D1C3f,IAAAA,IAAI,CAACoX,SAAL,GAAiB,IAAjB,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACC+I,EAAAA,YAAY,CAACvU,KAAD,EAAekO,MAAf,EAAqC;AAChD,IAAM9Z,MAAAA,IAAI,GAAG,IAAb,CAAA;AACA4L,IAAAA,KAAK,GAAGC,QAAQ,CAACD,KAAD,CAAhB,CAAA;AAEA5L,IAAAA,IAAI,CAACigB,YAAL,CAAkBrU,KAAlB,CAAA,CAAA;AAEA,IAAA,OAAO5L,IAAI,CAAC+S,WAAL,CAAiBnH,KAAjB,CAAP,CAAA;AACA,IAAA,OAAO5L,IAAI,CAACkB,OAAL,CAAa0K,KAAb,CAAP,CAAA;AACA5L,IAAAA,IAAI,CAACoX,SAAL,GAAiB,IAAjB,CAAA;AACApX,IAAAA,IAAI,CAACF,OAAL,CAAa,eAAb,EAA8B8L,KAA9B,CAAA,CAAA;AACA5L,IAAAA,IAAI,CAACogB,UAAL,CAAgBxU,KAAhB,EAAuBkO,MAAvB,CAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;;;AACCuG,EAAAA,YAAY,CAACjc,MAAD,EAA0B;AAErC,IAAMkc,MAAAA,WAAW,GAAG,CAAClc,MAAM,IAAI,IAAKmc,CAAAA,WAAhB,EAA6BlM,IAA7B,CAAkC,IAAlC,CAApB,CAAA;AAEA,IAAK7H,IAAAA,CAAAA,cAAL,GAAuB,EAAvB,CAAA;AACA,IAAKuG,IAAAA,CAAAA,WAAL,GAAoB,EAApB,CAAA;AACA,IAAA,IAAA,CAAKyM,UAAL,EAAA,CAAA;AAEA,IAAMrP,MAAAA,QAAmB,GAAG,EAA5B,CAAA;AACA3O,IAAAA,SAAO,CAAC,IAAKN,CAAAA,OAAN,EAAc,CAAC+N,MAAD,EAAkBpO,GAAlB,KAA+B;AACnD,MAAA,IAAIyf,WAAW,CAACrR,MAAD,EAAQpO,GAAR,CAAf,EAAuC;AACtCsP,QAAAA,QAAQ,CAACtP,GAAD,CAAR,GAAgBoO,MAAhB,CAAA;AACA,OAAA;AACD,KAJM,CAAP,CAAA;AAMA,IAAA,IAAA,CAAK/N,OAAL,GAAe,IAAA,CAAK2Q,MAAL,CAAYzC,KAAZ,GAAoBe,QAAnC,CAAA;AACA,IAAKiH,IAAAA,CAAAA,SAAL,GAAiB,IAAjB,CAAA;AACA,IAAKtX,IAAAA,CAAAA,OAAL,CAAa,cAAb,CAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCygB,EAAAA,WAAW,CAACtR,MAAD,EAAkBrD,KAAlB,EAA+B;AACzC,IAAI,IAAA,IAAA,CAAKwD,KAAL,CAAWvP,OAAX,CAAmB+L,KAAnB,CAAA,IAA6B,CAAjC,EAAoC;AACnC,MAAA,OAAO,IAAP,CAAA;AACA,KAAA;;AACD,IAAA,OAAO,KAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACC6R,EAAAA,SAAS,CAAC7R,KAAD,EAA6CzC,MAAc,GAAC,KAA5D,EAAoF;AAE5F,IAAA,MAAMoT,MAAM,GAAG5Q,QAAQ,CAACC,KAAD,CAAvB,CAAA;AACA,IAAA,IAAI2Q,MAAM,KAAK,IAAf,EAAsB,OAAO,IAAP,CAAA;AAEtB,IAAA,MAAMtN,MAAM,GAAG,IAAA,CAAK/N,OAAL,CAAaqb,MAAb,CAAf,CAAA;;AACA,IAAItN,IAAAA,MAAM,IAAItP,SAAd,EAAyB;AAExB,MAAIsP,IAAAA,MAAM,CAACuR,IAAX,EAAiB;AAChB,QAAOvR,OAAAA,MAAM,CAACuR,IAAd,CAAA;AACA,OAAA;;AAED,MAAA,IAAIrX,MAAJ,EAAY;AACX,QAAA,OAAO,KAAKuK,OAAL,CAAa,QAAb,EAAuBzE,MAAvB,CAAP,CAAA;AACA,OAAA;AACD,KAAA;;AAED,IAAA,OAAO,IAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCsJ,EAAAA,WAAW,CAAEtJ,MAAF,EAA2BlK,SAA3B,EAA6C4H,IAAW,GAAG,QAA3D,EAAwF;AAClG,IAAI3M,IAAAA,IAAI,GAAG,IAAX;AAAA,QAAiBygB,GAAjB,CAAA;;AAEA,IAAI,IAAA,CAACxR,MAAL,EAAa;AACZ,MAAA,OAAO,IAAP,CAAA;AACA,KAAA;;AAED,IAAItC,IAAAA,IAAI,IAAI,MAAZ,EAAoB;AACnB8T,MAAAA,GAAG,GAAKzgB,IAAI,CAACyb,eAAL,EAAR,CAAA;AACA,KAFD,MAEK;AACJgF,MAAAA,GAAG,GAAKzgB,IAAI,CAACqR,gBAAL,CAAsB1J,gBAAtB,CAAuC,mBAAvC,CAAR,CAAA;AACA,KAAA;;AAED,IAAA,KAAK,IAAIrC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmb,GAAG,CAAC/gB,MAAxB,EAAgC4F,CAAC,EAAjC,EAAqC;AACpC,MAAA,IAAImb,GAAG,CAACnb,CAAD,CAAH,IAAU2J,MAAd,EAAsB;AACrB,QAAA,SAAA;AACA,OAAA;;AAED,MAAIlK,IAAAA,SAAS,GAAG,CAAhB,EAAmB;AAClB,QAAA,OAAO0b,GAAG,CAACnb,CAAC,GAAC,CAAH,CAAV,CAAA;AACA,OAAA;;AAED,MAAA,OAAOmb,GAAG,CAACnb,CAAC,GAAC,CAAH,CAAV,CAAA;AACA,KAAA;;AACD,IAAA,OAAO,IAAP,CAAA;AACA,GAAA;AAGD;AACD;AACA;AACA;AACA;;;AACC0a,EAAAA,OAAO,CAACzG,IAAD,EAAwC;AAE9C,IAAA,IAAI,OAAOA,IAAP,IAAe,QAAnB,EAA6B;AAC5B,MAAA,OAAOA,IAAP,CAAA;AACA,KAAA;;AAED,IAAA,IAAI3N,KAAK,GAAGD,QAAQ,CAAC4N,IAAD,CAApB,CAAA;AACA,IAAA,OAAO3N,KAAK,KAAK,IAAV,GACJ,IAAA,CAAKwF,OAAL,CAAa9O,aAAb,CAA4B,CAAA,aAAA,EAAe6L,UAAU,CAACvC,KAAD,CAAQ,CAA7D,EAAA,CAAA,CADI,GAEJ,IAFH,CAAA;AAGA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCoO,EAAAA,QAAQ,CAAEpJ,MAAF,EAA0BkJ,MAA1B,EAAgD;AACvD,IAAI9Z,IAAAA,IAAI,GAAG,IAAX,CAAA;AAEA,IAAA,IAAIoP,KAAK,GAAGrO,KAAK,CAACC,OAAN,CAAc4P,MAAd,CAAA,GAAwBA,MAAxB,GAAiC,CAACA,MAAD,CAA7C,CAAA;AACAxB,IAAAA,KAAK,GAAGA,KAAK,CAAChL,MAAN,CAAasc,CAAC,IAAI1gB,IAAI,CAACoP,KAAL,CAAWvP,OAAX,CAAmB6gB,CAAnB,CAA0B,KAAA,CAAC,CAA7C,CAAR,CAAA;AACA,IAAMC,MAAAA,SAAS,GAAGvR,KAAK,CAACA,KAAK,CAAC1P,MAAN,GAAe,CAAhB,CAAvB,CAAA;AACA0P,IAAAA,KAAK,CAACtQ,OAAN,CAAcya,IAAI,IAAI;AACrBvZ,MAAAA,IAAI,CAAC4gB,SAAL,GAAkBrH,IAAI,KAAKoH,SAA3B,CAAA;AACA3gB,MAAAA,IAAI,CAAC4X,OAAL,CAAa2B,IAAb,EAAmBO,MAAnB,CAAA,CAAA;AACA,KAHD,CAAA,CAAA;AAIA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACClC,EAAAA,OAAO,CAAEhM,KAAF,EAAgBkO,MAAhB,EAAsC;AAC5C,IAAInb,IAAAA,MAAM,GAAGmb,MAAM,GAAG,EAAH,GAAQ,CAAC,QAAD,EAAU,gBAAV,CAA3B,CAAA;AAEArN,IAAAA,eAAe,CAAC,IAAD,EAAO9N,MAAP,EAAe,MAAM;AACnC,MAAI4a,IAAAA,IAAJ,EAAUsH,OAAV,CAAA;AACA,MAAM7gB,MAAAA,IAAI,GAAG,IAAb,CAAA;AACC,MAAA,MAAM2T,SAAS,GAAG3T,IAAI,CAACM,QAAL,CAAcuK,IAAhC,CAAA;AACD,MAAA,MAAM0R,MAAM,GAAG5Q,QAAQ,CAACC,KAAD,CAAvB,CAAA;;AAEA,MAAA,IAAI2Q,MAAM,IAAIvc,IAAI,CAACoP,KAAL,CAAWvP,OAAX,CAAmB0c,MAAnB,CAAA,KAA+B,CAAC,CAA9C,EAAiD;AAEhD,QAAI5I,IAAAA,SAAS,KAAK,QAAlB,EAA4B;AAC3B3T,UAAAA,IAAI,CAACwW,KAAL,EAAA,CAAA;AACA,SAAA;;AAED,QAAI7C,IAAAA,SAAS,KAAK,QAAd,IAA0B,CAAC3T,IAAI,CAACM,QAAL,CAAcqJ,UAA7C,EAAyD;AACxD,UAAA,OAAA;AACA,SAAA;AACD,OAAA;;AAED,MAAA,IAAI4S,MAAM,KAAK,IAAX,IAAmB,CAACvc,IAAI,CAACkB,OAAL,CAAaC,cAAb,CAA4Bob,MAA5B,CAAxB,EAA6D,OAAA;AAC7D,MAAI5I,IAAAA,SAAS,KAAK,QAAlB,EAA4B3T,IAAI,CAAC+Z,KAAL,CAAWD,MAAX,CAAA,CAAA;AAC5B,MAAInG,IAAAA,SAAS,KAAK,OAAd,IAAyB3T,IAAI,CAAC8gB,MAAL,EAA7B,EAA4C,OAAA;AAE5CvH,MAAAA,IAAI,GAAGvZ,IAAI,CAAC0T,OAAL,CAAa,MAAb,EAAqB1T,IAAI,CAACkB,OAAL,CAAaqb,MAAb,CAArB,CAAP,CAAA;;AAEA,MAAIvc,IAAAA,IAAI,CAACoR,OAAL,CAAa1M,QAAb,CAAsB6U,IAAtB,CAAJ,EAAiC;AAAE;AAClCA,QAAAA,IAAI,GAAGA,IAAI,CAACvS,SAAL,CAAe,IAAf,CAAP,CAAA;AACA,OAAA;;AAED6Z,MAAAA,OAAO,GAAG7gB,IAAI,CAAC8gB,MAAL,EAAV,CAAA;AACA9gB,MAAAA,IAAI,CAACoP,KAAL,CAAWxP,MAAX,CAAkBI,IAAI,CAAC4S,QAAvB,EAAiC,CAAjC,EAAoC2J,MAApC,CAAA,CAAA;AACAvc,MAAAA,IAAI,CAAC+gB,aAAL,CAAmBxH,IAAnB,CAAA,CAAA;;AAEA,MAAIvZ,IAAAA,IAAI,CAACsS,OAAT,EAAkB;AAEjB;AACA,QAAI,IAAA,CAACtS,IAAI,CAAC4gB,SAAN,IAAmB5gB,IAAI,CAACM,QAAL,CAAcoJ,YAArC,EAAmD;AAClD,UAAA,IAAIuF,MAAM,GAAGjP,IAAI,CAACyd,SAAL,CAAelB,MAAf,CAAb,CAAA;AACA,UAAIjE,IAAAA,IAAI,GAAGtY,IAAI,CAACuY,WAAL,CAAiBtJ,MAAjB,EAAyB,CAAzB,CAAX,CAAA;;AACA,UAAA,IAAIqJ,IAAJ,EAAU;AACTtY,YAAAA,IAAI,CAACwY,eAAL,CAAqBF,IAArB,CAAA,CAAA;AACA,WAAA;AACD,SATgB;AAYjB;;;AACA,QAAI,IAAA,CAACtY,IAAI,CAAC4gB,SAAN,IAAmB,CAAC5gB,IAAI,CAACM,QAAL,CAAcgZ,gBAAtC,EAAwD;AACvDtZ,UAAAA,IAAI,CAAC8Y,cAAL,CAAoB9Y,IAAI,CAACoS,SAAL,IAAkBuB,SAAS,KAAK,QAApD,CAAA,CAAA;AACA,SAfgB;;;AAkBjB,QAAA,IAAI3T,IAAI,CAACM,QAAL,CAAcgZ,gBAAd,IAAkC,KAAlC,IAA2CtZ,IAAI,CAAC8gB,MAAL,EAA/C,EAA8D;AAC7D9gB,UAAAA,IAAI,CAACwW,KAAL,EAAA,CAAA;AACA,SAFD,MAEO,IAAI,CAACxW,IAAI,CAAC4gB,SAAV,EAAqB;AAC3B5gB,UAAAA,IAAI,CAACgW,gBAAL,EAAA,CAAA;AACA,SAAA;;AAEDhW,QAAAA,IAAI,CAACF,OAAL,CAAa,UAAb,EAAyByc,MAAzB,EAAiChD,IAAjC,CAAA,CAAA;;AAEA,QAAA,IAAI,CAACvZ,IAAI,CAAC4gB,SAAV,EAAqB;AACpB5gB,UAAAA,IAAI,CAACsW,mBAAL,CAAyB;AAACwD,YAAAA,MAAM,EAAEA,MAAAA;AAAT,WAAzB,CAAA,CAAA;AACA,SAAA;AACD,OAAA;;AAED,MAAA,IAAI,CAAC9Z,IAAI,CAAC4gB,SAAN,IAAoB,CAACC,OAAD,IAAY7gB,IAAI,CAAC8gB,MAAL,EAApC,EAAoD;AACnD9gB,QAAAA,IAAI,CAAC8V,UAAL,EAAA,CAAA;AACA9V,QAAAA,IAAI,CAACqW,YAAL,EAAA,CAAA;AACA,OAAA;AAED,KAnEc,CAAf,CAAA;AAoEA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACC+J,EAAAA,UAAU,CAAE7G,IAAwB,GAAC,IAA3B,EAAiCO,MAAjC,EAAkD;AAC3D,IAAM9Z,MAAAA,IAAI,GAAI,IAAd,CAAA;AACAuZ,IAAAA,IAAI,GAAKvZ,IAAI,CAACggB,OAAL,CAAazG,IAAb,CAAT,CAAA;AAEA,IAAI,IAAA,CAACA,IAAL,EAAY,OAAA;AAEZ,IAAIjU,IAAAA,CAAJ,EAAMsV,GAAN,CAAA;AACA,IAAA,MAAMhP,KAAK,GAAG2N,IAAI,CAAC9J,OAAL,CAAa7D,KAA3B,CAAA;AACAtG,IAAAA,CAAC,GAAGH,SAAS,CAACoU,IAAD,CAAb,CAAA;AAEAA,IAAAA,IAAI,CAACtV,MAAL,EAAA,CAAA;;AACA,IAAIsV,IAAAA,IAAI,CAACzV,SAAL,CAAeY,QAAf,CAAwB,QAAxB,CAAJ,EAAuC;AACtCkW,MAAAA,GAAG,GAAG5a,IAAI,CAAC8S,WAAL,CAAiBjT,OAAjB,CAAyB0Z,IAAzB,CAAN,CAAA;AACAvZ,MAAAA,IAAI,CAAC8S,WAAL,CAAiBlT,MAAjB,CAAwBgb,GAAxB,EAA6B,CAA7B,CAAA,CAAA;AACA5W,MAAAA,aAAa,CAACuV,IAAD,EAAM,QAAN,CAAb,CAAA;AACA,KAAA;;AAEDvZ,IAAAA,IAAI,CAACoP,KAAL,CAAWxP,MAAX,CAAkB0F,CAAlB,EAAqB,CAArB,CAAA,CAAA;AACAtF,IAAAA,IAAI,CAACoX,SAAL,GAAiB,IAAjB,CAAA;;AACA,IAAA,IAAI,CAACpX,IAAI,CAACM,QAAL,CAAc2I,OAAf,IAA0BjJ,IAAI,CAAC+S,WAAL,CAAiB5R,cAAjB,CAAgCyK,KAAhC,CAA9B,EAAsE;AACrE5L,MAAAA,IAAI,CAACmgB,YAAL,CAAkBvU,KAAlB,EAAyBkO,MAAzB,CAAA,CAAA;AACA,KAAA;;AAED,IAAA,IAAIxU,CAAC,GAAGtF,IAAI,CAAC4S,QAAb,EAAuB;AACtB5S,MAAAA,IAAI,CAACoZ,QAAL,CAAcpZ,IAAI,CAAC4S,QAAL,GAAgB,CAA9B,CAAA,CAAA;AACA,KAAA;;AAED5S,IAAAA,IAAI,CAACsW,mBAAL,CAAyB;AAACwD,MAAAA,MAAM,EAAEA,MAAAA;AAAT,KAAzB,CAAA,CAAA;AACA9Z,IAAAA,IAAI,CAACqW,YAAL,EAAA,CAAA;AACArW,IAAAA,IAAI,CAACgW,gBAAL,EAAA,CAAA;AACAhW,IAAAA,IAAI,CAACF,OAAL,CAAa,aAAb,EAA4B8L,KAA5B,EAAmC2N,IAAnC,CAAA,CAAA;AAEA,GAAA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC1B,EAAAA,UAAU,CAAE/K,KAAiB,GAAC,IAApB,EAA0BlO,QAA0B,GAAG,MAAI,EAA3D,EAAuE;AAEhF;AACA,IAAA,IAAIa,SAAS,CAACC,MAAV,KAAqB,CAAzB,EAA4B;AAC3Bd,MAAAA,QAAQ,GAAGa,SAAS,CAAC,CAAD,CAApB,CAAA;AACA,KAAA;;AACD,IAAA,IAAI,OAAOb,QAAP,IAAmB,UAAvB,EAAmC;AAClCA,MAAAA,QAAQ,GAAG,MAAM,EAAjB,CAAA;AACA,KAAA;;AAED,IAAIoB,IAAAA,IAAI,GAAI,IAAZ,CAAA;AACA,IAAA,IAAIghB,KAAK,GAAGhhB,IAAI,CAAC4S,QAAjB,CAAA;AACA,IAAA,IAAIqO,MAAJ,CAAA;AACAnU,IAAAA,KAAK,GAAGA,KAAK,IAAI9M,IAAI,CAACwX,UAAL,EAAjB,CAAA;;AAEA,IAAA,IAAI,CAACxX,IAAI,CAAC+e,SAAL,CAAejS,KAAf,CAAL,EAA4B;AAC3BlO,MAAAA,QAAQ,EAAA,CAAA;AACR,MAAA,OAAO,KAAP,CAAA;AACA,KAAA;;AAEDoB,IAAAA,IAAI,CAACkhB,IAAL,EAAA,CAAA;AAEA,IAAIC,IAAAA,OAAO,GAAG,KAAd,CAAA;;AACA,IAAIhY,IAAAA,MAAM,GAAI1C,IAAD,IAA6B;AACzCzG,MAAAA,IAAI,CAACohB,MAAL,EAAA,CAAA;AAEA,MAAI,IAAA,CAAC3a,IAAD,IAAS,OAAOA,IAAP,KAAgB,QAA7B,EAAuC,OAAO7H,QAAQ,EAAf,CAAA;AACvC,MAAA,IAAIgN,KAAK,GAAGD,QAAQ,CAAClF,IAAI,CAACzG,IAAI,CAACM,QAAL,CAAc8J,UAAf,CAAL,CAApB,CAAA;;AACA,MAAA,IAAI,OAAOwB,KAAP,KAAiB,QAArB,EAA+B;AAC9B,QAAA,OAAOhN,QAAQ,EAAf,CAAA;AACA,OAAA;;AAEDoB,MAAAA,IAAI,CAAC2Z,eAAL,EAAA,CAAA;AACA3Z,MAAAA,IAAI,CAAC6P,SAAL,CAAepJ,IAAf,EAAoB,IAApB,CAAA,CAAA;AACAzG,MAAAA,IAAI,CAACoZ,QAAL,CAAc4H,KAAd,CAAA,CAAA;AACAhhB,MAAAA,IAAI,CAAC4X,OAAL,CAAahM,KAAb,CAAA,CAAA;AACAhN,MAAAA,QAAQ,CAAC6H,IAAD,CAAR,CAAA;AACA0a,MAAAA,OAAO,GAAG,IAAV,CAAA;AACA,KAfD,CAAA;;AAiBA,IAAI,IAAA,OAAOnhB,IAAI,CAACM,QAAL,CAAc6I,MAArB,KAAgC,UAApC,EAAgD;AAC/C8X,MAAAA,MAAM,GAAGjhB,IAAI,CAACM,QAAL,CAAc6I,MAAd,CAAqBtB,IAArB,CAA0B,IAA1B,EAAgCiF,KAAhC,EAAuC3D,MAAvC,CAAT,CAAA;AACA,KAFD,MAEK;AACJ8X,MAAAA,MAAM,GAAG;AACR,QAAA,CAACjhB,IAAI,CAACM,QAAL,CAAc+J,UAAf,GAA4ByC,KADpB;AAER,QAAA,CAAC9M,IAAI,CAACM,QAAL,CAAc8J,UAAf,GAA4B0C,KAAAA;AAFpB,OAAT,CAAA;AAIA,KAAA;;AAED,IAAI,IAAA,CAACqU,OAAL,EAAc;AACbhY,MAAAA,MAAM,CAAC8X,MAAD,CAAN,CAAA;AACA,KAAA;;AAED,IAAA,OAAO,IAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;;;AACC1K,EAAAA,YAAY,GAAG;AACd,IAAIvW,IAAAA,IAAI,GAAG,IAAX,CAAA;AACAA,IAAAA,IAAI,CAACoX,SAAL,GAAiB,IAAjB,CAAA;;AAEA,IAAIpX,IAAAA,IAAI,CAACsS,OAAT,EAAkB;AACjBtS,MAAAA,IAAI,CAACga,QAAL,CAAcha,IAAI,CAACoP,KAAnB,CAAA,CAAA;AACA,KAAA;;AAEDpP,IAAAA,IAAI,CAACsW,mBAAL,EAAA,CAAA;AACAtW,IAAAA,IAAI,CAACqW,YAAL,EAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACCA,EAAAA,YAAY,GAAG;AACd,IAAMrW,MAAAA,IAAI,GAAO,IAAjB,CAAA;AAEAA,IAAAA,IAAI,CAACqhB,oBAAL,EAAA,CAAA;AAEA,IAAA,MAAMP,MAAM,GAAG9gB,IAAI,CAAC8gB,MAAL,EAAf,CAAA;AACA,IAAA,MAAM3O,QAAQ,GAAGnS,IAAI,CAACmS,QAAtB,CAAA;AAEAnS,IAAAA,IAAI,CAACyE,OAAL,CAAaX,SAAb,CAAuB4X,MAAvB,CAA8B,KAA9B,EAAoC1b,IAAI,CAAC0R,GAAzC,CAAA,CAAA;AAGA,IAAA,MAAM4P,cAAc,GAAGthB,IAAI,CAACyE,OAAL,CAAaX,SAApC,CAAA;AAEAwd,IAAAA,cAAc,CAAC5F,MAAf,CAAsB,OAAtB,EAA+B1b,IAAI,CAACoS,SAApC,CAAA,CAAA;AACAkP,IAAAA,cAAc,CAAC5F,MAAf,CAAsB,UAAtB,EAAkC1b,IAAI,CAAC+R,UAAvC,CAAA,CAAA;AACAuP,IAAAA,cAAc,CAAC5F,MAAf,CAAsB,UAAtB,EAAkC1b,IAAI,CAACgS,UAAvC,CAAA,CAAA;AACAsP,IAAAA,cAAc,CAAC5F,MAAf,CAAsB,SAAtB,EAAiC,CAAC1b,IAAI,CAACkS,OAAvC,CAAA,CAAA;AACAoP,IAAAA,cAAc,CAAC5F,MAAf,CAAsB,QAAtB,EAAgCvJ,QAAhC,CAAA,CAAA;AACAmP,IAAAA,cAAc,CAAC5F,MAAf,CAAsB,MAAtB,EAA8BoF,MAA9B,CAAA,CAAA;AACAQ,IAAAA,cAAc,CAAC5F,MAAf,CAAsB,cAAtB,EAAsC1b,IAAI,CAACoS,SAAL,IAAkB,CAACpS,IAAI,CAACqS,aAA9D,CAAA,CAAA;AACAiP,IAAAA,cAAc,CAAC5F,MAAf,CAAsB,iBAAtB,EAAyC1b,IAAI,CAAC8R,MAA9C,CAAA,CAAA;AACAwP,IAAAA,cAAc,CAAC5F,MAAf,CAAsB,aAAtB,EAAqC1W,aAAa,CAAChF,IAAI,CAACkB,OAAN,CAAlD,CAAA,CAAA;AACAogB,IAAAA,cAAc,CAAC5F,MAAf,CAAsB,WAAtB,EAAmC1b,IAAI,CAACoP,KAAL,CAAW1P,MAAX,GAAoB,CAAvD,CAAA,CAAA;AAEA,GAAA;AAGD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC2hB,EAAAA,oBAAoB,GAAG;AACtB,IAAIrhB,IAAAA,IAAI,GAAG,IAAX,CAAA;;AAEA,IAAA,IAAI,CAACA,IAAI,CAAC8M,KAAL,CAAWyU,QAAhB,EAA0B;AACzB,MAAA,OAAA;AACA,KAAA;;AAEDvhB,IAAAA,IAAI,CAACkS,OAAL,GAAelS,IAAI,CAAC8M,KAAL,CAAWyU,QAAX,CAAoBC,KAAnC,CAAA;AACAxhB,IAAAA,IAAI,CAACiS,SAAL,GAAiB,CAACjS,IAAI,CAACkS,OAAvB,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;AACA;;;AACC4O,EAAAA,MAAM,GAAG;AACR,IAAA,OAAO,IAAKxgB,CAAAA,QAAL,CAAcmJ,QAAd,KAA2B,IAA3B,IAAmC,IAAK2F,CAAAA,KAAL,CAAW1P,MAAX,IAAqB,IAAKY,CAAAA,QAAL,CAAcmJ,QAA7E,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACC6M,EAAAA,mBAAmB,CAAEmL,IAAiB,GAAG,EAAtB,EAA0B;AAC5C,IAAMzhB,MAAAA,IAAI,GAAG,IAAb,CAAA;AACA,IAAIiP,IAAAA,MAAJ,EAAYiF,KAAZ,CAAA;AAEA,IAAMwN,MAAAA,YAAY,GAAG1hB,IAAI,CAAC8M,KAAL,CAAWxK,aAAX,CAAyB,kBAAzB,CAArB,CAAA;;AAEA,IAAItC,IAAAA,IAAI,CAACyR,aAAT,EAAwB;AAEvB,MAAMtB,MAAAA,QAA4B,GAAI,EAAtC,CAAA;AACA,MAAMwR,MAAAA,YAAmB,GAAM3hB,IAAI,CAAC8M,KAAL,CAAWnF,gBAAX,CAA4B,gBAA5B,CAAA,CAA8CjI,MAA7E,CAAA;;AAEA,MAAA,SAASkiB,WAAT,CAAqBpE,SAArB,EAAuD5R,KAAvD,EAAqEsI,KAArE,EAAoG;AAEnG,QAAI,IAAA,CAACsJ,SAAL,EAAgB;AACfA,UAAAA,SAAS,GAAG9b,MAAM,CAAC,iBAAoBoK,GAAAA,WAAW,CAACF,KAAD,CAA/B,GAAyC,IAAzC,GAAgDE,WAAW,CAACoI,KAAD,CAA3D,GAAqE,WAAtE,CAAlB,CAAA;AACA,SAJkG;AAOnG;;;AACA,QAAIsJ,IAAAA,SAAS,IAAIkE,YAAjB,EAA+B;AAC9B1hB,UAAAA,IAAI,CAAC8M,KAAL,CAAWsB,MAAX,CAAkBoP,SAAlB,CAAA,CAAA;AACA,SAAA;;AAEDrN,QAAAA,QAAQ,CAAC7Q,IAAT,CAAcke,SAAd,EAZmG;AAenG;;AACA,QAAA,IAAIA,SAAS,IAAIkE,YAAb,IAA6BC,YAAY,GAAG,CAAhD,EAAmD;AAClDnE,UAAAA,SAAS,CAACrN,QAAV,GAAqB,IAArB,CAAA;AACA,SAAA;;AAED,QAAA,OAAOqN,SAAP,CAAA;AACA,OA1BsB;;;AA6BvBxd,MAAAA,IAAI,CAAC8M,KAAL,CAAWnF,gBAAX,CAA4B,gBAA5B,CAA8C7I,CAAAA,OAA9C,CAAuD0e,SAAD,IAAuB;AACxDA,QAAAA,SAApB,CAA+BrN,QAA/B,GAA0C,KAA1C,CAAA;AACA,OAFD,EA7BuB;;AAmCvB,MAAA,IAAInQ,IAAI,CAACoP,KAAL,CAAW1P,MAAX,IAAqB,CAArB,IAA0BM,IAAI,CAACM,QAAL,CAAcuK,IAAd,IAAsB,QAApD,EAA8D;AAE7D+W,QAAAA,WAAW,CAACF,YAAD,EAAe,EAAf,EAAmB,EAAnB,CAAX,CAF6D;AAK7D,OALD,MAKK;AAEJ1hB,QAAAA,IAAI,CAACoP,KAAL,CAAWtQ,OAAX,CAAoB8M,KAAD,IAAS;AAC3BqD,UAAAA,MAAM,GAAKjP,IAAI,CAACkB,OAAL,CAAa0K,KAAb,CAAX,CAAA;AACAsI,UAAAA,KAAK,GAAKjF,MAAM,CAACjP,IAAI,CAACM,QAAL,CAAc+J,UAAf,CAAN,IAAoC,EAA9C,CAAA;;AAEA,UAAI8F,IAAAA,QAAQ,CAACuN,QAAT,CAAkBzO,MAAM,CAACiB,OAAzB,CAAJ,EAAuC;AACtC,YAAA,MAAM2R,SAAS,GAAG7hB,IAAI,CAAC8M,KAAL,CAAWxK,aAAX,CAA0B,CAAA,cAAA,EAAgB6L,UAAU,CAACvC,KAAD,CAAQ,kBAA5D,CAAlB,CAAA;AACAgW,YAAAA,WAAW,CAACC,SAAD,EAAYjW,KAAZ,EAAmBsI,KAAnB,CAAX,CAAA;AACA,WAHD,MAGK;AACJjF,YAAAA,MAAM,CAACiB,OAAP,GAAiB0R,WAAW,CAAC3S,MAAM,CAACiB,OAAR,EAAiBtE,KAAjB,EAAwBsI,KAAxB,CAA5B,CAAA;AACA,WAAA;AACD,SAVD,CAAA,CAAA;AAYA,OAAA;AAED,KAxDD,MAwDO;AACNlU,MAAAA,IAAI,CAAC8M,KAAL,CAAWlB,KAAX,GAAmB5L,IAAI,CAAC6Z,QAAL,EAAnB,CAAA;AACA,KAAA;;AAED,IAAI7Z,IAAAA,IAAI,CAACsS,OAAT,EAAkB;AACjB,MAAA,IAAI,CAACmP,IAAI,CAAC3H,MAAV,EAAkB;AACjB9Z,QAAAA,IAAI,CAACF,OAAL,CAAa,QAAb,EAAuBE,IAAI,CAAC6Z,QAAL,EAAvB,CAAA,CAAA;AACA,OAAA;AACD,KAAA;AACD,GAAA;AAED;AACD;AACA;AACA;;;AACCxB,EAAAA,IAAI,GAAG;AACN,IAAIrY,IAAAA,IAAI,GAAG,IAAX,CAAA;AAEA,IAAIA,IAAAA,IAAI,CAACmS,QAAL,IAAiBnS,IAAI,CAAC8R,MAAtB,IAAiC9R,IAAI,CAACM,QAAL,CAAcuK,IAAd,KAAuB,OAAvB,IAAkC7K,IAAI,CAAC8gB,MAAL,EAAvE,EAAuF,OAAA;AACvF9gB,IAAAA,IAAI,CAAC8R,MAAL,GAAc,IAAd,CAAA;AACAtM,IAAAA,OAAO,CAACxF,IAAI,CAACsR,UAAN,EAAiB;AAAC,MAAiB,eAAA,EAAA,MAAA;AAAlB,KAAjB,CAAP,CAAA;AACAtR,IAAAA,IAAI,CAACqW,YAAL,EAAA,CAAA;AACArT,IAAAA,QAAQ,CAAChD,IAAI,CAACmR,QAAN,EAAe;AAAC2Q,MAAAA,UAAU,EAAE,QAAb;AAAuBC,MAAAA,OAAO,EAAE,OAAA;AAAhC,KAAf,CAAR,CAAA;AACA/hB,IAAAA,IAAI,CAACgW,gBAAL,EAAA,CAAA;AACAhT,IAAAA,QAAQ,CAAChD,IAAI,CAACmR,QAAN,EAAe;AAAC2Q,MAAAA,UAAU,EAAE,SAAb;AAAwBC,MAAAA,OAAO,EAAE,OAAA;AAAjC,KAAf,CAAR,CAAA;AACA/hB,IAAAA,IAAI,CAACoU,KAAL,EAAA,CAAA;AACApU,IAAAA,IAAI,CAACF,OAAL,CAAa,eAAb,EAA8BE,IAAI,CAACmR,QAAnC,CAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;;;AACCqF,EAAAA,KAAK,CAACmD,eAAe,GAAC,IAAjB,EAAuB;AAC3B,IAAI3Z,IAAAA,IAAI,GAAG,IAAX,CAAA;AACA,IAAA,IAAIF,OAAO,GAAGE,IAAI,CAAC8R,MAAnB,CAAA;;AAEA,IAAA,IAAI6H,eAAJ,EAAqB;AAEpB;AACA3Z,MAAAA,IAAI,CAAC2Z,eAAL,EAAA,CAAA;;AAEA,MAAA,IAAI3Z,IAAI,CAACM,QAAL,CAAcuK,IAAd,KAAuB,QAAvB,IAAmC7K,IAAI,CAACoP,KAAL,CAAW1P,MAAlD,EAA0D;AACzDM,QAAAA,IAAI,CAAC0a,SAAL,EAAA,CAAA;AACA,OAAA;AACD,KAAA;;AAED1a,IAAAA,IAAI,CAAC8R,MAAL,GAAc,KAAd,CAAA;AACAtM,IAAAA,OAAO,CAACxF,IAAI,CAACsR,UAAN,EAAiB;AAAC,MAAiB,eAAA,EAAA,OAAA;AAAlB,KAAjB,CAAP,CAAA;AACAtO,IAAAA,QAAQ,CAAChD,IAAI,CAACmR,QAAN,EAAe;AAAC4Q,MAAAA,OAAO,EAAE,MAAA;AAAV,KAAf,CAAR,CAAA;;AACA,IAAA,IAAI/hB,IAAI,CAACM,QAAL,CAAcoJ,YAAlB,EAAgC;AAC/B1J,MAAAA,IAAI,CAAC0Z,iBAAL,EAAA,CAAA;AACA,KAAA;;AACD1Z,IAAAA,IAAI,CAACqW,YAAL,EAAA,CAAA;AAEA,IAAIvW,IAAAA,OAAJ,EAAaE,IAAI,CAACF,OAAL,CAAa,gBAAb,EAA+BE,IAAI,CAACmR,QAApC,CAAA,CAAA;AACb,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACC6E,EAAAA,gBAAgB,GAAE;AAEjB,IAAA,IAAI,KAAK1V,QAAL,CAAc8K,cAAd,KAAiC,MAArC,EAA6C;AAC5C,MAAA,OAAA;AACA,KAAA;;AAED,IAAI4W,IAAAA,OAAO,GAAK,IAAA,CAAK5Q,OAArB,CAAA;AACA,IAAA,IAAI6Q,IAAI,GAAKD,OAAO,CAAC1G,qBAAR,EAAb,CAAA;AACA,IAAA,IAAIC,GAAG,GAAMyG,OAAO,CAAC5G,YAAR,GAAuB6G,IAAI,CAAC1G,GAA5B,GAAmCpI,MAAM,CAAC+O,OAAvD,CAAA;AACA,IAAIC,IAAAA,IAAI,GAAKF,IAAI,CAACE,IAAL,GAAYhP,MAAM,CAACiP,OAAhC,CAAA;AAGApf,IAAAA,QAAQ,CAAC,IAAKmO,CAAAA,QAAN,EAAe;AACtBqD,MAAAA,KAAK,EAAGyN,IAAI,CAACzN,KAAL,GAAa,IADC;AAEtB+G,MAAAA,GAAG,EAAKA,GAAG,GAAG,IAFQ;AAGtB4G,MAAAA,IAAI,EAAIA,IAAI,GAAG,IAAA;AAHO,KAAf,CAAR,CAAA;AAMA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCpI,EAAAA,KAAK,CAACD,MAAD,EAAkB;AACtB,IAAI9Z,IAAAA,IAAI,GAAG,IAAX,CAAA;AAEA,IAAA,IAAI,CAACA,IAAI,CAACoP,KAAL,CAAW1P,MAAhB,EAAwB,OAAA;AAExB,IAAA,IAAI0P,KAAK,GAAGpP,IAAI,CAACyb,eAAL,EAAZ,CAAA;AACAja,IAAAA,SAAO,CAAC4N,KAAD,EAAQmK,IAAD,IAAgB;AAC7BvZ,MAAAA,IAAI,CAACogB,UAAL,CAAgB7G,IAAhB,EAAqB,IAArB,CAAA,CAAA;AACA,KAFM,CAAP,CAAA;AAIAvZ,IAAAA,IAAI,CAACgZ,SAAL,EAAA,CAAA;AACA,IAAA,IAAI,CAACc,MAAL,EAAc9Z,IAAI,CAACsW,mBAAL,EAAA,CAAA;AACdtW,IAAAA,IAAI,CAACF,OAAL,CAAa,OAAb,CAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCihB,EAAAA,aAAa,CAACnd,EAAD,EAAiB;AAC7B,IAAM5D,MAAAA,IAAI,GAAI,IAAd,CAAA;AACA,IAAA,MAAMghB,KAAK,GAAIhhB,IAAI,CAAC4S,QAApB,CAAA;AACA,IAAA,MAAMrO,MAAM,GAAGvE,IAAI,CAACoR,OAApB,CAAA;AAEA7M,IAAAA,MAAM,CAACua,YAAP,CAAoBlb,EAApB,EAAwBW,MAAM,CAACgM,QAAP,CAAgByQ,KAAhB,CAAA,IAA0B,IAAlD,CAAA,CAAA;AACAhhB,IAAAA,IAAI,CAACoZ,QAAL,CAAc4H,KAAK,GAAG,CAAtB,CAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACCnI,EAAAA,eAAe,CAAC/D,CAAD,EAA0B;AACxC,IAAA,IAAI/P,SAAJ,EAAesd,SAAf,EAA0BrB,KAA1B,EAAiCsB,IAAjC,CAAA;AACA,IAAItiB,IAAAA,IAAI,GAAG,IAAX,CAAA;AAEA+E,IAAAA,SAAS,GAAI+P,CAAC,IAAIA,CAAC,CAACmD,OAAF,KAAcE,aAApB,GAA+C,CAAC,CAAhD,GAAoD,CAAhE,CAAA;AACAkK,IAAAA,SAAS,GAAGxV,YAAY,CAAC7M,IAAI,CAACkR,aAAN,CAAxB,CALwC;;AASxC,IAAMqR,MAAAA,QAAkB,GAAG,EAA3B,CAAA;;AAEA,IAAA,IAAIviB,IAAI,CAAC8S,WAAL,CAAiBpT,MAArB,EAA6B;AAE5B4iB,MAAAA,IAAI,GAAGzd,OAAO,CAAC7E,IAAI,CAAC8S,WAAN,EAAmB/N,SAAnB,CAAd,CAAA;AACAic,MAAAA,KAAK,GAAG7b,SAAS,CAACmd,IAAD,CAAjB,CAAA;;AAEA,MAAIvd,IAAAA,SAAS,GAAG,CAAhB,EAAmB;AAAEic,QAAAA,KAAK,EAAA,CAAA;AAAK,OAAA;;AAE/Bxf,MAAAA,SAAO,CAACxB,IAAI,CAAC8S,WAAN,EAAoByG,IAAD,IAAkBgJ,QAAQ,CAACjjB,IAAT,CAAcia,IAAd,CAArC,CAAP,CAAA;AAEA,KATD,MASO,IAAI,CAACvZ,IAAI,CAACoS,SAAL,IAAkBpS,IAAI,CAACM,QAAL,CAAcuK,IAAd,KAAuB,QAA1C,KAAuD7K,IAAI,CAACoP,KAAL,CAAW1P,MAAtE,EAA8E;AACpF,MAAA,MAAM0P,KAAK,GAAGpP,IAAI,CAACyb,eAAL,EAAd,CAAA;AACA,MAAA,IAAI+G,OAAJ,CAAA;;AACA,MAAA,IAAIzd,SAAS,GAAG,CAAZ,IAAiBsd,SAAS,CAACtV,KAAV,KAAoB,CAArC,IAA0CsV,SAAS,CAAC3iB,MAAV,KAAqB,CAAnE,EAAsE;AACrE8iB,QAAAA,OAAO,GAAGpT,KAAK,CAACpP,IAAI,CAAC4S,QAAL,GAAgB,CAAjB,CAAf,CAAA;AAEA,OAHD,MAGM,IAAI7N,SAAS,GAAG,CAAZ,IAAiBsd,SAAS,CAACtV,KAAV,KAAoB/M,IAAI,CAACwX,UAAL,EAAA,CAAkB9X,MAA3D,EAAmE;AACxE8iB,QAAAA,OAAO,GAAGpT,KAAK,CAACpP,IAAI,CAAC4S,QAAN,CAAf,CAAA;AACA,OAAA;;AAED,MAAI4P,IAAAA,OAAO,KAAK7iB,SAAhB,EAA2B;AAC1B4iB,QAAAA,QAAQ,CAACjjB,IAAT,CAAekjB,OAAf,CAAA,CAAA;AACA,OAAA;AACD,KAAA;;AAED,IAAI,IAAA,CAACxiB,IAAI,CAACyiB,YAAL,CAAkBF,QAAlB,EAA2BzN,CAA3B,CAAL,EAAoC;AACnC,MAAA,OAAO,KAAP,CAAA;AACA,KAAA;;AAED5H,IAAAA,cAAc,CAAC4H,CAAD,EAAG,IAAH,CAAd,CAvCwC;;AA0CxC,IAAA,IAAI,OAAOkM,KAAP,KAAiB,WAArB,EAAkC;AACjChhB,MAAAA,IAAI,CAACoZ,QAAL,CAAc4H,KAAd,CAAA,CAAA;AACA,KAAA;;AAED,IAAOuB,OAAAA,QAAQ,CAAC7iB,MAAhB,EAAwB;AACvBM,MAAAA,IAAI,CAACogB,UAAL,CAAgBmC,QAAQ,CAACG,GAAT,EAAhB,CAAA,CAAA;AACA,KAAA;;AAED1iB,IAAAA,IAAI,CAACgZ,SAAL,EAAA,CAAA;AACAhZ,IAAAA,IAAI,CAACgW,gBAAL,EAAA,CAAA;AACAhW,IAAAA,IAAI,CAAC8Y,cAAL,CAAoB,KAApB,CAAA,CAAA;AAEA,IAAA,OAAO,IAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;;;AACC2J,EAAAA,YAAY,CAACrT,KAAD,EAAiBjC,GAAjB,EAA8C;AAEzD,IAAA,MAAMyD,MAAM,GAAGxB,KAAK,CAACzL,GAAN,CAAU4V,IAAI,IAAIA,IAAI,CAAC9J,OAAL,CAAa7D,KAA/B,CAAf,CAFyD;;AAKzD,IAAI,IAAA,CAACgF,MAAM,CAAClR,MAAR,IAAmB,OAAO,IAAA,CAAKY,QAAL,CAAcqiB,QAArB,KAAkC,UAAlC,IAAgD,IAAA,CAAKriB,QAAL,CAAcqiB,QAAd,CAAuB/R,MAAvB,EAA8BzD,GAA9B,CAAuC,KAAA,KAA9G,EAAsH;AACrH,MAAA,OAAO,KAAP,CAAA;AACA,KAAA;;AAED,IAAA,OAAO,IAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;;;AACCyL,EAAAA,gBAAgB,CAAC7T,SAAD,EAAmB+P,CAAnB,EAAgD;AAC/D,IAAA,IAAI6F,WAAJ;AAAA,QAAiBiI,QAAjB;AAAA,QAA2B5iB,IAAI,GAAG,IAAlC,CAAA;AAEA,IAAA,IAAIA,IAAI,CAAC0R,GAAT,EAAc3M,SAAS,IAAI,CAAC,CAAd,CAAA;AACd,IAAA,IAAI/E,IAAI,CAACwX,UAAL,GAAkB9X,MAAtB,EAA+B,OAJgC;;AAQ/D,IAAA,IAAI8N,SAAS,CAAC2K,YAAD,EAAwBrD,CAAxB,CAAT,IAAuCtH,SAAS,CAAC,UAAD,EAAYsH,CAAZ,CAApD,EAAoE;AAEnE6F,MAAAA,WAAW,GAAK3a,IAAI,CAACua,aAAL,CAAmBxV,SAAnB,CAAhB,CAAA;;AACA,MAAA,IAAI4V,WAAJ,EAAiB;AAEhB,QAAI,IAAA,CAACA,WAAW,CAAC7W,SAAZ,CAAsBY,QAAtB,CAA+B,QAA/B,CAAL,EAA+C;AAC9Cke,UAAAA,QAAQ,GAAKjI,WAAb,CAAA;AACA,SAFD,MAEK;AACJiI,UAAAA,QAAQ,GAAK5iB,IAAI,CAACuY,WAAL,CAAiBoC,WAAjB,EAA6B5V,SAA7B,EAAuC,MAAvC,CAAb,CAAA;AACA,SANe;;AAShB,OATD,MASM,IAAIA,SAAS,GAAG,CAAhB,EAAmB;AACxB6d,QAAAA,QAAQ,GAAK5iB,IAAI,CAACkR,aAAL,CAAmB2R,kBAAhC,CAAA;AACA,OAFK,MAED;AACJD,QAAAA,QAAQ,GAAK5iB,IAAI,CAACkR,aAAL,CAAmB3L,sBAAhC,CAAA;AACA,OAAA;;AAGD,MAAA,IAAIqd,QAAJ,EAAc;AACb,QAAIA,IAAAA,QAAQ,CAAC9e,SAAT,CAAmBY,QAAnB,CAA4B,QAA5B,CAAJ,EAA2C;AAC1C1E,UAAAA,IAAI,CAACya,gBAAL,CAAsBE,WAAtB,CAAA,CAAA;AACA,SAAA;;AACD3a,QAAAA,IAAI,CAACwa,kBAAL,CAAwBoI,QAAxB,EAJa;AAKb,OAxBkE;;AA2BnE,KA3BD,MA2BK;AACJ5iB,MAAAA,IAAI,CAAC8iB,SAAL,CAAe/d,SAAf,CAAA,CAAA;AACA,KAAA;AACD,GAAA;;AAED+d,EAAAA,SAAS,CAAC/d,SAAD,EAAkB,EAAE;AAE7B;AACD;AACA;AACA;;;AACCwV,EAAAA,aAAa,CAACxV,SAAD,EAAmB;AAE/B,IAAI4V,IAAAA,WAAW,GAAG,IAAKvJ,CAAAA,OAAL,CAAa9O,aAAb,CAA2B,cAA3B,CAAlB,CAAA;;AACA,IAAA,IAAIqY,WAAJ,EAAiB;AAChB,MAAA,OAAOA,WAAP,CAAA;AACA,KAAA;;AAGD,IAAIyB,IAAAA,MAAM,GAAG,IAAKhL,CAAAA,OAAL,CAAazJ,gBAAb,CAA8B,SAA9B,CAAb,CAAA;;AACA,IAAA,IAAIyU,MAAJ,EAAY;AACX,MAAA,OAAOvX,OAAO,CAACuX,MAAD,EAAQrX,SAAR,CAAd,CAAA;AACA,KAAA;AACD,GAAA;AAGD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACCqU,EAAAA,QAAQ,CAAC2J,OAAD,EAAiB;AACxB,IAAA,IAAA,CAAKnQ,QAAL,GAAgB,IAAKxD,CAAAA,KAAL,CAAW1P,MAA3B,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACC+b,EAAAA,eAAe,GAAY;AAC1B,IAAO1a,OAAAA,KAAK,CAACwG,IAAN,CAAY,IAAA,CAAK6J,OAAL,CAAazJ,gBAAb,CAA8B,gBAA9B,CAAZ,CAAP,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACCuZ,EAAAA,IAAI,GAAG;AACN,IAAK/O,IAAAA,CAAAA,QAAL,GAAgB,IAAhB,CAAA;AACA,IAAA,IAAA,CAAKkE,YAAL,EAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;;;AACC+K,EAAAA,MAAM,GAAG;AACR,IAAKjP,IAAAA,CAAAA,QAAL,GAAgB,KAAhB,CAAA;AACA,IAAA,IAAA,CAAKkE,YAAL,EAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACCI,EAAAA,OAAO,GAAG;AACT,IAAIzW,IAAAA,IAAI,GAAG,IAAX,CAAA;AACAA,IAAAA,IAAI,CAAC8M,KAAL,CAAWmD,QAAX,GAAyB,IAAzB,CAAA;AACAjQ,IAAAA,IAAI,CAACkR,aAAL,CAAmBjB,QAAnB,GAA+B,IAA/B,CAAA;AACAjQ,IAAAA,IAAI,CAACsR,UAAL,CAAgBE,QAAhB,GAA4B,CAAC,CAA7B,CAAA;AACAxR,IAAAA,IAAI,CAAC+R,UAAL,GAAsB,IAAtB,CAAA;AACA,IAAA,IAAA,CAAKyE,KAAL,EAAA,CAAA;AACAxW,IAAAA,IAAI,CAACkhB,IAAL,EAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;;;AACCxK,EAAAA,MAAM,GAAG;AACR,IAAI1W,IAAAA,IAAI,GAAG,IAAX,CAAA;AACAA,IAAAA,IAAI,CAAC8M,KAAL,CAAWmD,QAAX,GAAyB,KAAzB,CAAA;AACAjQ,IAAAA,IAAI,CAACkR,aAAL,CAAmBjB,QAAnB,GAA+B,KAA/B,CAAA;AACAjQ,IAAAA,IAAI,CAACsR,UAAL,CAAgBE,QAAhB,GAA4BxR,IAAI,CAACwR,QAAjC,CAAA;AACAxR,IAAAA,IAAI,CAAC+R,UAAL,GAAsB,KAAtB,CAAA;AACA/R,IAAAA,IAAI,CAACohB,MAAL,EAAA,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACC4B,EAAAA,OAAO,GAAG;AACT,IAAIhjB,IAAAA,IAAI,GAAG,IAAX,CAAA;AACA,IAAA,IAAIkW,cAAc,GAAGlW,IAAI,CAACkW,cAA1B,CAAA;AAEAlW,IAAAA,IAAI,CAACF,OAAL,CAAa,SAAb,CAAA,CAAA;AACAE,IAAAA,IAAI,CAACT,GAAL,EAAA,CAAA;AACAS,IAAAA,IAAI,CAACyE,OAAL,CAAaR,MAAb,EAAA,CAAA;AACAjE,IAAAA,IAAI,CAACmR,QAAL,CAAclN,MAAd,EAAA,CAAA;AAEAjE,IAAAA,IAAI,CAAC8M,KAAL,CAAW5K,SAAX,GAAuBgU,cAAc,CAAChU,SAAtC,CAAA;AACAlC,IAAAA,IAAI,CAAC8M,KAAL,CAAW0E,QAAX,GAAsB0E,cAAc,CAAC1E,QAArC,CAAA;AAEAxN,IAAAA,aAAa,CAAChE,IAAI,CAAC8M,KAAN,EAAY,aAAZ,EAA0B,sBAA1B,CAAb,CAAA;;AAEA9M,IAAAA,IAAI,CAAC4R,QAAL,EAAA,CAAA;;AAEA,IAAA,OAAO5R,IAAI,CAAC8M,KAAL,CAAWmG,SAAlB,CAAA;AACA,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACCvH,EAAAA,MAAM,CAAEuX,YAAF,EAAiCxc,IAAjC,EAA6D;AAClE,IAAIuH,IAAAA,EAAJ,EAAQ2O,IAAR,CAAA;AACA,IAAM3c,MAAAA,IAAI,GAAG,IAAb,CAAA;;AAEA,IAAI,IAAA,OAAO,IAAKM,CAAAA,QAAL,CAAcoL,MAAd,CAAqBuX,YAArB,CAAP,KAA8C,UAAlD,EAA8D;AAC7D,MAAA,OAAO,IAAP,CAAA;AACA,KANiE;;;AASlEtG,IAAAA,IAAI,GAAG3c,IAAI,CAACM,QAAL,CAAcoL,MAAd,CAAqBuX,YAArB,CAAA,CAAmCpb,IAAnC,CAAwC,IAAxC,EAA8CpB,IAA9C,EAAoDqF,WAApD,CAAP,CAAA;;AAEA,IAAI,IAAA,CAAC6Q,IAAL,EAAW;AACV,MAAA,OAAO,IAAP,CAAA;AACA,KAAA;;AAEDA,IAAAA,IAAI,GAAGjb,MAAM,CAAEib,IAAF,CAAb,CAfkE;;AAkBlE,IAAA,IAAIsG,YAAY,KAAK,QAAjB,IAA6BA,YAAY,KAAK,eAAlD,EAAmE;AAElE,MAAIxc,IAAAA,IAAI,CAACzG,IAAI,CAACM,QAAL,CAAcgK,aAAf,CAAR,EAAuC;AACtC9E,QAAAA,OAAO,CAACmX,IAAD,EAAM;AAAC,UAAgB,eAAA,EAAA,MAAA;AAAjB,SAAN,CAAP,CAAA;AACA,OAFD,MAEK;AACJnX,QAAAA,OAAO,CAACmX,IAAD,EAAM;AAAC,UAAmB,iBAAA,EAAA,EAAA;AAApB,SAAN,CAAP,CAAA;AACA,OAAA;AAED,KARD,MAQM,IAAIsG,YAAY,KAAK,UAArB,EAAiC;AACtCjV,MAAAA,EAAE,GAAGvH,IAAI,CAACqJ,KAAL,CAAW9P,IAAI,CAACM,QAAL,CAAckK,kBAAzB,CAAL,CAAA;AACAhF,MAAAA,OAAO,CAACmX,IAAD,EAAM;AAAC,QAAc3O,YAAAA,EAAAA,EAAAA;AAAf,OAAN,CAAP,CAAA;;AACA,MAAGvH,IAAAA,IAAI,CAACqJ,KAAL,CAAW9P,IAAI,CAACM,QAAL,CAAcgK,aAAzB,CAAH,EAA4C;AAC3C9E,QAAAA,OAAO,CAACmX,IAAD,EAAM;AAAC,UAAiB,eAAA,EAAA,EAAA;AAAlB,SAAN,CAAP,CAAA;AACA,OAAA;AACD,KAAA;;AAED,IAAA,IAAIsG,YAAY,KAAK,QAAjB,IAA6BA,YAAY,KAAK,MAAlD,EAA0D;AACzD,MAAA,MAAMrX,KAAK,GAAGC,QAAQ,CAACpF,IAAI,CAACzG,IAAI,CAACM,QAAL,CAAc8J,UAAf,CAAL,CAAtB,CAAA;AACA5E,MAAAA,OAAO,CAACmX,IAAD,EAAM;AAAC,QAAc/Q,YAAAA,EAAAA,KAAAA;AAAf,OAAN,CAAP,CAFyD;;AAMzD,MAAIqX,IAAAA,YAAY,KAAK,MAArB,EAA6B;AAC5B5f,QAAAA,UAAU,CAACsZ,IAAD,EAAM3c,IAAI,CAACM,QAAL,CAAc4K,SAApB,CAAV,CAAA;AACA1F,QAAAA,OAAO,CAACmX,IAAD,EAAM;AAAC,UAAe,cAAA,EAAA,EAAA;AAAhB,SAAN,CAAP,CAAA;AACA,OAHD,MAGK;AACJtZ,QAAAA,UAAU,CAACsZ,IAAD,EAAM3c,IAAI,CAACM,QAAL,CAAc6K,WAApB,CAAV,CAAA;AACA3F,QAAAA,OAAO,CAACmX,IAAD,EAAM;AACZ3I,UAAAA,IAAI,EAAC,QADO;AAEZhG,UAAAA,EAAE,EAACvH,IAAI,CAACoX,GAAAA;AAFI,SAAN,CAAP,CAFI;;AAQJpX,QAAAA,IAAI,CAAC+Z,IAAL,GAAY7D,IAAZ,CAAA;AACA3c,QAAAA,IAAI,CAACkB,OAAL,CAAa0K,KAAb,IAAsBnF,IAAtB,CAAA;AACA,OAAA;AAGD,KAAA;;AAED,IAAA,OAAOkW,IAAP,CAAA;AAEA,GAAA;AAGD;AACD;AACA;AACA;;;AACCjJ,EAAAA,OAAO,CAAEuP,YAAF,EAAiCxc,IAAjC,EAAwD;AAC9D,IAAMkW,MAAAA,IAAI,GAAG,IAAKjR,CAAAA,MAAL,CAAYuX,YAAZ,EAA0Bxc,IAA1B,CAAb,CAAA;;AAEA,IAAIkW,IAAAA,IAAI,IAAI,IAAZ,EAAkB;AACjB,MAAA,MAAM,sBAAN,CAAA;AACA,KAAA;;AACD,IAAA,OAAOA,IAAP,CAAA;AACA,GAAA;AAGD;AACD;AACA;AACA;AACA;AACA;;;AACC6C,EAAAA,UAAU,GAAO;AAEhBhe,IAAAA,SAAO,CAAC,IAAA,CAAKN,OAAN,EAAgB+N,MAAD,IAAoB;AACzC,MAAIA,IAAAA,MAAM,CAACuR,IAAX,EAAiB;AAChBvR,QAAAA,MAAM,CAACuR,IAAP,CAAYvc,MAAZ,EAAA,CAAA;AACA,QAAOgL,OAAAA,MAAM,CAACuR,IAAd,CAAA;AACA,OAAA;AACD,KALM,CAAP,CAAA;AAOA,GAAA;AAED;AACD;AACA;AACA;;;AACCP,EAAAA,YAAY,CAACrU,KAAD,EAAc;AAEzB,IAAA,MAAM4R,SAAS,GAAK,IAAA,CAAKC,SAAL,CAAe7R,KAAf,CAApB,CAAA;AACA,IAAA,IAAI4R,SAAJ,EAAgBA,SAAS,CAACvZ,MAAV,EAAA,CAAA;AAEhB,GAAA;AAED;AACD;AACA;AACA;AACA;;;AACC8a,EAAAA,SAAS,CAAEjS,KAAF,EAAyB;AACjC,IAAO,OAAA,IAAA,CAAKxM,QAAL,CAAc6I,MAAd,IAAyB2D,KAAK,CAACpN,MAAN,GAAe,CAAxC,IAA+C,IAAKY,CAAAA,QAAL,CAAc+I,YAAf,CAAiDxB,IAAjD,CAAsD,IAAtD,EAA4DiF,KAA5D,CAArD,CAAA;AACA,GAAA;AAGD;AACD;AACA;AACA;AACA;AACA;AACA;;;AACCoW,EAAAA,IAAI,CAAEC,IAAF,EAAeC,MAAf,EAA8BC,MAA9B,EAA0C;AAC7C,IAAIrjB,IAAAA,IAAI,GAAG,IAAX,CAAA;AACA,IAAA,IAAIsjB,WAAW,GAAGtjB,IAAI,CAACojB,MAAD,CAAtB,CAAA;;AAGApjB,IAAAA,IAAI,CAACojB,MAAD,CAAJ,GAAe,YAAU;AACxB,MAAIhH,IAAAA,MAAJ,EAAYmH,UAAZ,CAAA;;AAEA,MAAIJ,IAAAA,IAAI,KAAK,OAAb,EAAsB;AACrB/G,QAAAA,MAAM,GAAGkH,WAAW,CAACrjB,KAAZ,CAAkBD,IAAlB,EAAwBP,SAAxB,CAAT,CAAA;AACA,OAAA;;AAED8jB,MAAAA,UAAU,GAAGF,MAAM,CAACpjB,KAAP,CAAaD,IAAb,EAAmBP,SAAnB,CAAb,CAAA;;AAEA,MAAI0jB,IAAAA,IAAI,KAAK,SAAb,EAAwB;AACvB,QAAA,OAAOI,UAAP,CAAA;AACA,OAAA;;AAED,MAAIJ,IAAAA,IAAI,KAAK,QAAb,EAAuB;AACtB/G,QAAAA,MAAM,GAAGkH,WAAW,CAACrjB,KAAZ,CAAkBD,IAAlB,EAAwBP,SAAxB,CAAT,CAAA;AACA,OAAA;;AAED,MAAA,OAAO2c,MAAP,CAAA;AACA,KAlBD,CAAA;AAoBA,GAAA;;AA3oF4D;;AC1C9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKe,wBAAyB,IAAA;AACvC9O,EAAAA,QAAQ,CAAC,IAAA,CAAKR,KAAN,EAAY,QAAZ,EAAqB,MAAI;AAChC,IAAA,IAAA,CAAKsJ,IAAL,EAAA,CAAA;AACA,GAFO,CAAR,CAAA;AAGA;;ACtBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOe,yBAAyB,IAAA;AACvC,EAAIpW,IAAAA,IAAI,GAAG,IAAX,CAAA;AACA,EAAA,IAAIwjB,mBAAmB,GAAGxjB,IAAI,CAACkV,cAA/B,CAAA;AAEAlV,EAAAA,IAAI,CAACM,QAAL,CAAcoJ,YAAd,GAA6B,KAA7B,CAJuC;;AAQvC,EAAA,IAAI+Z,cAAc,GAAG,SAAjBA,cAAiB,CAASxU,MAAT,EAA4B;AAChD1C,IAAAA,UAAU,CAAC,MAAI;AACd,MAAA,IAAImX,QAAQ,GAAGzU,MAAM,CAAC3M,aAAP,CAAqB,OAArB,CAAf,CAAA;;AACA,MAAIohB,IAAAA,QAAQ,YAAYC,gBAAxB,EAA0C;AACzC,QAAI1U,IAAAA,MAAM,CAACnL,SAAP,CAAiBY,QAAjB,CAA0B,UAA1B,CAAJ,EAA2C;AAC1Cgf,UAAAA,QAAQ,CAACE,OAAT,GAAmB,IAAnB,CAAA;AACA,SAFD,MAEK;AACJF,UAAAA,QAAQ,CAACE,OAAT,GAAmB,KAAnB,CAAA;AACA,SAAA;AACD,OAAA;AACD,KATS,EASR,CATQ,CAAV,CAAA;AAUA,GAXD,CARuC;;;AAsBvC5jB,EAAAA,IAAI,CAACkjB,IAAL,CAAU,OAAV,EAAkB,gBAAlB,EAAmC,MAAM;AAExC,IAAIW,IAAAA,kBAAkB,GAAG7jB,IAAI,CAACM,QAAL,CAAcoL,MAAd,CAAqBuD,MAA9C,CAAA;;AAEAjP,IAAAA,IAAI,CAACM,QAAL,CAAcoL,MAAd,CAAqBuD,MAArB,GAA8B,CAACxI,IAAD,EAAOqF,WAAP,KAAuB;AACpD,MAAA,IAAIgY,QAAQ,GAAGpiB,MAAM,CAACmiB,kBAAkB,CAAChc,IAAnB,CAAwB7H,IAAxB,EAA8ByG,IAA9B,EAAoCqF,WAApC,CAAD,CAArB,CAAA;AACA,MAAA,IAAI4X,QAAQ,GAAG1hB,QAAQ,CAACC,aAAT,CAAuB,OAAvB,CAAf,CAAA;AACAyhB,MAAAA,QAAQ,CAACnW,gBAAT,CAA0B,OAA1B,EAAkC,UAASJ,GAAT,EAAa;AAC9CD,QAAAA,cAAc,CAACC,GAAD,CAAd,CAAA;AACA,OAFD,CAAA,CAAA;AAIAuW,MAAAA,QAAQ,CAAC/W,IAAT,GAAgB,UAAhB,CAAA;AACA,MAAA,MAAM4P,MAAM,GAAG5Q,QAAQ,CAAClF,IAAI,CAACzG,IAAI,CAACM,QAAL,CAAc8J,UAAf,CAAL,CAAvB,CAAA;;AAGA,MAAA,IAAImS,MAAM,IAAIvc,IAAI,CAACoP,KAAL,CAAWvP,OAAX,CAAmB0c,MAAnB,CAAA,GAA6B,CAAC,CAA5C,EAA+C;AAC9CmH,QAAAA,QAAQ,CAACE,OAAT,GAAmB,IAAnB,CAAA;AACA,OAAA;;AAEDE,MAAAA,QAAQ,CAACC,OAAT,CAAiBL,QAAjB,CAAA,CAAA;AACA,MAAA,OAAOI,QAAP,CAAA;AACA,KAjBD,CAAA;AAkBA,GAtBD,EAtBuC;;AA+CvC9jB,EAAAA,IAAI,CAACb,EAAL,CAAQ,aAAR,EAAuByM,KAAD,IAAkB;AACvC,IAAA,IAAIqD,MAAM,GAAGjP,IAAI,CAACyd,SAAL,CAAe7R,KAAf,CAAb,CAAA;;AAEA,IAAA,IAAIqD,MAAJ,EAAY;AAAE;AACbA,MAAAA,MAAM,CAACnL,SAAP,CAAiBG,MAAjB,CAAwB,UAAxB,EADW;;AAEXwf,MAAAA,cAAc,CAACxU,MAAD,CAAd,CAAA;AACA,KAAA;AACD,GAPD,EA/CuC;;AAyDvCjP,EAAAA,IAAI,CAACb,EAAL,CAAQ,UAAR,EAAoByM,KAAD,IAAkB;AACpC,IAAA,IAAIqD,MAAM,GAAGjP,IAAI,CAACyd,SAAL,CAAe7R,KAAf,CAAb,CAAA;;AAEA,IAAA,IAAIqD,MAAJ,EAAY;AAAE;AACbwU,MAAAA,cAAc,CAACxU,MAAD,CAAd,CAAA;AACA,KAAA;AACD,GAND,EAzDuC;;AAmEvCjP,EAAAA,IAAI,CAACkjB,IAAL,CAAU,SAAV,EAAoB,gBAApB,EAAqC,CAAE/V,GAAF,EAAqB8B,MAArB,KAA2C;AAE/E,IAAIA,IAAAA,MAAM,CAACnL,SAAP,CAAiBY,QAAjB,CAA0B,UAA1B,CAAJ,EAA2C;AAC1CuK,MAAAA,MAAM,CAACnL,SAAP,CAAiBG,MAAjB,CAAwB,UAAxB,CAAA,CAAA;AACAjE,MAAAA,IAAI,CAACogB,UAAL,CAAgBnR,MAAM,CAACQ,OAAP,CAAe7D,KAA/B,CAAA,CAAA;AACA5L,MAAAA,IAAI,CAAC8Y,cAAL,EAAA,CAAA;AACA5L,MAAAA,cAAc,CAACC,GAAD,EAAK,IAAL,CAAd,CAAA;AACA,MAAA,OAAA;AACM,KAAA;;AAEPqW,IAAAA,mBAAmB,CAAC3b,IAApB,CAAyB7H,IAAzB,EAA+BmN,GAA/B,EAAoC8B,MAApC,CAAA,CAAA;AAEAwU,IAAAA,cAAc,CAACxU,MAAD,CAAd,CAAA;AACA,GAbD,CAAA,CAAA;AAeA;;ACtGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMe,qBAAA,EAAyB8D,WAAzB,EAAgD;AAC9D,EAAM/S,MAAAA,IAAI,GAAG,IAAb,CAAA;AAEA,EAAA,MAAMkB,OAAO,GAAGgC,MAAM,CAACC,MAAP,CAAc;AAC7BwD,IAAAA,SAAS,EAAE,cADkB;AAE7Bqd,IAAAA,KAAK,EAAE,WAFsB;AAG7BrH,IAAAA,IAAI,EAAGlW,IAAD,IAAoB;AACzB,MAAQ,OAAA,CAAA,YAAA,EAAcA,IAAI,CAACE,SAAU,YAAWF,IAAI,CAACud,KAAM,CAA3D,gBAAA,CAAA,CAAA;AACA,KAAA;AAL4B,GAAd,EAMbjR,WANa,CAAhB,CAAA;AAQA/S,EAAAA,IAAI,CAACb,EAAL,CAAQ,YAAR,EAAqB,MAAI;AACxB,IAAI8kB,IAAAA,MAAM,GAAGviB,MAAM,CAACR,OAAO,CAACyb,IAAR,CAAazb,OAAb,CAAD,CAAnB,CAAA;AACA+iB,IAAAA,MAAM,CAAC1W,gBAAP,CAAwB,OAAxB,EAAiCJ,GAAD,IAAO;AAEtC,MAAInN,IAAAA,IAAI,CAAC+R,UAAT,EAAqB;AACpB,QAAA,OAAA;AACA,OAAA;;AAED/R,MAAAA,IAAI,CAAC+Z,KAAL,EAAA,CAAA;;AAEA,MAAA,IAAI/Z,IAAI,CAACM,QAAL,CAAcuK,IAAd,KAAuB,QAAvB,IAAmC7K,IAAI,CAACM,QAAL,CAAcyJ,gBAArD,EAAuE;AACtE/J,QAAAA,IAAI,CAAC4X,OAAL,CAAa,EAAb,CAAA,CAAA;AACA,OAAA;;AAEDzK,MAAAA,GAAG,CAACD,cAAJ,EAAA,CAAA;AACAC,MAAAA,GAAG,CAACE,eAAJ,EAAA,CAAA;AACA,KAdD,CAAA,CAAA;AAeArN,IAAAA,IAAI,CAACoR,OAAL,CAAanK,WAAb,CAAyBgd,MAAzB,CAAA,CAAA;AACA,GAlBD,CAAA,CAAA;AAoBA;;AClDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIe,kBAAyB,IAAA;AACvC,EAAIjkB,IAAAA,IAAI,GAAG,IAAX,CAAA;AACA,EAAA,IAAI,CAACkkB,CAAC,CAACvjB,EAAF,CAAKwjB,QAAV,EAAoB,MAAM,IAAI5iB,KAAJ,CAAU,uDAAV,CAAN,CAAA;AACpB,EAAA,IAAIvB,IAAI,CAACM,QAAL,CAAcuK,IAAd,KAAuB,OAA3B,EAAoC,OAAA;AAEpC,EAAA,IAAIuZ,SAAS,GAAIpkB,IAAI,CAACkhB,IAAtB,CAAA;AACA,EAAA,IAAImD,WAAW,GAAIrkB,IAAI,CAACohB,MAAxB,CAAA;AAEAphB,EAAAA,IAAI,CAACkjB,IAAL,CAAU,SAAV,EAAoB,MAApB,EAA2B,MAAI;AAC9B,IAAA,IAAIiB,QAAQ,GAAGD,CAAC,CAAClkB,IAAI,CAACoR,OAAN,CAAD,CAAgB3K,IAAhB,CAAqB,UAArB,CAAf,CAAA;AACA,IAAA,IAAI0d,QAAJ,EAAcA,QAAQ,CAAC1N,OAAT,EAAA,CAAA;AACd,IAAA,OAAO2N,SAAS,CAACvc,IAAV,CAAe7H,IAAf,CAAP,CAAA;AACA,GAJD,CAAA,CAAA;AAMAA,EAAAA,IAAI,CAACkjB,IAAL,CAAU,SAAV,EAAoB,QAApB,EAA6B,MAAI;AAChC,IAAA,IAAIiB,QAAQ,GAAGD,CAAC,CAAClkB,IAAI,CAACoR,OAAN,CAAD,CAAgB3K,IAAhB,CAAqB,UAArB,CAAf,CAAA;AACA,IAAA,IAAI0d,QAAJ,EAAcA,QAAQ,CAACzN,MAAT,EAAA,CAAA;AACd,IAAA,OAAO2N,WAAW,CAACxc,IAAZ,CAAiB7H,IAAjB,CAAP,CAAA;AACA,GAJD,CAAA,CAAA;AAMAA,EAAAA,IAAI,CAACb,EAAL,CAAQ,YAAR,EAAqB,MAAI;AACxB,IAAImlB,IAAAA,QAAQ,GAAGJ,CAAC,CAAClkB,IAAI,CAACoR,OAAN,CAAD,CAAgB+S,QAAhB,CAAyB;AACvC/U,MAAAA,KAAK,EAAE,cADgC;AAEvCmV,MAAAA,oBAAoB,EAAE,IAFiB;AAGvCtU,MAAAA,QAAQ,EAAEjQ,IAAI,CAACmS,QAHwB;AAIvCpF,MAAAA,KAAK,EAAE,CAAC+H,CAAD,EAAI0P,EAAJ,KAAW;AACjBA,QAAAA,EAAE,CAACjZ,WAAH,CAAetI,GAAf,CAAmB,OAAnB,EAA4BuhB,EAAE,CAACC,MAAH,CAAUxhB,GAAV,CAAc,OAAd,CAA5B,CAAA,CAAA;AACAqhB,QAAAA,QAAQ,CAACrhB,GAAT,CAAa;AAACyhB,UAAAA,QAAQ,EAAE,SAAA;AAAX,SAAb,CAAA,CAAA;AACA,OAPsC;AAQvCtX,MAAAA,IAAI,EAAE,MAAI;AACTkX,QAAAA,QAAQ,CAACrhB,GAAT,CAAa;AAACyhB,UAAAA,QAAQ,EAAE,QAAA;AAAX,SAAb,CAAA,CAAA;AAEA,QAAI9T,IAAAA,MAAe,GAAG,EAAtB,CAAA;AACA0T,QAAAA,QAAQ,CAAC/T,QAAT,CAAkB,cAAlB,CAAkCoU,CAAAA,IAAlC,CAAuC,YAA0B;AAChE,UAAA,IAAI,IAAKlV,CAAAA,OAAL,CAAa7D,KAAjB,EAAyBgF,MAAM,CAACtR,IAAP,CAAY,IAAA,CAAKmQ,OAAL,CAAa7D,KAAzB,CAAA,CAAA;AACzB,SAFD,CAAA,CAAA;AAIA5L,QAAAA,IAAI,CAACmX,QAAL,CAAcvG,MAAd,CAAA,CAAA;AACA,OAAA;AAjBsC,KAAzB,CAAf,CAAA;AAoBA,GArBD,CAAA,CAAA;AAuBA;;AC5DD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOe,wBAAA,EAAyBmC,WAAzB,EAAgD;AAC9D,EAAM/S,MAAAA,IAAI,GAAG,IAAb,CAAA;AAEA,EAAA,MAAMkB,OAAO,GAAGgC,MAAM,CAACC,MAAP,CAAc;AAC7B6gB,IAAAA,KAAK,EAAW,UADa;AAE7BY,IAAAA,WAAW,EAAK,iBAFa;AAG7BC,IAAAA,aAAa,EAAG,uBAHa;AAI7BC,IAAAA,UAAU,EAAM,uBAJa;AAK7BC,IAAAA,UAAU,EAAM,uBALa;AAO7BpI,IAAAA,IAAI,EAAGlW,IAAD,IAAoB;AACzB,MAAA,OACC,iBAAiBA,IAAI,CAACme,WAAtB,GAAoC,IAApC,GACC,cADD,GACkBne,IAAI,CAACoe,aADvB,GACuC,IADvC,GAEE,eAFF,GAEoBpe,IAAI,CAACqe,UAFzB,GAEsC,IAFtC,GAE6Cre,IAAI,CAACud,KAFlD,GAE0D,SAF1D,GAGE,YAHF,GAGiBvd,IAAI,CAACse,UAHtB,GAGmC,eAHnC,GAIC,QAJD,GAKA,QAND,CAAA;AAQA,KAAA;AAhB4B,GAAd,EAiBbhS,WAjBa,CAAhB,CAAA;AAmBA/S,EAAAA,IAAI,CAACb,EAAL,CAAQ,YAAR,EAAqB,MAAI;AACxB,IAAIqf,IAAAA,MAAM,GAAG9c,MAAM,CAACR,OAAO,CAACyb,IAAR,CAAazb,OAAb,CAAD,CAAnB,CAAA;AAEA,IAAI8jB,IAAAA,UAAU,GAAGxG,MAAM,CAAClc,aAAP,CAAqB,GAAIpB,GAAAA,OAAO,CAAC6jB,UAAjC,CAAjB,CAAA;;AACA,IAAA,IAAIC,UAAJ,EAAgB;AACfA,MAAAA,UAAU,CAACzX,gBAAX,CAA4B,OAA5B,EAAqCJ,GAAD,IAAO;AAC1CD,QAAAA,cAAc,CAACC,GAAD,EAAK,IAAL,CAAd,CAAA;AACAnN,QAAAA,IAAI,CAACwW,KAAL,EAAA,CAAA;AACA,OAHD,CAAA,CAAA;AAIA,KAAA;;AAEDxW,IAAAA,IAAI,CAACmR,QAAL,CAAc2N,YAAd,CAA2BN,MAA3B,EAAmCxe,IAAI,CAACmR,QAAL,CAAc9O,UAAjD,CAAA,CAAA;AACA,GAZD,CAAA,CAAA;AAcA;;ACxDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMe,uBAAyB,IAAA;AACvC,EAAIrC,IAAAA,IAAI,GAAG,IAAX,CAAA;AAEA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AACCA,EAAAA,IAAI,CAACkjB,IAAL,CAAU,SAAV,EAAoB,UAApB,EAAgCH,OAAD,IAAoB;AAElD,IAAA,IAAI/iB,IAAI,CAACM,QAAL,CAAcuK,IAAd,KAAuB,QAAvB,IAAmC,CAAC7K,IAAI,CAACoR,OAAL,CAAa1M,QAAb,CAAsB1E,IAAI,CAACkR,aAA3B,CAAxC,EAAoF;AACnF6R,MAAAA,OAAO,GAAG/iB,IAAI,CAACoP,KAAL,CAAW1P,MAArB,CAAA;AACA,KAFD,MAEO;AACNqjB,MAAAA,OAAO,GAAG3W,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACiR,GAAL,CAASrd,IAAI,CAACoP,KAAL,CAAW1P,MAApB,EAA4BqjB,OAA5B,CAAZ,CAAV,CAAA;;AAEA,MAAIA,IAAAA,OAAO,IAAI/iB,IAAI,CAAC4S,QAAhB,IAA4B,CAAC5S,IAAI,CAAC4gB,SAAtC,EAAiD;AAEhD5gB,QAAAA,IAAI,CAACyb,eAAL,EAAuB3c,CAAAA,OAAvB,CAA+B,CAAC2R,KAAD,EAAOgM,CAAP,KAAa;AAC3C,UAAIA,IAAAA,CAAC,GAAGsG,OAAR,EAAiB;AAChB/iB,YAAAA,IAAI,CAACkR,aAAL,CAAmBiF,qBAAnB,CAAyC,aAAzC,EAAwD1F,KAAxD,CAAA,CAAA;AACA,WAFD,MAEO;AACNzQ,YAAAA,IAAI,CAACoR,OAAL,CAAanK,WAAb,CAA0BwJ,KAA1B,CAAA,CAAA;AACA,WAAA;AACD,SAND,CAAA,CAAA;AAOA,OAAA;AACD,KAAA;;AAEDzQ,IAAAA,IAAI,CAAC4S,QAAL,GAAgBmQ,OAAhB,CAAA;AACA,GApBD,CAAA,CAAA;AAsBA/iB,EAAAA,IAAI,CAACkjB,IAAL,CAAU,SAAV,EAAoB,WAApB,EAAiCne,SAAD,IAAsB;AAErD,IAAA,IAAI,CAAC/E,IAAI,CAACoS,SAAV,EAAsB,OAF+B;;AAKrD,IAAA,MAAMuI,WAAW,GAAI3a,IAAI,CAACua,aAAL,CAAmBxV,SAAnB,CAArB,CAAA;;AACA,IAAA,IAAI4V,WAAJ,EAAiB;AAChB,MAAA,MAAMC,GAAG,GAAGzV,SAAS,CAACwV,WAAD,CAArB,CAAA;AACA3a,MAAAA,IAAI,CAACoZ,QAAL,CAAcrU,SAAS,GAAG,CAAZ,GAAgB6V,GAAG,GAAG,CAAtB,GAAyBA,GAAvC,CAAA,CAAA;AACA5a,MAAAA,IAAI,CAACmZ,aAAL,EAAA,CAAA;AACAnV,MAAAA,aAAa,CAAC2W,WAAD,EAA4B,aAA5B,CAAb,CAJgB;AAOhB,KAPD,MAOK;AACJ3a,MAAAA,IAAI,CAACoZ,QAAL,CAAcpZ,IAAI,CAAC4S,QAAL,GAAgB7N,SAA9B,CAAA,CAAA;AAEA,KAAA;AAED,GAlBD,CAAA,CAAA;AAoBA;;ACxED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQe,uBAAyB,IAAA;AACvC,EAAM/E,MAAAA,IAAI,GAAG,IAAb,CAAA;AAEAA,EAAAA,IAAI,CAACM,QAAL,CAAciJ,UAAd,GAA2B,IAA3B,CAHuC;;AAKvCvJ,EAAAA,IAAI,CAACkjB,IAAL,CAAU,QAAV,EAAmB,OAAnB,EAA2B,MAAI;AAC9BljB,IAAAA,IAAI,CAACsR,UAAL,GAAmBtR,IAAI,CAACoR,OAAxB,CAAA;AAEA/N,IAAAA,UAAU,CAAErD,IAAI,CAACkR,aAAP,EAAsB,gBAAtB,CAAV,CAAA;AAEC,IAAA,MAAM+T,GAAG,GAAGvjB,MAAM,CAAC,mCAAD,CAAlB,CAAA;AACDujB,IAAAA,GAAG,CAAC7W,MAAJ,CAAWpO,IAAI,CAACkR,aAAhB,CAAA,CAAA;AACAlR,IAAAA,IAAI,CAACmR,QAAL,CAAc2N,YAAd,CAA2BmG,GAA3B,EAAgCjlB,IAAI,CAACmR,QAAL,CAAc9O,UAA9C,EAP8B;;AAU9B,IAAA,MAAMkJ,WAAW,GAAG7J,MAAM,CAAC,mDAAD,CAA1B,CAAA;AACA6J,IAAAA,WAAW,CAACA,WAAZ,GAA0BvL,IAAI,CAACM,QAAL,CAAciL,WAAd,IAA4B,EAAtD,CAAA;AACAvL,IAAAA,IAAI,CAACoR,OAAL,CAAahD,MAAb,CAAoB7C,WAApB,CAAA,CAAA;AAEA,GAdD,CAAA,CAAA;AAiBAvL,EAAAA,IAAI,CAACb,EAAL,CAAQ,YAAR,EAAqB,MAAI;AAExB;AACAa,IAAAA,IAAI,CAACkR,aAAL,CAAmB3D,gBAAnB,CAAoC,SAApC,EAA+CJ,GAAD,IAAsB;AACpE;AACC,MAAQA,QAAAA,GAAG,CAAC8K,OAAZ;AACC,QAAKE,KAAAA,OAAL;AACC,UAAInY,IAAAA,IAAI,CAAC8R,MAAT,EAAiB;AAChB5E,YAAAA,cAAc,CAACC,GAAD,EAAK,IAAL,CAAd,CAAA;AACAnN,YAAAA,IAAI,CAACwW,KAAL,EAAA,CAAA;AACA,WAAA;;AACDxW,UAAAA,IAAI,CAACqX,gBAAL,EAAA,CAAA;AACD,UAAA,OAAA;;AACA,QAAKc,KAAAA,OAAL;AACCnY,UAAAA,IAAI,CAACsR,UAAL,CAAgBE,QAAhB,GAA2B,CAAC,CAA5B,CAAA;AACD,UAAA,MAAA;AAVD,OAAA;;AAYA,MAAOxR,OAAAA,IAAI,CAACqV,SAAL,CAAexN,IAAf,CAAoB7H,IAApB,EAAyBmN,GAAzB,CAAP,CAAA;AACA,KAfD,CAAA,CAAA;AAiBAnN,IAAAA,IAAI,CAACb,EAAL,CAAQ,MAAR,EAAe,MAAI;AAClBa,MAAAA,IAAI,CAACsR,UAAL,CAAgBE,QAAhB,GAA2BxR,IAAI,CAAC+R,UAAL,GAAkB,CAAC,CAAnB,GAAuB/R,IAAI,CAACwR,QAAvD,CAAA;AACA,KAFD,EApBwB;;AA0BxBxR,IAAAA,IAAI,CAACb,EAAL,CAAQ,eAAR,EAAwB,MAAK;AAC5Ba,MAAAA,IAAI,CAACkR,aAAL,CAAmBkD,KAAnB,EAAA,CAAA;AACA,KAFD,EA1BwB;;AA+BxB,IAAA,MAAM8Q,WAAW,GAAGllB,IAAI,CAACwV,MAAzB,CAAA;AACAxV,IAAAA,IAAI,CAACkjB,IAAL,CAAU,SAAV,EAAoB,QAApB,EAA8B/V,GAAD,IAAmB;AAC/C,MAAIA,IAAAA,GAAG,IAAIA,GAAG,CAACgY,aAAJ,IAAqBnlB,IAAI,CAACkR,aAArC,EAAqD,OAAA;AACrD,MAAA,OAAOgU,WAAW,CAACrd,IAAZ,CAAiB7H,IAAjB,CAAP,CAAA;AACA,KAHD,CAAA,CAAA;AAKAsN,IAAAA,QAAQ,CAACtN,IAAI,CAACkR,aAAN,EAAoB,MAApB,EAA4B,MAAMlR,IAAI,CAACwV,MAAL,EAAlC,CAAR,CArCwB;;AAwCxBxV,IAAAA,IAAI,CAACkjB,IAAL,CAAU,QAAV,EAAmB,OAAnB,EAA2B,MAAK;AAE/B,MAAA,IAAI,CAACljB,IAAI,CAAC8R,MAAV,EAAmB,OAAA;AACnB9R,MAAAA,IAAI,CAACsR,UAAL,CAAgB8C,KAAhB,CAAsB;AAACgR,QAAAA,aAAa,EAAE,IAAA;AAAhB,OAAtB,CAAA,CAAA;AACA,KAJD,CAAA,CAAA;AAMA,GA9CD,CAAA,CAAA;AAgDA;;AC3FD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKe,uBAAyB,IAAA;AACvC,EAAIplB,IAAAA,IAAI,GAAO,IAAf,CAAA;AAEAA,EAAAA,IAAI,CAACb,EAAL,CAAQ,YAAR,EAAqB,MAAI;AAGxB,IAAA,IAAIkmB,UAAU,GAAMrjB,QAAQ,CAACC,aAAT,CAAuB,MAAvB,CAApB,CAAA;AACA,IAAA,IAAImP,OAAO,GAAOpR,IAAI,CAACkR,aAAvB,CAAA;AACAmU,IAAAA,UAAU,CAACjiB,KAAX,CAAiBkiB,OAAjB,GAA2B,0FAA3B,CAAA;AAEAtlB,IAAAA,IAAI,CAACyE,OAAL,CAAawC,WAAb,CAAyBoe,UAAzB,CAAA,CAAA;AAGA,IAAA,IAAIE,eAAe,GAAK,CAAE,eAAF,EAAmB,UAAnB,EAA+B,YAA/B,EAA6C,YAA7C,EAA2D,eAA3D,CAAxB,CAAA;;AAEA,IAAA,KAAK,MAAMC,UAAX,IAAyBD,eAAzB,EAA0C;AACzC;AACAF,MAAAA,UAAU,CAACjiB,KAAX,CAAiBoiB,UAAjB,CAA+BpU,GAAAA,OAAO,CAAChO,KAAR,CAAcoiB,UAAd,CAA/B,CAAA;AACA,KAAA;AAGD;AACF;AACA;AACA;;;AACE,IAAIC,IAAAA,MAAM,GAAG,MAAI;AAChBJ,MAAAA,UAAU,CAACnW,WAAX,GAAyBkC,OAAO,CAACxF,KAAjC,CAAA;AACAwF,MAAAA,OAAO,CAAChO,KAAR,CAAcoR,KAAd,GAAuB6Q,UAAU,CAACK,WAAX,GAAuB,IAA9C,CAAA;AACA,KAHD,CAAA;;AAKAD,IAAAA,MAAM,EAAA,CAAA;AACNzlB,IAAAA,IAAI,CAACb,EAAL,CAAQ,6BAAR,EAAsCsmB,MAAtC,CAAA,CAAA;AACAnY,IAAAA,QAAQ,CAAC8D,OAAD,EAAS,OAAT,EAAkBqU,MAAlB,CAAR,CAAA;AACAnY,IAAAA,QAAQ,CAAC8D,OAAD,EAAS,OAAT,EAAkBqU,MAAlB,CAAR,CAAA;AACAnY,IAAAA,QAAQ,CAAC8D,OAAD,EAAS,MAAT,EAAiBqU,MAAjB,CAAR,CAAA;AACAnY,IAAAA,QAAQ,CAAC8D,OAAD,EAAS,QAAT,EAAmBqU,MAAnB,CAAR,CAAA;AACA,GAjCD,CAAA,CAAA;AAmCA;;ACvDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIe,4BAAyB,IAAA;AACvC,EAAIzlB,IAAAA,IAAI,GAAG,IAAX,CAAA;AACA,EAAA,IAAI2lB,oBAAoB,GAAG3lB,IAAI,CAAC6Y,eAAhC,CAAA;AAEA,EAAA,IAAA,CAAKqK,IAAL,CAAU,SAAV,EAAoB,iBAApB,EAAuC/V,GAAD,IAAuB;AAE5D,IAAA,IAAInN,IAAI,CAAC8S,WAAL,CAAiBpT,MAArB,EAA6B;AAC5B,MAAA,OAAOimB,oBAAoB,CAAC9d,IAArB,CAA0B7H,IAA1B,EAAgCmN,GAAhC,CAAP,CAAA;AACA,KAAA;;AAED,IAAA,OAAO,KAAP,CAAA;AACA,GAPD,CAAA,CAAA;AASA;;AC7BD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIe,wBAAyB,IAAA;AACvC,EAAK+V,IAAAA,CAAAA,IAAL,CAAU,SAAV,EAAoB,eAApB,EAAoC,MAAM,EAA1C,CAAA,CAAA;AACA,EAAKA,IAAAA,CAAAA,IAAL,CAAU,SAAV,EAAoB,WAApB,EAAgC,MAAM,EAAtC,CAAA,CAAA;AACA;;ACnBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMe,yBAAyB,IAAA;AACvC,EAAIljB,IAAAA,IAAI,GAAG,IAAX,CAAA;AAEA,EAAA,IAAI4lB,YAAY,GAAG5lB,IAAI,CAACqV,SAAxB,CAAA;AAEArV,EAAAA,IAAI,CAACkjB,IAAL,CAAU,SAAV,EAAoB,WAApB,EAAiC/V,GAAD,IAAqB;AACpD,IAAA,IAAIrG,KAAJ,EAAWmI,MAAX,EAAmB/N,OAAnB,EAA4BmP,QAA5B,CAAA;;AAEA,IAAI,IAAA,CAACrQ,IAAI,CAAC8R,MAAN,IAAgB,EAAE3E,GAAG,CAAC8K,OAAJ,KAAgBE,QAAhB,IAAsChL,GAAG,CAAC8K,OAAJ,KAAgBE,SAAxD,CAApB,EAAkG;AACjG,MAAA,OAAOyN,YAAY,CAAC/d,IAAb,CAAkB7H,IAAlB,EAAuBmN,GAAvB,CAAP,CAAA;AACA,KAAA;;AAEDnN,IAAAA,IAAI,CAACwS,WAAL,GAAmB,IAAnB,CAAA;AACAnC,IAAAA,QAAQ,GAAK/L,WAAW,CAACtE,IAAI,CAAC6S,YAAN,EAAmB,cAAnB,CAAxB,CAAA;AACA/L,IAAAA,KAAK,GAAM3B,SAAS,CAACnF,IAAI,CAAC6S,YAAN,EAAmB,mBAAnB,CAApB,CAAA;;AAEA,IAAI,IAAA,CAACxC,QAAL,EAAe;AACd,MAAA,OAAA;AACA,KAAA;;AAED,IAAA,IAAIlD,GAAG,CAAC8K,OAAJ,KAAgBE,QAApB,EAAwC;AACvC9H,MAAAA,QAAQ,GAAGA,QAAQ,CAACwV,eAApB,CAAA;AACA,KAFD,MAEO;AACNxV,MAAAA,QAAQ,GAAGA,QAAQ,CAACyV,WAApB,CAAA;AACA,KAAA;;AAED,IAAI,IAAA,CAACzV,QAAL,EAAe;AACd,MAAA,OAAA;AACA,KAAA;;AAEDnP,IAAAA,OAAO,GAA4BmP,QAAtB,CAAgC1I,gBAAhC,CAAiD,mBAAjD,CAAb,CAAA;AACAsH,IAAAA,MAAM,GAAM/N,OAAO,CAAEkL,IAAI,CAACiR,GAAL,CAASnc,OAAO,CAACxB,MAAR,GAAiB,CAA1B,EAA6BoH,KAA7B,CAAF,CAAnB,CAAA;;AAEA,IAAA,IAAImI,MAAJ,EAAY;AACXjP,MAAAA,IAAI,CAACwY,eAAL,CAAqBvJ,MAArB,CAAA,CAAA;AACA,KAAA;AAED,GAhCD,CAAA,CAAA;AAkCA;;AC1DD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQe,sBAAA,EAAyB8D,WAAzB,EAAgD;AAE9D,EAAA,MAAM7R,OAAO,GAAGgC,MAAM,CAACC,MAAP,CAAc;AAC5B+Q,IAAAA,KAAK,EAAO,SADgB;AAE5B8P,IAAAA,KAAK,EAAO,QAFgB;AAG5Brd,IAAAA,SAAS,EAAG,QAHgB;AAI5ByH,IAAAA,MAAM,EAAM,IAAA;AAJgB,GAAd,EAKZ2E,WALY,CAAhB,CAF8D;;AAW9D,EAAA,IAAI/S,IAAI,GAAK,IAAb,CAX8D;;AAc9D,EAAA,IAAI,CAACkB,OAAO,CAACkN,MAAb,EAAqB;AACpB,IAAA,OAAA;AACA,GAAA;;AAED,EAAIuO,IAAAA,IAAI,GAAG,sCAAyCzb,GAAAA,OAAO,CAACyF,SAAjD,GAA6D,yBAA7D,GAAyFmF,WAAW,CAAC5K,OAAO,CAAC8iB,KAAT,CAApG,GAAsH,IAAtH,GAA6H9iB,OAAO,CAACgT,KAArI,GAA6I,MAAxJ,CAAA;AAEAlU,EAAAA,IAAI,CAACkjB,IAAL,CAAU,OAAV,EAAkB,gBAAlB,EAAmC,MAAM;AAExC,IAAI6C,IAAAA,gBAAgB,GAAG/lB,IAAI,CAACM,QAAL,CAAcoL,MAAd,CAAqB6N,IAA5C,CAAA;;AAEAvZ,IAAAA,IAAI,CAACM,QAAL,CAAcoL,MAAd,CAAqB6N,IAArB,GAA4B,CAAC9S,IAAD,EAAiBuQ,MAAjB,KAA+C;AAE1E,MAAA,IAAIuC,IAAI,GAAG7X,MAAM,CAACqkB,gBAAgB,CAACle,IAAjB,CAAsB7H,IAAtB,EAA4ByG,IAA5B,EAAkCuQ,MAAlC,CAAD,CAAjB,CAAA;AAEA,MAAA,IAAIgP,YAAY,GAAGtkB,MAAM,CAACib,IAAD,CAAzB,CAAA;AACApD,MAAAA,IAAI,CAACtS,WAAL,CAAiB+e,YAAjB,CAAA,CAAA;AAEA1Y,MAAAA,QAAQ,CAAC0Y,YAAD,EAAc,WAAd,EAA2B7Y,GAAD,IAAS;AAC1CD,QAAAA,cAAc,CAACC,GAAD,EAAK,IAAL,CAAd,CAAA;AACA,OAFO,CAAR,CAAA;AAIAG,MAAAA,QAAQ,CAAC0Y,YAAD,EAAc,OAAd,EAAuB7Y,GAAD,IAAS;AAEtC;AACAD,QAAAA,cAAc,CAACC,GAAD,EAAK,IAAL,CAAd,CAAA;AAEA,QAAInN,IAAAA,IAAI,CAACmS,QAAT,EAAoB,OAAA;AACpB,QAAI,IAAA,CAACnS,IAAI,CAACyiB,YAAL,CAAkB,CAAClJ,IAAD,CAAlB,EAAyBpM,GAAzB,CAAL,EAAmD,OAAA;AAEnDnN,QAAAA,IAAI,CAACogB,UAAL,CAAgB7G,IAAhB,CAAA,CAAA;AACAvZ,QAAAA,IAAI,CAAC8Y,cAAL,CAAoB,KAApB,CAAA,CAAA;AACA9Y,QAAAA,IAAI,CAAC8V,UAAL,EAAA,CAAA;AACA,OAXO,CAAR,CAAA;AAaA,MAAA,OAAOyD,IAAP,CAAA;AACA,KAzBD,CAAA;AA2BA,GA/BD,CAAA,CAAA;AAkCA;;AC3ED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQe,6BAAA,EAAyBxG,WAAzB,EAAqD;AACnE,EAAM/S,MAAAA,IAAI,GAAG,IAAb,CAAA;AAEA,EAAA,MAAMkB,OAAO,GAAGgC,MAAM,CAACC,MAAP,CAAc;AAC7B8iB,IAAAA,IAAI,EAAGhX,MAAD,IAAsB;AAC3B,MAAA,OAAOA,MAAM,CAACjP,IAAI,CAACM,QAAL,CAAc+J,UAAf,CAAb,CAAA;AACA,KAAA;AAH4B,GAAd,EAId0I,WAJc,CAAhB,CAAA;AAMA/S,EAAAA,IAAI,CAACb,EAAL,CAAQ,aAAR,EAAsB,UAASyM,KAAT,EAAsB;AAC3C,IAAA,IAAI,CAAC5L,IAAI,CAACoS,SAAV,EAAqB;AACpB,MAAA,OAAA;AACA,KAAA;;AAED,IAAIpS,IAAAA,IAAI,CAACkR,aAAL,CAAmBtF,KAAnB,CAAyBzJ,IAAzB,EAAoC,KAAA,EAAxC,EAA4C;AAC3C,MAAA,IAAI8M,MAAM,GAAGjP,IAAI,CAACkB,OAAL,CAAa0K,KAAb,CAAb,CAAA;;AACA,MAAA,IAAIqD,MAAJ,EAAY;AACXjP,QAAAA,IAAI,CAAC2Z,eAAL,CAAqBzY,OAAO,CAAC+kB,IAAR,CAAape,IAAb,CAAkB7H,IAAlB,EAAwBiP,MAAxB,CAArB,CAAA,CAAA;AACA,OAAA;AACD,KAAA;AACD,GAXD,CAAA,CAAA;AAaA;;AC3CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMe,uBAAyB,IAAA;AACvC,EAAMjP,MAAAA,IAAI,GAAS,IAAnB,CAAA;AACA,EAAA,MAAMkmB,YAAY,GAAOlmB,IAAI,CAACwZ,OAA9B,CAAA;AACA,EAAA,MAAM2M,sBAAsB,GAAInmB,IAAI,CAAC0Z,iBAArC,CAAA;AACA,EAAA,MAAM0M,iBAAiB,GAAMpmB,IAAI,CAACyZ,YAAlC,CAAA;AAEA,EAAI4M,IAAAA,UAA6B,GAAG,EAApC,CAAA;AACA,EAAA,IAAIhV,gBAAJ,CAAA;AACA,EAAIiV,IAAAA,YAAY,GAAO,KAAvB,CAAA;AACA,EAAA,IAAIC,aAAJ,CAAA;AACA,EAAIC,IAAAA,cAAwB,GAAI,EAAhC,CAAA;;AAEA,EAAA,IAAI,CAACxmB,IAAI,CAACM,QAAL,CAAcmmB,cAAnB,EAAmC;AAElC;AACAzmB,IAAAA,IAAI,CAACM,QAAL,CAAcmmB,cAAd,GAA+B,MAAY;AAE1C,MAAA,MAAMC,cAAc,GAAGrV,gBAAgB,CAAC4J,YAAjB,IAAiC5J,gBAAgB,CAACsV,YAAjB,GAAgCtV,gBAAgB,CAAC6J,SAAlF,CAAvB,CAAA;;AACA,MAAIwL,IAAAA,cAAc,GAAG,GAArB,EAA0B;AACzB,QAAA,OAAO,IAAP,CAAA;AACA,OAAA;;AAED,MAAI1mB,IAAAA,IAAI,CAAC6S,YAAT,EAAuB;AACtB,QAAA,IAAIoM,UAAU,GAAGjf,IAAI,CAACif,UAAL,EAAjB,CAAA;AACA,QAAA,IAAInY,KAAK,GAAI/F,KAAK,CAACwG,IAAN,CAAW0X,UAAX,CAAA,CAAuBpf,OAAvB,CAA+BG,IAAI,CAAC6S,YAApC,CAAb,CAAA;;AACA,QAAA,IAAI/L,KAAK,IAAKmY,UAAU,CAACvf,MAAX,GAAkB,CAAhC,EAAoC;AACnC,UAAA,OAAO,IAAP,CAAA;AACA,SAAA;AACD,OAAA;;AAED,MAAA,OAAO,KAAP,CAAA;AACA,KAhBD,CAAA;AAiBA,GAAA;;AAGD,EAAA,IAAI,CAACM,IAAI,CAACM,QAAL,CAAcsmB,QAAnB,EAA6B;AAC5B,IAAA,MAAM,oDAAN,CAAA;AACA,GArCsC;AAyCvC;;;AACA5mB,EAAAA,IAAI,CAACM,QAAL,CAAcoK,SAAd,GAA4B,CAAC;AAACqR,IAAAA,KAAK,EAAC,QAAA;AAAP,GAAD,EAAkB;AAACA,IAAAA,KAAK,EAAC,QAAA;AAAP,GAAlB,CAA5B,CA1CuC;;AA8CvC,EAAM8K,MAAAA,WAAW,GAAIllB,KAAD,IAA0B;AAE7C,IAAI,IAAA,OAAO3B,IAAI,CAACM,QAAL,CAAckJ,UAArB,KAAoC,QAApC,IAAgD6H,gBAAgB,CAACd,QAAjB,CAA0B7Q,MAA1B,IAAoCM,IAAI,CAACM,QAAL,CAAckJ,UAAtG,EAAkH;AACjH,MAAA,OAAO,KAAP,CAAA;AACA,KAAA;;AAED,IAAK7H,IAAAA,KAAK,IAAI0kB,UAAV,IAAyBA,UAAU,CAAC1kB,KAAD,CAAvC,EAAgD;AAC/C,MAAA,OAAO,IAAP,CAAA;AACA,KAAA;;AAED,IAAA,OAAO,KAAP,CAAA;AACA,GAXD,CAAA;;AAaA,EAAA,MAAM4e,WAAW,GAAG,CAACtR,MAAD,EAAmBrD,KAAnB,KAA4C;AAC/D,IAAA,IAAI5L,IAAI,CAACoP,KAAL,CAAWvP,OAAX,CAAmB+L,KAAnB,CAAA,IAA6B,CAA7B,IAAkC4a,cAAc,CAAC3mB,OAAf,CAAuB+L,KAAvB,CAAA,IAAiC,CAAvE,EAA0E;AACzE,MAAA,OAAO,IAAP,CAAA;AACA,KAAA;;AACD,IAAA,OAAO,KAAP,CAAA;AACA,GALD,CA3DuC;;;AAoEvC5L,EAAAA,IAAI,CAAC8mB,UAAL,GAAkB,CAAClb,KAAD,EAAcmb,QAAd,KAAoC;AACrDV,IAAAA,UAAU,CAACza,KAAD,CAAV,GAAoBmb,QAApB,CAAA;AACA,GAFD,CApEuC;;;AAyEvC/mB,EAAAA,IAAI,CAACgnB,MAAL,GAAerlB,KAAD,IAAqB;AAElC,IAAIA,IAAAA,KAAK,IAAI0kB,UAAb,EAAyB;AACxB,MAAA,MAAMU,QAAQ,GAAGV,UAAU,CAAC1kB,KAAD,CAA3B,CAAA;AACA0kB,MAAAA,UAAU,CAAC1kB,KAAD,CAAV,GAAoB,KAApB,CAAA;AACA,MAAA,OAAOolB,QAAP,CAAA;AACA,KANiC;AASlC;;;AACAV,IAAAA,UAAU,GAAG,EAAb,CAAA;AAEA,IAAOrmB,OAAAA,IAAI,CAACM,QAAL,CAAcsmB,QAAd,CAAuB/e,IAAvB,CAA4B7H,IAA5B,EAAiC2B,KAAjC,CAAP,CAAA;AACA,GAbD,CAzEuC;AA0FvC;;;AACA3B,EAAAA,IAAI,CAACkjB,IAAL,CAAU,SAAV,EAAoB,mBAApB,EAAwC,MAAI;AAE3C,IAAA,IAAIoD,YAAJ,EAAkB;AACjB,MAAA,OAAA;AACA,KAAA;;AAED,IAAA,OAAOH,sBAAsB,CAACte,IAAvB,CAA4B7H,IAA5B,CAAP,CAAA;AACA,GAPD,EA3FuC;;AAqGvCA,EAAAA,IAAI,CAACkjB,IAAL,CAAU,SAAV,EAAoB,SAApB,EAA+BvhB,KAAD,IAAgB;AAE7C;AACA,IAAA,IAAI,EAAEA,KAAK,IAAI0kB,UAAX,CAAJ,EAA4B;AAC3B,MAAA,OAAOH,YAAY,CAACre,IAAb,CAAkB7H,IAAlB,EAAuB2B,KAAvB,CAAP,CAAA;AACA,KAAA;;AAED,IAAOklB,OAAAA,WAAW,CAACllB,KAAD,CAAlB,CAAA;AACA,GARD,EArGuC;;AAiHvC3B,EAAAA,IAAI,CAACkjB,IAAL,CAAU,SAAV,EAAoB,cAApB,EAAmC,CAAEhiB,OAAF,EAAuB4H,SAAvB,KAA+C;AAEjF,IAAI,IAAA,CAACwd,YAAL,EAAmB;AAClBtmB,MAAAA,IAAI,CAACqgB,YAAL,CAAkBE,WAAlB,CAAA,CAAA;AACA,KAFD,MAEM,IAAIgG,aAAJ,EAAmB;AACxB,MAAA,MAAMU,YAAY,GAAG/lB,OAAO,CAAC,CAAD,CAA5B,CAAA;;AACA,MAAI+lB,IAAAA,YAAY,KAAKtnB,SAArB,EAAgC;AAC/B4mB,QAAAA,aAAa,CAAC9W,OAAd,CAAsB7D,KAAtB,GAA+Bqb,YAAY,CAACjnB,IAAI,CAACM,QAAL,CAAc8J,UAAf,CAA3C,CAAA;AACA,OAAA;AACD,KAAA;;AAEDgc,IAAAA,iBAAiB,CAACve,IAAlB,CAAwB7H,IAAxB,EAA8BkB,OAA9B,EAAuC4H,SAAvC,CAAA,CAAA;AAEAwd,IAAAA,YAAY,GAAG,KAAf,CAAA;AACA,GAdD,EAjHuC;AAmIvC;AACA;;AACAtmB,EAAAA,IAAI,CAACkjB,IAAL,CAAU,OAAV,EAAkB,gBAAlB,EAAmC,MAAI;AAEtC,IAAA,MAAMvhB,KAAK,GAAI3B,IAAI,CAAC2S,SAApB,CAAA;AACA,IAAA,IAAI1D,MAAJ,CAAA;;AAEA,IAAA,IAAI4X,WAAW,CAACllB,KAAD,CAAf,EAAwB;AAEvBsN,MAAAA,MAAM,GAAGjP,IAAI,CAAC0L,MAAL,CAAY,cAAZ,EAA2B;AAAC/J,QAAAA,KAAK,EAACA,KAAAA;AAAP,OAA3B,CAAT,CAAA;;AACA,MAAA,IAAIsN,MAAJ,EAAY;AACXA,QAAAA,MAAM,CAACpJ,YAAP,CAAoB,iBAApB,EAAsC,EAAtC,EADW;;AAEX0gB,QAAAA,aAAa,GAAGtX,MAAhB,CAAA;AACA,OAAA;AAED,KARD,MAQM,IAAKtN,KAAK,IAAI0kB,UAAV,IAAyB,CAAChV,gBAAgB,CAAC/O,aAAjB,CAA+B,aAA/B,CAA9B,EAA6E;AAClF2M,MAAAA,MAAM,GAAGjP,IAAI,CAAC0L,MAAL,CAAY,iBAAZ,EAA8B;AAAC/J,QAAAA,KAAK,EAACA,KAAAA;AAAP,OAA9B,CAAT,CAAA;AACA,KAAA;;AAED,IAAA,IAAIsN,MAAJ,EAAY;AACX5L,MAAAA,UAAU,CAAC4L,MAAD,EAAQjP,IAAI,CAACM,QAAL,CAAc6K,WAAtB,CAAV,CAAA;AACAkG,MAAAA,gBAAgB,CAACjD,MAAjB,CAAyBa,MAAzB,CAAA,CAAA;AACA,KAAA;AAED,GAtBD,EArIuC;;AA+JvCjP,EAAAA,IAAI,CAACb,EAAL,CAAQ,YAAR,EAAqB,MAAI;AACxBqnB,IAAAA,cAAc,GAAGtjB,MAAM,CAACgC,IAAP,CAAYlF,IAAI,CAACkB,OAAjB,CAAjB,CAAA;AACAmQ,IAAAA,gBAAgB,GAAGrR,IAAI,CAACqR,gBAAxB,CAFwB;;AAKxBrR,IAAAA,IAAI,CAACM,QAAL,CAAcoL,MAAd,GAAuBxI,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB;AACxCmjB,MAAAA,YAAY,EAAC,MAAM;AAClB,QAAA,OAAQ,CAAR,iEAAA,CAAA,CAAA;AACA,OAHuC;AAIxCY,MAAAA,eAAe,EAAC,MAAK;AACpB,QAAA,OAAQ,CAAR,kDAAA,CAAA,CAAA;AACA,OAAA;AANuC,KAAlB,EAOrBlnB,IAAI,CAACM,QAAL,CAAcoL,MAPO,CAAvB,CALwB;;AAgBxB2F,IAAAA,gBAAgB,CAAC9D,gBAAjB,CAAkC,QAAlC,EAA2C,MAAI;AAE9C,MAAI,IAAA,CAACvN,IAAI,CAACM,QAAL,CAAcmmB,cAAd,CAA6B5e,IAA7B,CAAkC7H,IAAlC,CAAL,EAA8C;AAC7C,QAAA,OAAA;AACA,OAJ6C;;;AAO9C,MAAA,IAAI,CAAC6mB,WAAW,CAAC7mB,IAAI,CAAC2S,SAAN,CAAhB,EAAkC;AACjC,QAAA,OAAA;AACA,OAT6C;;;AAY9C,MAAA,IAAI2T,YAAJ,EAAmB,OAAA;AAGnBA,MAAAA,YAAY,GAAG,IAAf,CAAA;AACAtmB,MAAAA,IAAI,CAAC6U,IAAL,CAAUhN,IAAV,CAAe7H,IAAf,EAAoBA,IAAI,CAAC2S,SAAzB,CAAA,CAAA;AACA,KAjBD,CAAA,CAAA;AAkBA,GAlCD,CAAA,CAAA;AAoCA;;ACrMD5B,SAAS,CAACtQ,MAAV,CAAiB,iBAAjB,EAAoC0mB,eAApC,CAAA,CAAA;AACApW,SAAS,CAACtQ,MAAV,CAAiB,kBAAjB,EAAqC2mB,gBAArC,CAAA,CAAA;AACArW,SAAS,CAACtQ,MAAV,CAAiB,cAAjB,EAAiC4mB,YAAjC,CAAA,CAAA;AACAtW,SAAS,CAACtQ,MAAV,CAAiB,WAAjB,EAA8B6mB,SAA9B,CAAA,CAAA;AACAvW,SAAS,CAACtQ,MAAV,CAAiB,iBAAjB,EAAoC8mB,eAApC,CAAA,CAAA;AACAxW,SAAS,CAACtQ,MAAV,CAAiB,gBAAjB,EAAmC+mB,cAAnC,CAAA,CAAA;AACAzW,SAAS,CAACtQ,MAAV,CAAiB,gBAAjB,EAAmCgnB,cAAnC,CAAA,CAAA;AACA1W,SAAS,CAACtQ,MAAV,CAAiB,gBAAjB,EAAmCinB,cAAnC,CAAA,CAAA;AACA3W,SAAS,CAACtQ,MAAV,CAAiB,qBAAjB,EAAwCknB,mBAAxC,CAAA,CAAA;AACA5W,SAAS,CAACtQ,MAAV,CAAiB,iBAAjB,EAAoCmnB,eAApC,CAAA,CAAA;AACA7W,SAAS,CAACtQ,MAAV,CAAiB,kBAAjB,EAAqConB,gBAArC,CAAA,CAAA;AACA9W,SAAS,CAACtQ,MAAV,CAAiB,eAAjB,EAAkCqnB,aAAlC,CAAA,CAAA;AACA/W,SAAS,CAACtQ,MAAV,CAAiB,sBAAjB,EAAyCsnB,oBAAzC,CAAA,CAAA;AACAhX,SAAS,CAACtQ,MAAV,CAAiB,gBAAjB,EAAmCunB,cAAnC,CAAA;;;;"}
1
+ {"version":3,"file":"tom-select.complete.js","sources":["../../src/contrib/microevent.ts","../../src/contrib/microplugin.ts","../../node_modules/@orchidjs/unicode-variants/dist/esm/regex.js","../../node_modules/@orchidjs/unicode-variants/dist/esm/strings.js","../../node_modules/@orchidjs/unicode-variants/dist/esm/index.js","../../node_modules/@orchidjs/sifter/dist/esm/utils.js","../../node_modules/@orchidjs/sifter/dist/esm/sifter.js","../../node_modules/@orchidjs/sifter/lib/utils.ts","../../src/vanilla.ts","../../src/contrib/highlight.ts","../../src/constants.ts","../../src/defaults.ts","../../src/utils.ts","../../src/getSettings.ts","../../src/tom-select.ts","../../src/plugins/change_listener/plugin.ts","../../src/plugins/checkbox_options/plugin.ts","../../src/plugins/clear_button/plugin.ts","../../src/plugins/drag_drop/plugin.ts","../../src/plugins/dropdown_header/plugin.ts","../../src/plugins/caret_position/plugin.ts","../../src/plugins/dropdown_input/plugin.ts","../../src/plugins/input_autogrow/plugin.ts","../../src/plugins/no_backspace_delete/plugin.ts","../../src/plugins/no_active_items/plugin.ts","../../src/plugins/optgroup_columns/plugin.ts","../../src/plugins/remove_button/plugin.ts","../../src/plugins/restore_on_backspace/plugin.ts","../../src/plugins/virtual_scroll/plugin.ts","../../src/tom-select.complete.ts"],"sourcesContent":["/**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\n\ntype TCallback = (...args:any) => any;\n\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events:string,callback:(event:string)=>any){\n\tevents.split(/\\s+/).forEach((event) =>{\n\t\tcallback(event);\n\t});\n}\n\nexport default class MicroEvent{\n\n\tpublic _events: {[key:string]:TCallback[]};\n\n\tconstructor(){\n\t\tthis._events = {};\n\t}\n\n\ton(events:string, fct:TCallback){\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = this._events[event] || [];\n\t\t\tevent_array.push(fct);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\toff(events:string, fct:TCallback){\n\t\tvar n = arguments.length;\n\t\tif( n === 0 ){\n\t\t\tthis._events = {};\n\t\t\treturn;\n\t\t}\n\n\t\tforEvents(events,(event) => {\n\n\t\t\tif (n === 1){\n\t\t\t\tdelete this._events[event];\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst event_array = this._events[event];\n\t\t\tif( event_array === undefined ) return;\n\n\t\t\tevent_array.splice(event_array.indexOf(fct), 1);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\ttrigger(events:string, ...args:any){\n\t\tvar self = this;\n\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = self._events[event];\n\t\t\tif( event_array === undefined ) return;\n\t\t\tevent_array.forEach(fct => {\n\t\t\t\tfct.apply(self, args );\n\t\t\t});\n\n\t\t});\n\t}\n};\n","/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\ntype TSettings = {\n\t[key:string]:any\n}\n\ntype TPlugins = {\n\tnames: string[],\n\tsettings: TSettings,\n\trequested: {[key:string]:boolean},\n\tloaded: {[key:string]:any}\n};\n\nexport type TPluginItem = {name:string,options:{}};\nexport type TPluginHash = {[key:string]:{}};\n\n\n\n\nexport default function MicroPlugin(Interface: any ){\n\n\tInterface.plugins = {};\n\n\treturn class extends Interface{\n\n\t\tpublic plugins:TPlugins = {\n\t\t\tnames : [],\n\t\t\tsettings : {},\n\t\t\trequested : {},\n\t\t\tloaded : {}\n\t\t};\n\n\t\t/**\n\t\t * Registers a plugin.\n\t\t *\n\t\t * @param {function} fn\n\t\t */\n\t\tstatic define(name:string, fn:(this:any,settings:TSettings)=>any){\n\t\t\tInterface.plugins[name] = {\n\t\t\t\t'name' : name,\n\t\t\t\t'fn' : fn\n\t\t\t};\n\t\t}\n\n\n\t\t/**\n\t\t * Initializes the listed plugins (with options).\n\t\t * Acceptable formats:\n\t\t *\n\t\t * List (without options):\n\t\t * ['a', 'b', 'c']\n\t\t *\n\t\t * List (with options):\n\t\t * [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n\t\t *\n\t\t * Hash (with options):\n\t\t * {'a': { ... }, 'b': { ... }, 'c': { ... }}\n\t\t *\n\t\t * @param {array|object} plugins\n\t\t */\n\t\tinitializePlugins(plugins:string[]|TPluginItem[]|TPluginHash) {\n\t\t\tvar key, name;\n\t\t\tconst self = this;\n\t\t\tconst queue:string[] = [];\n\n\t\t\tif (Array.isArray(plugins)) {\n\t\t\t\tplugins.forEach((plugin:string|TPluginItem)=>{\n\t\t\t\t\tif (typeof plugin === 'string') {\n\t\t\t\t\t\tqueue.push(plugin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.plugins.settings[plugin.name] = plugin.options;\n\t\t\t\t\t\tqueue.push(plugin.name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (plugins) {\n\t\t\t\tfor (key in plugins) {\n\t\t\t\t\tif (plugins.hasOwnProperty(key)) {\n\t\t\t\t\t\tself.plugins.settings[key] = plugins[key];\n\t\t\t\t\t\tqueue.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile( name = queue.shift() ){\n\t\t\t\tself.require(name);\n\t\t\t}\n\t\t}\n\n\t\tloadPlugin(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\t\t\tvar plugin = Interface.plugins[name];\n\n\t\t\tif (!Interface.plugins.hasOwnProperty(name)) {\n\t\t\t\tthrow new Error('Unable to find \"' + name + '\" plugin');\n\t\t\t}\n\n\t\t\tplugins.requested[name] = true;\n\t\t\tplugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n\t\t\tplugins.names.push(name);\n\t\t}\n\n\t\t/**\n\t\t * Initializes a plugin.\n\t\t *\n\t\t */\n\t\trequire(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\n\t\t\tif (!self.plugins.loaded.hasOwnProperty(name)) {\n\t\t\t\tif (plugins.requested[name]) {\n\t\t\t\t\tthrow new Error('Plugin has circular dependency (\"' + name + '\")');\n\t\t\t\t}\n\t\t\t\tself.loadPlugin(name);\n\t\t\t}\n\n\t\t\treturn plugins.loaded[name];\n\t\t}\n\n\t};\n\n}\n","/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n * @param {string[]} chars\n * @return {string}\n */\nconst arrayToPattern = chars => {\n chars = chars.filter(Boolean);\n\n if (chars.length < 2) {\n return chars[0] || '';\n }\n\n return maxValueLength(chars) == 1 ? '[' + chars.join('') + ']' : '(?:' + chars.join('|') + ')';\n};\n/**\n * @param {string[]} array\n * @return {string}\n */\n\nconst sequencePattern = array => {\n if (!hasDuplicates(array)) {\n return array.join('');\n }\n\n let pattern = '';\n let prev_char_count = 0;\n\n const prev_pattern = () => {\n if (prev_char_count > 1) {\n pattern += '{' + prev_char_count + '}';\n }\n };\n\n array.forEach((char, i) => {\n if (char === array[i - 1]) {\n prev_char_count++;\n return;\n }\n\n prev_pattern();\n pattern += char;\n prev_char_count = 1;\n });\n prev_pattern();\n return pattern;\n};\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n * @param {Set<string>} chars\n * @return {string}\n */\n\nconst setToPattern = chars => {\n let array = toArray(chars);\n return arrayToPattern(array);\n};\n/**\n *\n * https://stackoverflow.com/questions/7376598/in-javascript-how-do-i-check-if-an-array-has-duplicate-values\n * @param {any[]} array\n */\n\nconst hasDuplicates = array => {\n return new Set(array).size !== array.length;\n};\n/**\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n * @param {string} str\n * @return {string}\n */\n\nconst escape_regex = str => {\n return (str + '').replace(/([\\$\\(\\)\\*\\+\\.\\?\\[\\]\\^\\{\\|\\}\\\\])/gu, '\\\\$1');\n};\n/**\n * Return the max length of array values\n * @param {string[]} array\n *\n */\n\nconst maxValueLength = array => {\n return array.reduce((longest, value) => Math.max(longest, unicodeLength(value)), 0);\n};\n/**\n * @param {string} str\n */\n\nconst unicodeLength = str => {\n return toArray(str).length;\n};\n/**\n * @param {any} p\n * @return {any[]}\n */\n\nconst toArray = p => Array.from(p);\n\nexport { arrayToPattern, escape_regex, hasDuplicates, maxValueLength, sequencePattern, setToPattern, toArray, unicodeLength };\n//# sourceMappingURL=regex.js.map\n","/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\n/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n * @param {string} input\n * @return {string[][]}\n */\nconst allSubstrings = input => {\n if (input.length === 1) return [[input]];\n /** @type {string[][]} */\n\n let result = [];\n const start = input.substring(1);\n const suba = allSubstrings(start);\n suba.forEach(function (subresult) {\n let tmp = subresult.slice(0);\n tmp[0] = input.charAt(0) + tmp[0];\n result.push(tmp);\n tmp = subresult.slice(0);\n tmp.unshift(input.charAt(0));\n result.push(tmp);\n });\n return result;\n};\n\nexport { allSubstrings };\n//# sourceMappingURL=strings.js.map\n","/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\nimport { toArray, setToPattern, escape_regex, arrayToPattern, sequencePattern } from './regex.js';\nexport { escape_regex } from './regex.js';\nimport { allSubstrings } from './strings.js';\n\n/**\n * @typedef {{[key:string]:string}} TUnicodeMap\n * @typedef {{[key:string]:Set<string>}} TUnicodeSets\n * @typedef {[[number,number]]} TCodePoints\n * @typedef {{folded:string,composed:string,code_point:number}} TCodePointObj\n * @typedef {{start:number,end:number,length:number,substr:string}} TSequencePart\n */\n/** @type {TCodePoints} */\n\nconst code_points = [[0, 65535]];\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}\\u{2bc}]';\n/** @type {TUnicodeMap} */\n\nlet unicode_map;\n/** @type {RegExp} */\n\nlet multi_char_reg;\nconst max_char_length = 3;\n/** @type {TUnicodeMap} */\n\nconst latin_convert = {};\n/** @type {TUnicodeMap} */\n\nconst latin_condensed = {\n '/': '⁄∕',\n '0': '߀',\n \"a\": \"ⱥɐɑ\",\n \"aa\": \"ꜳ\",\n \"ae\": \"æǽǣ\",\n \"ao\": \"ꜵ\",\n \"au\": \"ꜷ\",\n \"av\": \"ꜹꜻ\",\n \"ay\": \"ꜽ\",\n \"b\": \"ƀɓƃ\",\n \"c\": \"ꜿƈȼↄ\",\n \"d\": \"đɗɖᴅƌꮷԁɦ\",\n \"e\": \"ɛǝᴇɇ\",\n \"f\": \"ꝼƒ\",\n \"g\": \"ǥɠꞡᵹꝿɢ\",\n \"h\": \"ħⱨⱶɥ\",\n \"i\": \"ɨı\",\n \"j\": \"ɉȷ\",\n \"k\": \"ƙⱪꝁꝃꝅꞣ\",\n \"l\": \"łƚɫⱡꝉꝇꞁɭ\",\n \"m\": \"ɱɯϻ\",\n \"n\": \"ꞥƞɲꞑᴎлԉ\",\n \"o\": \"øǿɔɵꝋꝍᴑ\",\n \"oe\": \"œ\",\n \"oi\": \"ƣ\",\n \"oo\": \"ꝏ\",\n \"ou\": \"ȣ\",\n \"p\": \"ƥᵽꝑꝓꝕρ\",\n \"q\": \"ꝗꝙɋ\",\n \"r\": \"ɍɽꝛꞧꞃ\",\n \"s\": \"ßȿꞩꞅʂ\",\n \"t\": \"ŧƭʈⱦꞇ\",\n \"th\": \"þ\",\n \"tz\": \"ꜩ\",\n \"u\": \"ʉ\",\n \"v\": \"ʋꝟʌ\",\n \"vy\": \"ꝡ\",\n \"w\": \"ⱳ\",\n \"y\": \"ƴɏỿ\",\n \"z\": \"ƶȥɀⱬꝣ\",\n \"hv\": \"ƕ\"\n};\n\nfor (let latin in latin_condensed) {\n let unicode = latin_condensed[latin] || '';\n\n for (let i = 0; i < unicode.length; i++) {\n let char = unicode.substring(i, i + 1);\n latin_convert[char] = latin;\n }\n}\n\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|') + '|' + accent_pat, 'gu');\n/**\n * Initialize the unicode_map from the give code point ranges\n *\n * @param {TCodePoints=} _code_points\n */\n\nconst initialize = _code_points => {\n if (unicode_map !== undefined) return;\n unicode_map = generateMap(_code_points || code_points);\n};\n/**\n * Helper method for normalize a string\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize\n * @param {string} str\n * @param {string} form\n */\n\nconst normalize = (str, form = 'NFKD') => str.normalize(form);\n/**\n * Remove accents without reordering string\n * calling str.normalize('NFKD') on \\u{594}\\u{595}\\u{596} becomes \\u{596}\\u{594}\\u{595}\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n * @param {string} str\n * @return {string}\n */\n\nconst asciifold = str => {\n return toArray(str).reduce(\n /**\n * @param {string} result\n * @param {string} char\n */\n (result, char) => {\n return result + _asciifold(char);\n }, '');\n};\n/**\n * @param {string} str\n * @return {string}\n */\n\nconst _asciifold = str => {\n str = normalize(str).toLowerCase().replace(convert_pat, (\n /** @type {string} */\n char) => {\n return latin_convert[char] || '';\n }); //return str;\n\n return normalize(str, 'NFC');\n};\n/**\n * Generate a list of unicode variants from the list of code points\n * @param {TCodePoints} code_points\n * @yield {TCodePointObj}\n */\n\nfunction* generator(code_points) {\n for (const [code_point_min, code_point_max] of code_points) {\n for (let i = code_point_min; i <= code_point_max; i++) {\n let composed = String.fromCharCode(i);\n let folded = asciifold(composed);\n\n if (folded == composed.toLowerCase()) {\n continue;\n } // skip when folded is a string longer than 3 characters long\n // bc the resulting regex patterns will be long\n // eg:\n // folded صلى الله عليه وسلم length 18 code point 65018\n // folded جل جلاله length 8 code point 65019\n\n\n if (folded.length > max_char_length) {\n continue;\n }\n\n if (folded.length == 0) {\n continue;\n }\n\n yield {\n folded: folded,\n composed: composed,\n code_point: i\n };\n }\n }\n}\n/**\n * Generate a unicode map from the list of code points\n * @param {TCodePoints} code_points\n * @return {TUnicodeSets}\n */\n\nconst generateSets = code_points => {\n /** @type {{[key:string]:Set<string>}} */\n const unicode_sets = {};\n /**\n * @param {string} folded\n * @param {string} to_add\n */\n\n const addMatching = (folded, to_add) => {\n /** @type {Set<string>} */\n const folded_set = unicode_sets[folded] || new Set();\n const patt = new RegExp('^' + setToPattern(folded_set) + '$', 'iu');\n\n if (to_add.match(patt)) {\n return;\n }\n\n folded_set.add(escape_regex(to_add));\n unicode_sets[folded] = folded_set;\n };\n\n for (let value of generator(code_points)) {\n addMatching(value.folded, value.folded);\n addMatching(value.folded, value.composed);\n }\n\n return unicode_sets;\n};\n/**\n * Generate a unicode map from the list of code points\n * ae => (?:(?:ae|Æ|Ǽ|Ǣ)|(?:A|Ⓐ|A...)(?:E|ɛ|Ⓔ...))\n *\n * @param {TCodePoints} code_points\n * @return {TUnicodeMap}\n */\n\nconst generateMap = code_points => {\n /** @type {TUnicodeSets} */\n const unicode_sets = generateSets(code_points);\n /** @type {TUnicodeMap} */\n\n const unicode_map = {};\n /** @type {string[]} */\n\n let multi_char = [];\n\n for (let folded in unicode_sets) {\n let set = unicode_sets[folded];\n\n if (set) {\n unicode_map[folded] = setToPattern(set);\n }\n\n if (folded.length > 1) {\n multi_char.push(escape_regex(folded));\n }\n }\n\n multi_char.sort((a, b) => b.length - a.length);\n const multi_char_patt = arrayToPattern(multi_char);\n multi_char_reg = new RegExp('^' + multi_char_patt, 'u');\n return unicode_map;\n};\n/**\n * Map each element of an array from it's folded value to all possible unicode matches\n * @param {string[]} strings\n * @param {number} min_replacement\n * @return {string}\n */\n\nconst mapSequence = (strings, min_replacement = 1) => {\n let chars_replaced = 0;\n strings = strings.map(str => {\n if (unicode_map[str]) {\n chars_replaced += str.length;\n }\n\n return unicode_map[str] || str;\n });\n\n if (chars_replaced >= min_replacement) {\n return sequencePattern(strings);\n }\n\n return '';\n};\n/**\n * Convert a short string and split it into all possible patterns\n * Keep a pattern only if min_replacement is met\n *\n * 'abc'\n * \t\t=> [['abc'],['ab','c'],['a','bc'],['a','b','c']]\n *\t\t=> ['abc-pattern','ab-c-pattern'...]\n *\n *\n * @param {string} str\n * @param {number} min_replacement\n * @return {string}\n */\n\nconst substringsToPattern = (str, min_replacement = 1) => {\n min_replacement = Math.max(min_replacement, str.length - 1);\n return arrayToPattern(allSubstrings(str).map(sub_pat => {\n return mapSequence(sub_pat, min_replacement);\n }));\n};\n/**\n * Convert an array of sequences into a pattern\n * [{start:0,end:3,length:3,substr:'iii'}...] => (?:iii...)\n *\n * @param {Sequence[]} sequences\n * @param {boolean} all\n */\n\nconst sequencesToPattern = (sequences, all = true) => {\n let min_replacement = sequences.length > 1 ? 1 : 0;\n return arrayToPattern(sequences.map(sequence => {\n let seq = [];\n const len = all ? sequence.length() : sequence.length() - 1;\n\n for (let j = 0; j < len; j++) {\n seq.push(substringsToPattern(sequence.substrs[j] || '', min_replacement));\n }\n\n return sequencePattern(seq);\n }));\n};\n/**\n * Return true if the sequence is already in the sequences\n * @param {Sequence} needle_seq\n * @param {Sequence[]} sequences\n */\n\n\nconst inSequences = (needle_seq, sequences) => {\n for (const seq of sequences) {\n if (seq.start != needle_seq.start || seq.end != needle_seq.end) {\n continue;\n }\n\n if (seq.substrs.join('') !== needle_seq.substrs.join('')) {\n continue;\n }\n\n let needle_parts = needle_seq.parts;\n /**\n * @param {TSequencePart} part\n */\n\n const filter = part => {\n for (const needle_part of needle_parts) {\n if (needle_part.start === part.start && needle_part.substr === part.substr) {\n return false;\n }\n\n if (part.length == 1 || needle_part.length == 1) {\n continue;\n } // check for overlapping parts\n // a = ['::=','==']\n // b = ['::','===']\n // a = ['r','sm']\n // b = ['rs','m']\n\n\n if (part.start < needle_part.start && part.end > needle_part.start) {\n return true;\n }\n\n if (needle_part.start < part.start && needle_part.end > part.start) {\n return true;\n }\n }\n\n return false;\n };\n\n let filtered = seq.parts.filter(filter);\n\n if (filtered.length > 0) {\n continue;\n }\n\n return true;\n }\n\n return false;\n};\n\nclass Sequence {\n constructor() {\n /** @type {TSequencePart[]} */\n this.parts = [];\n /** @type {string[]} */\n\n this.substrs = [];\n this.start = 0;\n this.end = 0;\n }\n /**\n * @param {TSequencePart|undefined} part\n */\n\n\n add(part) {\n if (part) {\n this.parts.push(part);\n this.substrs.push(part.substr);\n this.start = Math.min(part.start, this.start);\n this.end = Math.max(part.end, this.end);\n }\n }\n\n last() {\n return this.parts[this.parts.length - 1];\n }\n\n length() {\n return this.parts.length;\n }\n /**\n * @param {number} position\n * @param {TSequencePart} last_piece\n */\n\n\n clone(position, last_piece) {\n let clone = new Sequence();\n let parts = JSON.parse(JSON.stringify(this.parts));\n let last_part = parts.pop();\n\n for (const part of parts) {\n clone.add(part);\n }\n\n let last_substr = last_piece.substr.substring(0, position - last_part.start);\n let clone_last_len = last_substr.length;\n clone.add({\n start: last_part.start,\n end: last_part.start + clone_last_len,\n length: clone_last_len,\n substr: last_substr\n });\n return clone;\n }\n\n}\n/**\n * Expand a regular expression pattern to include unicode variants\n * \teg /a/ becomes /aⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐɑAⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ/\n *\n * Issue:\n * ﺊﺋ [ 'ﺊ = \\\\u{fe8a}', 'ﺋ = \\\\u{fe8b}' ]\n *\tbecomes:\tئئ [ 'ي = \\\\u{64a}', 'ٔ = \\\\u{654}', 'ي = \\\\u{64a}', 'ٔ = \\\\u{654}' ]\n *\n *\tİIJ = IIJ = ⅡJ\n *\n * \t1/2/4\n *\n * @param {string} str\n * @return {string|undefined}\n */\n\n\nconst getPattern = str => {\n initialize();\n str = asciifold(str);\n let pattern = '';\n let sequences = [new Sequence()];\n\n for (let i = 0; i < str.length; i++) {\n let substr = str.substring(i);\n let match = substr.match(multi_char_reg);\n const char = str.substring(i, i + 1);\n const match_str = match ? match[0] : null; // loop through sequences\n // add either the char or multi_match\n\n let overlapping = [];\n let added_types = new Set();\n\n for (const sequence of sequences) {\n const last_piece = sequence.last();\n\n if (!last_piece || last_piece.length == 1 || last_piece.end <= i) {\n // if we have a multi match\n if (match_str) {\n const len = match_str.length;\n sequence.add({\n start: i,\n end: i + len,\n length: len,\n substr: match_str\n });\n added_types.add('1');\n } else {\n sequence.add({\n start: i,\n end: i + 1,\n length: 1,\n substr: char\n });\n added_types.add('2');\n }\n } else if (match_str) {\n let clone = sequence.clone(i, last_piece);\n const len = match_str.length;\n clone.add({\n start: i,\n end: i + len,\n length: len,\n substr: match_str\n });\n overlapping.push(clone);\n } else {\n // don't add char\n // adding would create invalid patterns: 234 => [2,34,4]\n added_types.add('3');\n }\n } // if we have overlapping\n\n\n if (overlapping.length > 0) {\n // ['ii','iii'] before ['i','i','iii']\n overlapping = overlapping.sort((a, b) => {\n return a.length() - b.length();\n });\n\n for (let clone of overlapping) {\n // don't add if we already have an equivalent sequence\n if (inSequences(clone, sequences)) {\n continue;\n }\n\n sequences.push(clone);\n }\n\n continue;\n } // if we haven't done anything unique\n // clean up the patterns\n // helps keep patterns smaller\n // if str = 'r₨㎧aarss', pattern will be 446 instead of 655\n\n\n if (i > 0 && added_types.size == 1 && !added_types.has('3')) {\n pattern += sequencesToPattern(sequences, false);\n let new_seq = new Sequence();\n const old_seq = sequences[0];\n\n if (old_seq) {\n new_seq.add(old_seq.last());\n }\n\n sequences = [new_seq];\n }\n }\n\n pattern += sequencesToPattern(sequences, true);\n return pattern;\n};\n\nexport { _asciifold, asciifold, code_points, generateMap, generateSets, generator, getPattern, initialize, mapSequence, normalize, substringsToPattern, unicode_map };\n//# sourceMappingURL=index.js.map\n","/*! sifter.js | https://github.com/orchidjs/sifter.js | Apache License (v2) */\nimport { asciifold } from '@orchidjs/unicode-variants';\n\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nconst getAttr = (obj, name) => {\n if (!obj) return;\n return obj[name];\n};\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\n\nconst getAttrNesting = (obj, name) => {\n if (!obj) return;\n var part,\n names = name.split(\".\");\n\n while ((part = names.shift()) && (obj = obj[part]));\n\n return obj;\n};\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\n\nconst scoreValue = (value, token, weight) => {\n var score, pos;\n if (!value) return 0;\n value = value + '';\n if (token.regex == null) return 0;\n pos = value.search(token.regex);\n if (pos === -1) return 0;\n score = token.string.length / value.length;\n if (pos === 0) score += 0.5;\n return score * weight;\n};\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\n\nconst propToArray = (obj, key) => {\n var value = obj[key];\n if (typeof value == 'function') return value;\n\n if (value && !Array.isArray(value)) {\n obj[key] = [value];\n }\n};\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\n\nconst iterate = (object, callback) => {\n if (Array.isArray(object)) {\n object.forEach(callback);\n } else {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n callback(object[key], key);\n }\n }\n }\n};\nconst cmp = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n a = asciifold(a + '').toLowerCase();\n b = asciifold(b + '').toLowerCase();\n if (a > b) return 1;\n if (b > a) return -1;\n return 0;\n};\n\nexport { cmp, getAttr, getAttrNesting, iterate, propToArray, scoreValue };\n//# sourceMappingURL=utils.js.map\n","/*! sifter.js | https://github.com/orchidjs/sifter.js | Apache License (v2) */\nimport { iterate, cmp, propToArray, getAttrNesting, getAttr, scoreValue } from './utils.js';\nexport { cmp, getAttr, getAttrNesting, iterate, propToArray, scoreValue } from './utils.js';\nimport { escape_regex, getPattern } from '@orchidjs/unicode-variants';\nexport { getPattern } from '@orchidjs/unicode-variants';\n\n/**\n * sifter.js\n * Copyright (c) 2013–2020 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\nclass Sifter {\n // []|{};\n\n /**\n * Textually searches arrays and hashes of objects\n * by property (or multiple properties). Designed\n * specifically for autocomplete.\n *\n */\n constructor(items, settings) {\n this.items = void 0;\n this.settings = void 0;\n this.items = items;\n this.settings = settings || {\n diacritics: true\n };\n }\n\n /**\n * Splits a search string into an array of individual\n * regexps to be used to match results.\n *\n */\n tokenize(query, respect_word_boundaries, weights) {\n if (!query || !query.length) return [];\n const tokens = [];\n const words = query.split(/\\s+/);\n var field_regex;\n\n if (weights) {\n field_regex = new RegExp('^(' + Object.keys(weights).map(escape_regex).join('|') + ')\\:(.*)$');\n }\n\n words.forEach(word => {\n let field_match;\n let field = null;\n let regex = null; // look for \"field:query\" tokens\n\n if (field_regex && (field_match = word.match(field_regex))) {\n field = field_match[1];\n word = field_match[2];\n }\n\n if (word.length > 0) {\n if (this.settings.diacritics) {\n regex = getPattern(word) || null;\n } else {\n regex = escape_regex(word);\n }\n\n if (regex && respect_word_boundaries) regex = \"\\\\b\" + regex;\n }\n\n tokens.push({\n string: word,\n regex: regex ? new RegExp(regex, 'iu') : null,\n field: field\n });\n });\n return tokens;\n }\n\n /**\n * Returns a function to be used to score individual results.\n *\n * Good matches will have a higher score than poor matches.\n * If an item is not a match, 0 will be returned by the function.\n *\n * @returns {T.ScoreFn}\n */\n getScoreFunction(query, options) {\n var search = this.prepareSearch(query, options);\n return this._getScoreFunction(search);\n }\n /**\n * @returns {T.ScoreFn}\n *\n */\n\n\n _getScoreFunction(search) {\n const tokens = search.tokens,\n token_count = tokens.length;\n\n if (!token_count) {\n return function () {\n return 0;\n };\n }\n\n const fields = search.options.fields,\n weights = search.weights,\n field_count = fields.length,\n getAttrFn = search.getAttrFn;\n\n if (!field_count) {\n return function () {\n return 1;\n };\n }\n /**\n * Calculates the score of an object\n * against the search query.\n *\n */\n\n\n const scoreObject = function () {\n if (field_count === 1) {\n return function (token, data) {\n const field = fields[0].field;\n return scoreValue(getAttrFn(data, field), token, weights[field] || 1);\n };\n }\n\n return function (token, data) {\n var sum = 0; // is the token specific to a field?\n\n if (token.field) {\n const value = getAttrFn(data, token.field);\n\n if (!token.regex && value) {\n sum += 1 / field_count;\n } else {\n sum += scoreValue(value, token, 1);\n }\n } else {\n iterate(weights, (weight, field) => {\n sum += scoreValue(getAttrFn(data, field), token, weight);\n });\n }\n\n return sum / field_count;\n };\n }();\n\n if (token_count === 1) {\n return function (data) {\n return scoreObject(tokens[0], data);\n };\n }\n\n if (search.options.conjunction === 'and') {\n return function (data) {\n var score,\n sum = 0;\n\n for (let token of tokens) {\n score = scoreObject(token, data);\n if (score <= 0) return 0;\n sum += score;\n }\n\n return sum / token_count;\n };\n } else {\n return function (data) {\n var sum = 0;\n iterate(tokens, token => {\n sum += scoreObject(token, data);\n });\n return sum / token_count;\n };\n }\n }\n\n /**\n * Returns a function that can be used to compare two\n * results, for sorting purposes. If no sorting should\n * be performed, `null` will be returned.\n *\n * @return function(a,b)\n */\n getSortFunction(query, options) {\n var search = this.prepareSearch(query, options);\n return this._getSortFunction(search);\n }\n\n _getSortFunction(search) {\n var implicit_score,\n sort_flds = [];\n const self = this,\n options = search.options,\n sort = !search.query && options.sort_empty ? options.sort_empty : options.sort;\n\n if (typeof sort == 'function') {\n return sort.bind(this);\n }\n /**\n * Fetches the specified sort field value\n * from a search result item.\n *\n */\n\n\n const get_field = function get_field(name, result) {\n if (name === '$score') return result.score;\n return search.getAttrFn(self.items[result.id], name);\n }; // parse options\n\n\n if (sort) {\n for (let s of sort) {\n if (search.query || s.field !== '$score') {\n sort_flds.push(s);\n }\n }\n } // the \"$score\" field is implied to be the primary\n // sort field, unless it's manually specified\n\n\n if (search.query) {\n implicit_score = true;\n\n for (let fld of sort_flds) {\n if (fld.field === '$score') {\n implicit_score = false;\n break;\n }\n }\n\n if (implicit_score) {\n sort_flds.unshift({\n field: '$score',\n direction: 'desc'\n });\n } // without a search.query, all items will have the same score\n\n } else {\n sort_flds = sort_flds.filter(fld => fld.field !== '$score');\n } // build function\n\n\n const sort_flds_count = sort_flds.length;\n\n if (!sort_flds_count) {\n return null;\n }\n\n return function (a, b) {\n var result, field;\n\n for (let sort_fld of sort_flds) {\n field = sort_fld.field;\n let multiplier = sort_fld.direction === 'desc' ? -1 : 1;\n result = multiplier * cmp(get_field(field, a), get_field(field, b));\n if (result) return result;\n }\n\n return 0;\n };\n }\n\n /**\n * Parses a search query and returns an object\n * with tokens and fields ready to be populated\n * with results.\n *\n */\n prepareSearch(query, optsUser) {\n const weights = {};\n var options = Object.assign({}, optsUser);\n propToArray(options, 'sort');\n propToArray(options, 'sort_empty'); // convert fields to new format\n\n if (options.fields) {\n propToArray(options, 'fields');\n const fields = [];\n options.fields.forEach(field => {\n if (typeof field == 'string') {\n field = {\n field: field,\n weight: 1\n };\n }\n\n fields.push(field);\n weights[field.field] = 'weight' in field ? field.weight : 1;\n });\n options.fields = fields;\n }\n\n return {\n options: options,\n query: query.toLowerCase().trim(),\n tokens: this.tokenize(query, options.respect_word_boundaries, weights),\n total: 0,\n items: [],\n weights: weights,\n getAttrFn: options.nesting ? getAttrNesting : getAttr\n };\n }\n\n /**\n * Searches through all items and returns a sorted array of matches.\n *\n */\n search(query, options) {\n var self = this,\n score,\n search;\n search = this.prepareSearch(query, options);\n options = search.options;\n query = search.query; // generate result scoring function\n\n const fn_score = options.score || self._getScoreFunction(search); // perform search and sort\n\n\n if (query.length) {\n iterate(self.items, (item, id) => {\n score = fn_score(item);\n\n if (options.filter === false || score > 0) {\n search.items.push({\n 'score': score,\n 'id': id\n });\n }\n });\n } else {\n iterate(self.items, (_, id) => {\n search.items.push({\n 'score': 1,\n 'id': id\n });\n });\n }\n\n const fn_sort = self._getSortFunction(search);\n\n if (fn_sort) search.items.sort(fn_sort); // apply limits\n\n search.total = search.items.length;\n\n if (typeof options.limit === 'number') {\n search.items = search.items.slice(0, options.limit);\n }\n\n return search;\n }\n\n}\n\nexport { Sifter };\n//# sourceMappingURL=sifter.js.map\n","\nimport { asciifold } from '@orchidjs/unicode-variants';\nimport * as T from './types';\n\n\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nexport const getAttr = (obj:{[key:string]:any}, name:string ) => {\n if (!obj ) return;\n return obj[name];\n};\n\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nexport const getAttrNesting = (obj:{[key:string]:any}, name:string ) => {\n if (!obj ) return;\n var part, names = name.split(\".\");\n\twhile( (part = names.shift()) && (obj = obj[part]));\n return obj;\n};\n\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\nexport const scoreValue = (value:string, token:T.Token, weight:number ):number => {\n\tvar score, pos;\n\n\tif (!value) return 0;\n\n\tvalue = value + '';\n\tif( token.regex == null ) return 0;\n\tpos = value.search(token.regex);\n\tif (pos === -1) return 0;\n\n\tscore = token.string.length / value.length;\n\tif (pos === 0) score += 0.5;\n\n\treturn score * weight;\n};\n\n\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\nexport const propToArray = (obj:{[key:string]:any}, key:string) => {\n\tvar value = obj[key];\n\n\tif( typeof value == 'function' ) return value;\n\n\tif( value && !Array.isArray(value) ){\n\t\tobj[key] = [value];\n\t}\n}\n\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nexport const cmp = (a:number|string, b:number|string) => {\n\tif (typeof a === 'number' && typeof b === 'number') {\n\t\treturn a > b ? 1 : (a < b ? -1 : 0);\n\t}\n\ta = asciifold(a + '').toLowerCase();\n\tb = asciifold(b + '').toLowerCase();\n\tif (a > b) return 1;\n\tif (b > a) return -1;\n\treturn 0;\n};\n","\nimport { iterate } from '@orchidjs/sifter/lib/utils';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\11\\12\\14\\15\\40]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n","/**\n * highlight v3 | MIT license | Johann Burkard <jb@eaio.com>\n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal <beatgates@gmail.com> 2011-6-24 (added regex)\n * - Modified by Brian Reavis <brian@thirdroute.com> 2012-8-27 (cleanup)\n */\n\nimport {replaceNode} from '../vanilla';\n\n\nexport const highlight = (element:HTMLElement, regex:string|RegExp) => {\n\n\tif( regex === null ) return;\n\n\t// convet string to regex\n\tif( typeof regex === 'string' ){\n\n\t\tif( !regex.length ) return;\n\t\tregex = new RegExp(regex, 'i');\n\t}\n\n\n\t// Wrap matching part of text node with highlighting <span>, e.g.\n\t// Soccer -> <span class=\"highlight\">Soc</span>cer for regex = /soc/i\n\tconst highlightText = ( node:Text ):number => {\n\n\t\tvar match = node.data.match(regex);\n\t\tif( match && node.data.length > 0 ){\n\t\t\tvar spannode\t\t= document.createElement('span');\n\t\t\tspannode.className\t= 'highlight';\n\t\t\tvar middlebit\t\t= node.splitText(match.index as number);\n\n\t\t\tmiddlebit.splitText(match[0]!.length);\n\t\t\tvar middleclone\t\t= middlebit.cloneNode(true);\n\n\t\t\tspannode.appendChild(middleclone);\n\t\t\treplaceNode(middlebit, spannode);\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\n\t// Recurse element node, looking for child text nodes to highlight, unless element\n\t// is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n\tconst highlightChildren = ( node:Element ):void => {\n\t\tif( node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && ( node.className !== 'highlight' || node.tagName !== 'SPAN' ) ){\n\t\t\tArray.from(node.childNodes).forEach(element => {\n\t\t\t\thighlightRecursive(element);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tconst highlightRecursive = ( node:Node|Element ):number => {\n\n\t\tif( node.nodeType === 3 ){\n\t\t\treturn highlightText(node as Text);\n\t\t}\n\n\t\thighlightChildren(node as Element);\n\n\t\treturn 0;\n\t};\n\n\thighlightRecursive( element );\n};\n\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with(), pass js strict mode, and use without jquery\n */\nexport const removeHighlight = (el:HTMLElement) => {\n\tvar elements = el.querySelectorAll(\"span.highlight\");\n\tArray.prototype.forEach.call(elements, function(el:HTMLElement){\n\t\tvar parent = el.parentNode as Node;\n\t\tparent.replaceChild(el.firstChild as Node, el);\n\t\tparent.normalize();\n\t});\n};\n","export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n","\nexport default {\n\toptions: [],\n\toptgroups: [],\n\n\tplugins: [],\n\tdelimiter: ',',\n\tsplitOn: null, // regexp or string for splitting up values from a paste command\n\tpersist: true,\n\tdiacritics: true,\n\tcreate: null,\n\tcreateOnBlur: false,\n\tcreateFilter: null,\n\thighlight: true,\n\topenOnFocus: true,\n\tshouldOpen: null,\n\tmaxOptions: 50,\n\tmaxItems: null,\n\thideSelected: null,\n\tduplicates: false,\n\taddPrecedence: false,\n\tselectOnTab: false,\n\tpreload: null,\n\tallowEmptyOption: false,\n\t//closeAfterSelect: false,\n\trefreshThrottle: 300,\n\n\n\tloadThrottle: 300,\n\tloadingClass: 'loading',\n\n\tdataAttr: null, //'data-data',\n\toptgroupField: 'optgroup',\n\tvalueField: 'value',\n\tlabelField: 'text',\n\tdisabledField: 'disabled',\n\toptgroupLabelField: 'label',\n\toptgroupValueField: 'value',\n\tlockOptgroupOrder: false,\n\n\tsortField: '$order',\n\tsearchField: ['text'],\n\tsearchConjunction: 'and',\n\n\tmode: null,\n\twrapperClass: 'ts-wrapper',\n\tcontrolClass: 'ts-control',\n\tdropdownClass: 'ts-dropdown',\n\tdropdownContentClass: 'ts-dropdown-content',\n\titemClass: 'item',\n\toptionClass: 'option',\n\n\tdropdownParent: null,\n\tcontrolInput: '<input type=\"text\" autocomplete=\"off\" size=\"1\" />',\n\n\tcopyClassesToDropdown: false,\n\n\tplaceholder: null,\n\thidePlaceholder: null,\n\n\tshouldLoad: function(query:string):boolean{\n\t\treturn query.length > 0;\n\t},\n\n\t/*\n\tload : null, // function(query, callback) { ... }\n\tscore : null, // function(search) { ... }\n\tonInitialize : null, // function() { ... }\n\tonChange : null, // function(value) { ... }\n\tonItemAdd : null, // function(value, $item) { ... }\n\tonItemRemove : null, // function(value) { ... }\n\tonClear : null, // function() { ... }\n\tonOptionAdd : null, // function(value, data) { ... }\n\tonOptionRemove : null, // function(value) { ... }\n\tonOptionClear : null, // function() { ... }\n\tonOptionGroupAdd : null, // function(id, data) { ... }\n\tonOptionGroupRemove : null, // function(id) { ... }\n\tonOptionGroupClear : null, // function() { ... }\n\tonDropdownOpen : null, // function(dropdown) { ... }\n\tonDropdownClose : null, // function(dropdown) { ... }\n\tonType : null, // function(str) { ... }\n\tonDelete : null, // function(values) { ... }\n\t*/\n\n\trender: {\n\t\t/*\n\t\titem: null,\n\t\toptgroup: null,\n\t\toptgroup_header: null,\n\t\toption: null,\n\t\toption_create: null\n\t\t*/\n\t}\n};\n","\nimport TomSelect from './tom-select';\nimport { TomLoadCallback } from './types/index';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n * 'str' -> 'str'\n * null -> ''\n * undefined -> ''\n * true -> '1'\n * false -> '0'\n * 0 -> '0'\n * 1 -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number) => {\n\tif( timeout > 0 ){\n\t\treturn setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n * - start\n * - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n","import defaults from './defaults';\nimport { hash_key } from './utils';\nimport { TomOption, TomSettings, RecursivePartial } from './types/index';\nimport { iterate } from '@orchidjs/sifter/lib/utils';\nimport { TomInput } from './types/index';\n\n\nexport default function getSettings( input:TomInput, settings_user:RecursivePartial<TomSettings>):TomSettings{\n\tvar settings:TomSettings\t= Object.assign({}, defaults, settings_user);\n\n\tvar attr_data\t\t\t\t= settings.dataAttr;\n\tvar field_label\t\t\t\t= settings.labelField;\n\tvar field_value\t\t\t\t= settings.valueField;\n\tvar field_disabled\t\t\t= settings.disabledField;\n\tvar field_optgroup\t\t\t= settings.optgroupField;\n\tvar field_optgroup_label\t= settings.optgroupLabelField;\n\tvar field_optgroup_value\t= settings.optgroupValueField;\n\n\tvar tag_name\t\t\t\t= input.tagName.toLowerCase();\n\tvar placeholder\t\t\t\t= input.getAttribute('placeholder') || input.getAttribute('data-placeholder');\n\n\tif (!placeholder && !settings.allowEmptyOption) {\n\t\tlet option\t\t= input.querySelector('option[value=\"\"]');\n\t\tif( option ){\n\t\t\tplaceholder = option.textContent;\n\t\t}\n\n\t}\n\n\tvar settings_element:{\n\t\tplaceholder\t: null|string,\n\t\toptions\t\t: TomOption[],\n\t\toptgroups\t: TomOption[],\n\t\titems\t\t: string[],\n\t\tmaxItems\t: null|number,\n\t} = {\n\t\tplaceholder\t: placeholder,\n\t\toptions\t\t: [],\n\t\toptgroups\t: [],\n\t\titems\t\t: [],\n\t\tmaxItems\t: null,\n\t};\n\n\n\t/**\n\t * Initialize from a <select> element.\n\t *\n\t */\n\tvar init_select = () => {\n\t\tvar tagName;\n\t\tvar options = settings_element.options;\n\t\tvar optionsMap:{[key:string]:any} = {};\n\t\tvar group_count = 1;\n\t\tlet $order = 0;\n\n\t\tvar readData = (el:HTMLElement):TomOption => {\n\n\t\t\tvar data\t= Object.assign({},el.dataset); // get plain object from DOMStringMap\n\t\t\tvar json\t= attr_data && data[attr_data];\n\n\t\t\tif( typeof json === 'string' && json.length ){\n\t\t\t\tdata = Object.assign(data,JSON.parse(json));\n\t\t\t}\n\n\t\t\treturn data;\n\t\t};\n\n\t\tvar addOption = (option:HTMLOptionElement, group?:string) => {\n\n\t\t\tvar value = hash_key(option.value);\n\t\t\tif ( value == null ) return;\n\t\t\tif ( !value && !settings.allowEmptyOption) return;\n\n\t\t\t// if the option already exists, it's probably been\n\t\t\t// duplicated in another optgroup. in this case, push\n\t\t\t// the current group to the \"optgroup\" property on the\n\t\t\t// existing option so that it's rendered in both places.\n\t\t\tif (optionsMap.hasOwnProperty(value)) {\n\t\t\t\tif (group) {\n\t\t\t\t\tvar arr = optionsMap[value][field_optgroup];\n\t\t\t\t\tif (!arr) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = group;\n\t\t\t\t\t} else if (!Array.isArray(arr)) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = [arr, group];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarr.push(group);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\tvar option_data = readData(option);\n\t\t\t\toption_data[field_label] = option_data[field_label] || option.textContent;\n\t\t\t\toption_data[field_value] = option_data[field_value] || value;\n\t\t\t\toption_data[field_disabled] = option_data[field_disabled] || option.disabled;\n\t\t\t\toption_data[field_optgroup] = option_data[field_optgroup] || group;\n\t\t\t\toption_data.$option\t\t\t= option;\n\t\t\t\toption_data.$order\t\t\t= option_data.$order || ++$order;\n\n\t\t\t\toptionsMap[value] = option_data;\n\t\t\t\toptions.push(option_data);\n\t\t\t}\n\n\t\t\tif( option.selected ){\n\t\t\t\tsettings_element.items.push(value);\n\t\t\t}\n\t\t};\n\n\t\tvar addGroup = ( optgroup:HTMLOptGroupElement ) => {\n\t\t\tvar id:string, optgroup_data\n\n\t\t\toptgroup_data\t\t\t\t\t\t\t= readData(optgroup);\n\t\t\toptgroup_data[field_optgroup_label]\t\t= optgroup_data[field_optgroup_label] || optgroup.getAttribute('label') || '';\n\t\t\toptgroup_data[field_optgroup_value]\t\t= optgroup_data[field_optgroup_value] || group_count++;\n\t\t\toptgroup_data[field_disabled]\t\t\t= optgroup_data[field_disabled] || optgroup.disabled;\n\t\t\toptgroup_data.$order\t\t\t\t\t= optgroup_data.$order || ++$order;\n\n\t\t\tsettings_element.optgroups.push(optgroup_data);\n\n\t\t\tid = optgroup_data[field_optgroup_value];\n\n\t\t\titerate(optgroup.children, (option)=>{\n\t\t\t\taddOption(option as HTMLOptionElement, id);\n\t\t\t});\n\n\t\t};\n\n\t\tsettings_element.maxItems = input.hasAttribute('multiple') ? null : 1;\n\n\t\titerate(input.children,(child)=>{\n\t\t\ttagName = child.tagName.toLowerCase();\n\t\t\tif (tagName === 'optgroup') {\n\t\t\t\taddGroup(child as HTMLOptGroupElement);\n\t\t\t} else if (tagName === 'option') {\n\t\t\t\taddOption(child as HTMLOptionElement);\n\t\t\t}\n\t\t});\n\n\t};\n\n\n\t/**\n\t * Initialize from a <input type=\"text\"> element.\n\t *\n\t */\n\tvar init_textbox = () => {\n\t\tconst data_raw = input.getAttribute(attr_data);\n\n\t\tif (!data_raw) {\n\t\t\tvar value = input.value.trim() || '';\n\t\t\tif (!settings.allowEmptyOption && !value.length) return;\n\t\t\tconst values = value.split(settings.delimiter);\n\n\t\t\titerate( values, (value) => {\n\t\t\t\tconst option:TomOption = {};\n\t\t\t\toption[field_label] = value;\n\t\t\t\toption[field_value] = value;\n\t\t\t\tsettings_element.options.push(option);\n\t\t\t});\n\t\t\tsettings_element.items = values;\n\t\t} else {\n\t\t\tsettings_element.options = JSON.parse(data_raw);\n\t\t\titerate( settings_element.options, (opt) => {\n\t\t\t\tsettings_element.items.push(opt[field_value]);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tif (tag_name === 'select') {\n\t\tinit_select();\n\t} else {\n\t\tinit_textbox();\n\t}\n\n\treturn Object.assign( {}, defaults, settings_element, settings_user) as TomSettings;\n};\n","\nimport MicroEvent from './contrib/microevent';\nimport MicroPlugin from './contrib/microplugin';\nimport { Sifter, iterate } from '@orchidjs/sifter';\nimport { escape_regex } from '@orchidjs/unicode-variants';\nimport { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback, TomItem, TomSettings, TomTemplateNames, TomClearFilter, RecursivePartial } from './types/index';\nimport {highlight, removeHighlight} from './contrib/highlight';\nimport * as constants from './constants';\nimport getSettings from './getSettings';\nimport {\n\thash_key,\n\tget_hash,\n\tescape_html,\n\tdebounce_events,\n\tgetSelection,\n\tpreventDefault,\n\taddEvent,\n\tloadDebounce,\n\ttimeout,\n\tisKeyDown,\n\tgetId,\n\taddSlashes,\n\tappend\n} from './utils';\n\nimport {\n\tgetDom,\n\tisHtmlString,\n\tescapeQuery,\n\ttriggerEvent,\n\tapplyCSS,\n\taddClasses,\n\tremoveClasses,\n\tparentMatch,\n\tgetTail,\n\tisEmptyObject,\n\tnodeIndex,\n\tsetAttr,\n\treplaceNode\n} from './vanilla';\n\nvar instance_i = 0;\n\nexport default class TomSelect extends MicroPlugin(MicroEvent){\n\n\tpublic control_input\t\t\t: HTMLInputElement;\n\tpublic wrapper\t\t\t\t\t: HTMLElement;\n\tpublic dropdown\t\t\t\t\t: HTMLElement;\n\tpublic control\t\t\t\t\t: HTMLElement;\n\tpublic dropdown_content\t\t\t: HTMLElement;\n\tpublic focus_node\t\t\t\t: HTMLElement;\n\n\tpublic order\t\t\t\t\t: number = 0;\n\tpublic settings\t\t\t\t\t: TomSettings;\n\tpublic input\t\t\t\t\t: TomInput;\n\tpublic tabIndex\t\t\t\t\t: number;\n\tpublic is_select_tag\t\t\t: boolean;\n\tpublic rtl\t\t\t\t\t\t: boolean;\n\tprivate inputId\t\t\t\t\t: string;\n\n\tprivate _destroy\t\t\t\t!: () => void;\n\tpublic sifter\t\t\t\t\t: Sifter;\n\n\n\tpublic isOpen\t\t\t\t\t: boolean = false;\n\tpublic isDisabled\t\t\t\t: boolean = false;\n\tpublic isReadOnly\t\t\t\t: boolean = false;\n\tpublic isRequired\t\t\t\t: boolean;\n\tpublic isInvalid\t\t\t\t: boolean = false; // @deprecated 1.8\n\tpublic isValid\t\t\t\t\t: boolean = true;\n\tpublic isLocked\t\t\t\t\t: boolean = false;\n\tpublic isFocused\t\t\t\t: boolean = false;\n\tpublic isInputHidden\t\t\t: boolean = false;\n\tpublic isSetup\t\t\t\t\t: boolean = false;\n\tpublic ignoreFocus\t\t\t\t: boolean = false;\n\tpublic ignoreHover\t\t\t\t: boolean = false;\n\tpublic hasOptions\t\t\t\t: boolean = false;\n\tpublic currentResults\t\t\t?: ReturnType<Sifter['search']>;\n\tpublic lastValue\t\t\t\t: string = '';\n\tpublic caretPos\t\t\t\t\t: number = 0;\n\tpublic loading\t\t\t\t\t: number = 0;\n\tpublic loadedSearches\t\t\t: { [key: string]: boolean } = {};\n\n\tpublic activeOption\t\t\t\t: null|HTMLElement = null;\n\tpublic activeItems\t\t\t\t: TomItem[] = [];\n\n\tpublic optgroups\t\t\t\t: TomOptions = {};\n\tpublic options\t\t\t\t\t: TomOptions = {};\n\tpublic userOptions\t\t\t\t: {[key:string]:boolean} = {};\n\tpublic items\t\t\t\t\t: string[] = [];\n\n\tprivate refreshTimeout\t\t\t: null|ReturnType<typeof setTimeout> = null;\n\n\n\tconstructor( input_arg: string|TomInput, user_settings:RecursivePartial<TomSettings> ){\n\t\tsuper();\n\n\t\tinstance_i++;\n\n\t\tvar dir;\n\t\tvar input\t\t\t\t= getDom( input_arg ) as TomInput;\n\n\t\tif( input.tomselect ){\n\t\t\tthrow new Error('Tom Select already initialized on this element');\n\t\t}\n\n\n\t\tinput.tomselect\t\t\t= this;\n\n\n\t\t// detect rtl environment\n\t\tvar computedStyle\t\t= window.getComputedStyle && window.getComputedStyle(input, null);\n\t\tdir\t\t\t\t\t\t= computedStyle.getPropertyValue('direction');\n\n\t\t// setup default state\n\t\tconst settings\t\t\t= getSettings( input, user_settings );\n\t\tthis.settings\t\t\t= settings;\n\t\tthis.input\t\t\t\t= input;\n\t\tthis.tabIndex\t\t\t= input.tabIndex || 0;\n\t\tthis.is_select_tag\t\t= input.tagName.toLowerCase() === 'select';\n\t\tthis.rtl\t\t\t\t= /rtl/i.test(dir);\n\t\tthis.inputId\t\t\t= getId(input, 'tomselect-'+instance_i);\n\t\tthis.isRequired\t\t\t= input.required;\n\n\n\t\t// search system\n\t\tthis.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\n\n\t\t// option-dependent defaults\n\t\tsettings.mode = settings.mode || (settings.maxItems === 1 ? 'single' : 'multi');\n\t\tif (typeof settings.hideSelected !== 'boolean') {\n\t\t\tsettings.hideSelected = settings.mode === 'multi';\n\t\t}\n\n\t\tif( typeof settings.hidePlaceholder !== 'boolean' ){\n\t\t\tsettings.hidePlaceholder = settings.mode !== 'multi';\n\t\t}\n\n\t\t// set up createFilter callback\n\t\tvar filter = settings.createFilter;\n\t\tif( typeof filter !== 'function' ){\n\n\t\t\tif( typeof filter === 'string' ){\n\t\t\t\tfilter = new RegExp(filter);\n\t\t\t}\n\n\t\t\tif( filter instanceof RegExp ){\n\t\t\t\tsettings.createFilter = (input) => (filter as RegExp).test(input);\n\t\t\t}else{\n\t\t\t\tsettings.createFilter = (value) => {\n\t\t\t\t\treturn this.settings.duplicates || !this.options[value];\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\n\t\tthis.initializePlugins(settings.plugins);\n\t\tthis.setupCallbacks();\n\t\tthis.setupTemplates();\n\n\n\t\t// Create all elements\n\t\tconst wrapper\t\t\t= getDom('<div>');\n\t\tconst control\t\t\t= getDom('<div>');\n\t\tconst dropdown\t\t\t= this._render('dropdown');\n\t\tconst dropdown_content\t= getDom(`<div role=\"listbox\" tabindex=\"-1\">`);\n\n\t\tconst classes\t\t\t= this.input.getAttribute('class') || '';\n\t\tconst inputMode\t\t\t= settings.mode;\n\n\t\tvar control_input: HTMLInputElement;\n\n\n\t\taddClasses( wrapper, settings.wrapperClass, classes, inputMode);\n\n\n\t\taddClasses(control,settings.controlClass);\n\t\tappend( wrapper, control );\n\n\n\t\taddClasses(dropdown, settings.dropdownClass, inputMode);\n\t\tif( settings.copyClassesToDropdown ){\n\t\t\taddClasses( dropdown, classes);\n\t\t}\n\n\n\t\taddClasses(dropdown_content, settings.dropdownContentClass);\n\t\tappend( dropdown, dropdown_content );\n\n\t\tgetDom( settings.dropdownParent || wrapper ).appendChild( dropdown );\n\n\n\t\t// default controlInput\n\t\tif( isHtmlString(settings.controlInput) ){\n\t\t\tcontrol_input\t\t= getDom(settings.controlInput ) as HTMLInputElement;\n\n\t\t\t// set attributes\n\t\t\tvar attrs = ['autocorrect','autocapitalize','autocomplete','spellcheck'];\n\t\t\titerate(attrs,(attr:string) => {\n\t\t\t\tif( input.getAttribute(attr) ){\n\t\t\t\t\tsetAttr(control_input,{[attr]:input.getAttribute(attr)});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcontrol_input.tabIndex = -1;\n\t\t\tcontrol.appendChild( control_input );\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t// dom element\n\t\t}else if( settings.controlInput ){\n\t\t\tcontrol_input\t\t= getDom( settings.controlInput ) as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t}else{\n\t\t\tcontrol_input\t\t= getDom('<input/>') as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control;\n\t\t}\n\n\t\tthis.wrapper\t\t\t= wrapper;\n\t\tthis.dropdown\t\t\t= dropdown;\n\t\tthis.dropdown_content\t= dropdown_content;\n\t\tthis.control \t\t\t= control;\n\t\tthis.control_input\t\t= control_input;\n\n\t\tthis.setup();\n\t}\n\n\t/**\n\t * set up event bindings.\n\t *\n\t */\n\tsetup(){\n\n\t\tconst self = this;\n\t\tconst settings\t\t\t\t= self.settings;\n\t\tconst control_input\t\t\t= self.control_input;\n\t\tconst dropdown\t\t\t\t= self.dropdown;\n\t\tconst dropdown_content\t\t= self.dropdown_content;\n\t\tconst wrapper\t\t\t\t= self.wrapper;\n\t\tconst control\t\t\t\t= self.control;\n\t\tconst input\t\t\t\t\t= self.input;\n\t\tconst focus_node\t\t\t= self.focus_node;\n\t\tconst passive_event\t\t\t= { passive: true };\n\t\tconst listboxId\t\t\t\t= self.inputId +'-ts-dropdown';\n\n\n\t\tsetAttr(dropdown_content,{\n\t\t\tid: listboxId\n\t\t});\n\n\t\tsetAttr(focus_node,{\n\t\t\trole:'combobox',\n\t\t\t'aria-haspopup':'listbox',\n\t\t\t'aria-expanded':'false',\n\t\t\t'aria-controls':listboxId\n\t\t});\n\n\t\tconst control_id\t= getId(focus_node,self.inputId + '-ts-control');\n\t\tconst query\t\t\t= \"label[for='\"+escapeQuery(self.inputId)+\"']\";\n\t\tconst label\t\t\t= document.querySelector(query);\n\t\tconst label_click\t= self.focus.bind(self);\n\t\tif( label ){\n\t\t\taddEvent(label,'click', label_click );\n\t\t\tsetAttr(label,{for:control_id});\n\t\t\tconst label_id = getId(label,self.inputId+'-ts-label');\n\t\t\tsetAttr(focus_node,{'aria-labelledby':label_id});\n\t\t\tsetAttr(dropdown_content,{'aria-labelledby':label_id});\n\t\t}\n\n\t\twrapper.style.width = input.style.width;\n\n\t\tif (self.plugins.names.length) {\n\t\t\tconst classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n\t\t\taddClasses( [wrapper,dropdown], classes_plugins);\n\t\t}\n\n\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag ){\n\t\t\tsetAttr(input,{multiple:'multiple'});\n\t\t}\n\n\t\tif (settings.placeholder) {\n\t\t\tsetAttr(control_input,{placeholder:settings.placeholder});\n\t\t}\n\n\t\t// if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n\t\tif (!settings.splitOn && settings.delimiter) {\n\t\t\tsettings.splitOn = new RegExp('\\\\s*' + escape_regex(settings.delimiter) + '+\\\\s*');\n\t\t}\n\n\t\t// debounce user defined load() if loadThrottle > 0\n\t\t// after initializePlugins() so plugins can create/modify user defined loaders\n\t\tif( settings.load && settings.loadThrottle ){\n\t\t\tsettings.load = loadDebounce(settings.load,settings.loadThrottle)\n\t\t}\n\n\t\taddEvent(dropdown,'mousemove', () => {\n\t\t\tself.ignoreHover = false;\n\t\t});\n\n\t\taddEvent(dropdown,'mouseenter', (e) => {\n\n\t\t\tvar target_match = parentMatch(e.target as HTMLElement, '[data-selectable]', dropdown);\n\t\t\tif( target_match ) self.onOptionHover( e as MouseEvent, target_match );\n\n\t\t}, {capture:true});\n\n\t\t// clicking on an option should select it\n\t\taddEvent(dropdown,'click',(evt) => {\n\t\t\tconst option = parentMatch(evt.target as HTMLElement, '[data-selectable]');\n\t\t\tif( option ){\n\t\t\t\tself.onOptionSelect( evt as MouseEvent, option );\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\t\t});\n\n\t\taddEvent(control,'click', (evt) => {\n\n\t\t\tvar target_match = parentMatch( evt.target as HTMLElement, '[data-ts-item]', control);\n\t\t\tif( target_match && self.onItemSelect(evt as MouseEvent, target_match as TomItem) ){\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// retain focus (see control_input mousedown)\n\t\t\tif( control_input.value != '' ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.onClick();\n\t\t\tpreventDefault(evt,true);\n\t\t});\n\n\n\t\t// keydown on focus_node for arrow_down/arrow_up\n\t\taddEvent(focus_node,'keydown',\t\t(e) => self.onKeyDown(e as KeyboardEvent) );\n\n\t\t// keypress and input/keyup\n\t\taddEvent(control_input,'keypress',\t(e) => self.onKeyPress(e as KeyboardEvent) );\n\t\taddEvent(control_input,'input',\t\t(e) => self.onInput(e as KeyboardEvent) );\n\t\taddEvent(focus_node,'blur', \t\t(e) => self.onBlur(e as FocusEvent) );\n\t\taddEvent(focus_node,'focus',\t\t(e) => self.onFocus(e as MouseEvent) );\n\t\taddEvent(control_input,'paste',\t\t(e) => self.onPaste(e as MouseEvent) );\n\n\n\t\tconst doc_mousedown = (evt:Event) => {\n\n\t\t\t// blur if target is outside of this instance\n\t\t\t// dropdown is not always inside wrapper\n\t\t\tconst target = evt.composedPath()[0];\n\t\t\tif( !wrapper.contains(target as HTMLElement) && !dropdown.contains(target as HTMLElement) ){\n\t\t\t\tif (self.isFocused) {\n\t\t\t\t\tself.blur();\n\t\t\t\t}\n\t\t\t\tself.inputState();\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\t// retain focus by preventing native handling. if the\n\t\t\t// event target is the input it should not be modified.\n\t\t\t// otherwise, text selection within the input won't work.\n\t\t\t// Fixes bug #212 which is no covered by tests\n\t\t\tif( target == control_input && self.isOpen ){\n\t\t\t\tevt.stopPropagation();\n\n\t\t\t// clicking anywhere in the control should not blur the control_input (which would close the dropdown)\n\t\t\t}else{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\n\t\t};\n\n\t\tconst win_scroll = () => {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown();\n\t\t\t}\n\t\t};\n\n\n\t\taddEvent(document,'mousedown', doc_mousedown);\n\t\taddEvent(window,'scroll', win_scroll, passive_event);\n\t\taddEvent(window,'resize', win_scroll, passive_event);\n\n\t\tthis._destroy = () => {\n\t\t\tdocument.removeEventListener('mousedown',doc_mousedown);\n\t\t\twindow.removeEventListener('scroll',win_scroll);\n\t\t\twindow.removeEventListener('resize',win_scroll);\n\t\t\tif( label ) label.removeEventListener('click',label_click);\n\t\t};\n\n\t\t// store original html and tab index so that they can be\n\t\t// restored when the destroy() method is called.\n\t\tthis.revertSettings = {\n\t\t\tinnerHTML : input.innerHTML,\n\t\t\ttabIndex : input.tabIndex\n\t\t};\n\n\n\t\tinput.tabIndex = -1;\n\t\tinput.insertAdjacentElement('afterend', self.wrapper);\n\n\t\tself.sync(false);\n\t\tsettings.items = [];\n\t\tdelete settings.optgroups;\n\t\tdelete settings.options;\n\n\t\taddEvent(input,'invalid', () => {\n\t\t\tif( self.isValid ){\n\t\t\t\tself.isValid = false;\n\t\t\t\tself.isInvalid = true;\n\t\t\t\tself.refreshState();\n\t\t\t}\n\t\t});\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshItems();\n\t\tself.close(false);\n\t\tself.inputState();\n\t\tself.isSetup = true;\n\n\t\tif( input.disabled ){\n\t\t\tself.disable();\n\t\t}else if( input.readOnly ){\n\t\t\tself.setReadOnly(true);\n\t\t}else{\n\t\t\tself.enable(); //sets tabIndex\n\t\t}\n\n\t\tself.on('change', this.onChange);\n\n\t\taddClasses(input,'tomselected','ts-hidden-accessible');\n\t\tself.trigger('initialize');\n\n\t\t// preload options\n\t\tif (settings.preload === true) {\n\t\t\tself.preload();\n\t\t}\n\n\t}\n\n\n\t/**\n\t * Register options and optgroups\n\t *\n\t */\n\tsetupOptions(options:TomOption[] = [], optgroups:TomOption[] = []){\n\n\t\t// build options table\n\t\tthis.addOptions(options);\n\n\n\t\t// build optgroup table\n\t\titerate( optgroups, (optgroup:TomOption) => {\n\t\t\tthis.registerOptionGroup(optgroup);\n\t\t});\n\t}\n\n\t/**\n\t * Sets up default rendering functions.\n\t */\n\tsetupTemplates() {\n\t\tvar self = this;\n\t\tvar field_label = self.settings.labelField;\n\t\tvar field_optgroup = self.settings.optgroupLabelField;\n\n\t\tvar templates = {\n\t\t\t'optgroup': (data:TomOption) => {\n\t\t\t\tlet optgroup = document.createElement('div');\n\t\t\t\toptgroup.className = 'optgroup';\n\t\t\t\toptgroup.appendChild(data.options);\n\t\t\t\treturn optgroup;\n\n\t\t\t},\n\t\t\t'optgroup_header': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n\t\t\t},\n\t\t\t'option': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'item': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'option_create': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>&hellip;</div>';\n\t\t\t},\n\t\t\t'no_results':() => {\n\t\t\t\treturn '<div class=\"no-results\">No results found</div>';\n\t\t\t},\n\t\t\t'loading':() => {\n\t\t\t\treturn '<div class=\"spinner\"></div>';\n\t\t\t},\n\t\t\t'not_loading':() => {},\n\t\t\t'dropdown':() => {\n\t\t\t\treturn '<div></div>';\n\t\t\t}\n\t\t};\n\n\n\t\tself.settings.render = Object.assign({}, templates, self.settings.render);\n\t}\n\n\t/**\n\t * Maps fired events to callbacks provided\n\t * in the settings used when creating the control.\n\t */\n\tsetupCallbacks() {\n\t\tvar key, fn;\n\t\tvar callbacks:{[key:string]:string} = {\n\t\t\t'initialize' : 'onInitialize',\n\t\t\t'change' : 'onChange',\n\t\t\t'item_add' : 'onItemAdd',\n\t\t\t'item_remove' : 'onItemRemove',\n\t\t\t'item_select' : 'onItemSelect',\n\t\t\t'clear' : 'onClear',\n\t\t\t'option_add' : 'onOptionAdd',\n\t\t\t'option_remove' : 'onOptionRemove',\n\t\t\t'option_clear' : 'onOptionClear',\n\t\t\t'optgroup_add' : 'onOptionGroupAdd',\n\t\t\t'optgroup_remove' : 'onOptionGroupRemove',\n\t\t\t'optgroup_clear' : 'onOptionGroupClear',\n\t\t\t'dropdown_open' : 'onDropdownOpen',\n\t\t\t'dropdown_close' : 'onDropdownClose',\n\t\t\t'type' : 'onType',\n\t\t\t'load' : 'onLoad',\n\t\t\t'focus' : 'onFocus',\n\t\t\t'blur' : 'onBlur'\n\t\t};\n\n\t\tfor (key in callbacks) {\n\n\t\t\tfn = this.settings[callbacks[key] as (keyof TomSettings)];\n\t\t\tif (fn) this.on(key, fn);\n\n\t\t}\n\t}\n\n\t/**\n\t * Sync the Tom Select instance with the original input or select\n\t *\n\t */\n\tsync(get_settings:boolean=true):void{\n\t\tconst self\t\t= this;\n\t\tconst settings\t= get_settings ? getSettings( self.input, {delimiter:self.settings.delimiter} as RecursivePartial<TomSettings> ) : self.settings;\n\n\t\tself.setupOptions(settings.options,settings.optgroups);\n\n\t\tself.setValue(settings.items||[],true); // silent prevents recursion\n\n\t\tself.lastQuery = null; // so updated options will be displayed in dropdown\n\t}\n\n\t/**\n\t * Triggered when the main control element\n\t * has a click event.\n\t *\n\t */\n\tonClick():void {\n\t\tvar self = this;\n\n\t\tif( self.activeItems.length > 0 ){\n\t\t\tself.clearActiveItems();\n\t\t\tself.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.isFocused && self.isOpen ){\n\t\t\tself.blur();\n\t\t} else {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated v1.7\n\t *\n\t */\n\tonMouseDown():void {}\n\n\t/**\n\t * Triggered when the value of the control has been changed.\n\t * This should propagate the event to the original DOM\n\t * input / select element.\n\t */\n\tonChange() {\n\t\ttriggerEvent(this.input, 'input');\n\t\ttriggerEvent(this.input, 'change');\n\t}\n\n\t/**\n\t * Triggered on <input> paste.\n\t *\n\t */\n\tonPaste(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isInputHidden || self.isLocked ){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\t// If a regex or string is included, this will split the pasted\n\t\t// input and create Items for each separate value\n\t\tif( !self.settings.splitOn ){\n\t\t\treturn;\n\t\t}\n\n\t\t// Wait for pasted text to be recognized in value\n\t\tsetTimeout(() => {\n\t\t\tvar pastedText = self.inputValue();\n\t\t\tif( !pastedText.match(self.settings.splitOn)){\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar splitInput = pastedText.trim().split(self.settings.splitOn);\n\t\t\titerate( splitInput, (piece:string) => {\n\n\t\t\t\tconst hash = hash_key(piece);\n\t\t\t\tif( hash ){\n\t\t\t\t\tif( this.options[piece] ){\n\t\t\t\t\t\tself.addItem(piece);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tself.createItem(piece);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}, 0);\n\n\t}\n\n\t/**\n\t * Triggered on <input> keypress.\n\t *\n\t */\n\tonKeyPress(e:KeyboardEvent):void {\n\t\tvar self = this;\n\t\tif(self.isLocked){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t\tvar character = String.fromCharCode(e.keyCode || e.which);\n\t\tif (self.settings.create && self.settings.mode === 'multi' && character === self.settings.delimiter) {\n\t\t\tself.createItem();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keydown.\n\t *\n\t */\n\tonKeyDown(e:KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tself.ignoreHover = true;\n\n\t\tif (self.isLocked) {\n\t\t\tif (e.keyCode !== constants.KEY_TAB) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\n\t\t\t// ctrl+A: select all\n\t\t\tcase constants.KEY_A:\n\t\t\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\t\t\tif( self.control_input.value == '' ){\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\tself.selectAll();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// esc: close dropdown\n\t\t\tcase constants.KEY_ESC:\n\t\t\t\tif (self.isOpen) {\n\t\t\t\t\tpreventDefault(e,true);\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\n\t\t\t// down: open dropdown or move selection down\n\t\t\tcase constants.KEY_DOWN:\n\t\t\t\tif (!self.isOpen && self.hasOptions) {\n\t\t\t\t\tself.open();\n\t\t\t\t} else if (self.activeOption) {\n\t\t\t\t\tlet next = self.getAdjacent(self.activeOption, 1);\n\t\t\t\t\tif (next) self.setActiveOption(next);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// up: move selection up\n\t\t\tcase constants.KEY_UP:\n\t\t\t\tif (self.activeOption) {\n\t\t\t\t\tlet prev = self.getAdjacent(self.activeOption, -1);\n\t\t\t\t\tif (prev) self.setActiveOption(prev);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// return: select active option\n\t\t\tcase constants.KEY_RETURN:\n\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// if the option_create=null, the dropdown might be closed\n\t\t\t\t}else if (self.settings.create && self.createItem()) {\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// don't submit form when searching for a value\n\t\t\t\t}else if( document.activeElement == self.control_input && self.isOpen ){\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\n\t\t\t// left: modifiy item selection to the left\n\t\t\tcase constants.KEY_LEFT:\n\t\t\t\tself.advanceSelection(-1, e);\n\t\t\t\treturn;\n\n\t\t\t// right: modifiy item selection to the right\n\t\t\tcase constants.KEY_RIGHT:\n\t\t\t\tself.advanceSelection(1, e);\n\t\t\t\treturn;\n\n\t\t\t// tab: select active option and/or create item\n\t\t\tcase constants.KEY_TAB:\n\n\t\t\t\tif( self.settings.selectOnTab ){\n\t\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\n\t\t\t\t\t\t// prevent default [tab] behaviour of jump to the next field\n\t\t\t\t\t\t// if select isFull, then the dropdown won't be open and [tab] will work normally\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t\tif (self.settings.create && self.createItem()) {\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\n\t\t\t// delete|backspace: delete items\n\t\t\tcase constants.KEY_BACKSPACE:\n\t\t\tcase constants.KEY_DELETE:\n\t\t\t\tself.deleteSelection(e);\n\t\t\t\treturn;\n\t\t}\n\n\t\t// don't enter text in the control_input when active items are selected\n\t\tif( self.isInputHidden && !isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\tpreventDefault(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keyup.\n\t *\n\t */\n\tonInput(e:MouseEvent|KeyboardEvent):void {\n\t\t\n\t\tif( this.isLocked ){\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = this.inputValue();\n\t\tif( this.lastValue === value ) return;\n\t\tthis.lastValue = value;\n\t\t\n\t\tif( value == '' ){\n\t\t\tthis._onInput();\n\t\t\treturn;\n\t\t}\n\n\t\tif( this.refreshTimeout ){\n\t\t\tclearTimeout(this.refreshTimeout);\n\t\t}\n\n\t\tthis.refreshTimeout = timeout(()=> {\n\t\t\tthis.refreshTimeout = null;\n\t\t\tthis._onInput();\n\t\t}, this.settings.refreshThrottle);\n\t}\n\n\t_onInput():void {\n\t\tconst value = this.lastValue;\n\n\t\tif( this.settings.shouldLoad.call(this,value) ){\n\t\t\tthis.load(value);\n\t\t}\n\n\t\tthis.refreshOptions();\n\t\tthis.trigger('type', value);\n\t}\n\n\t/**\n\t * Triggered when the user rolls over\n\t * an option in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionHover( evt:MouseEvent|KeyboardEvent, option:HTMLElement ):void{\n\t\tif( this.ignoreHover ) return;\n\t\tthis.setActiveOption(option, false);\n\t}\n\n\t/**\n\t * Triggered on <input> focus.\n\t *\n\t */\n\tonFocus(e?:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\t\tvar wasFocused = self.isFocused;\n\n\t\tif( self.isDisabled || self.isReadOnly ){\n\t\t\tself.blur();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.ignoreFocus) return;\n\t\tself.isFocused = true;\n\t\tif( self.settings.preload === 'focus' ) self.preload();\n\n\t\tif (!wasFocused) self.trigger('focus');\n\n\t\tif (!self.activeItems.length) {\n\t\t\tself.inputState();\n\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\n\t\t}\n\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Triggered on <input> blur.\n\t *\n\t */\n\tonBlur(e?:FocusEvent):void {\n\n\t\tif( document.hasFocus() === false ) return;\n\n\t\tvar self = this;\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\t\tself.ignoreFocus = false;\n\n\t\tvar deactivate = () => {\n\t\t\tself.close();\n\t\t\tself.setActiveItem();\n\t\t\tself.setCaret(self.items.length);\n\t\t\tself.trigger('blur');\n\t\t};\n\n\t\tif (self.settings.create && self.settings.createOnBlur) {\n\t\t\tself.createItem(null, deactivate);\n\t\t} else {\n\t\t\tdeactivate();\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered when the user clicks on an option\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionSelect( evt:MouseEvent|KeyboardEvent, option:HTMLElement ){\n\t\tvar value, self = this;\n\n\n\t\t// should not be possible to trigger a option under a disabled optgroup\n\t\tif( option.parentElement && option.parentElement.matches('[data-disabled]') ){\n\t\t\treturn;\n\t\t}\n\n\n\t\tif( option.classList.contains('create') ){\n\t\t\tself.createItem(null, () => {\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = option.dataset.value;\n\t\t\tif (typeof value !== 'undefined') {\n\t\t\t\tself.lastQuery = null;\n\t\t\t\tself.addItem(value);\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( !self.settings.hideSelected && evt.type && /click/.test(evt.type) ){\n\t\t\t\t\tself.setActiveOption(option);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return true if the given option can be selected\n\t *\n\t */\n\tcanSelect(option:HTMLElement|null):boolean{\n\n\t\tif( this.isOpen && option && this.dropdown_content.contains(option) ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Triggered when the user clicks on an item\n\t * that has been selected.\n\t *\n\t */\n\tonItemSelect( evt?:MouseEvent, item?:TomItem ):boolean{\n\t\tvar self = this;\n\n\t\tif( !self.isLocked && self.settings.mode === 'multi' ){\n\t\t\tpreventDefault(evt);\n\t\t\tself.setActiveItem(item, evt);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determines whether or not to invoke\n\t * the user-provided option provider / loader\n\t *\n\t * Note, there is a subtle difference between\n\t * this.canLoad() and this.settings.shouldLoad();\n\t *\n\t *\t- settings.shouldLoad() is a user-input validator.\n\t *\tWhen false is returned, the not_loading template\n\t *\twill be added to the dropdown\n\t *\n\t *\t- canLoad() is lower level validator that checks\n\t * \tthe Tom Select instance. There is no inherent user\n\t *\tfeedback when canLoad returns false\n\t *\n\t */\n\tcanLoad(value:string):boolean{\n\n\t\tif( !this.settings.load ) return false;\n\t\tif( this.loadedSearches.hasOwnProperty(value) ) return false;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Invokes the user-provided option provider / loader.\n\t *\n\t */\n\tload(value:string):void {\n\t\tconst self = this;\n\n\t\tif( !self.canLoad(value) ) return;\n\n\t\taddClasses(self.wrapper,self.settings.loadingClass);\n\t\tself.loading++;\n\n\t\tconst callback = self.loadCallback.bind(self);\n\t\tself.settings.load.call(self, value, callback);\n\t}\n\n\t/**\n\t * Invoked by the user-provided option provider\n\t *\n\t */\n\tloadCallback( options:TomOption[], optgroups:TomOption[] ):void{\n\t\tconst self = this;\n\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\tself.lastQuery = null;\n\n\t\tself.clearActiveOption(); // when new results load, focus should be on first option\n\t\tself.setupOptions(options,optgroups);\n\n\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\n\t\tif (!self.loading) {\n\t\t\tremoveClasses(self.wrapper,self.settings.loadingClass);\n\t\t}\n\n\t\tself.trigger('load', options, optgroups);\n\t}\n\n\tpreload():void{\n\t\tvar classList = this.wrapper.classList;\n\t\tif( classList.contains('preloaded') ) return;\n\t\tclassList.add('preloaded');\n\t\tthis.load('');\n\t}\n\n\n\t/**\n\t * Sets the input field of the control to the specified value.\n\t *\n\t */\n\tsetTextboxValue(value:string = '') {\n\t\tvar input = this.control_input;\n\t\tvar changed = input.value !== value;\n\t\tif (changed) {\n\t\t\tinput.value = value;\n\t\t\ttriggerEvent(input,'update');\n\t\t\tthis.lastValue = value;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the value of the control. If multiple items\n\t * can be selected (e.g. <select multiple>), this returns\n\t * an array. If only one item can be selected, this\n\t * returns a string.\n\t *\n\t */\n\tgetValue():string|string[] {\n\n\t\tif( this.is_select_tag && this.input.hasAttribute('multiple')) {\n\t\t\treturn this.items;\n\t\t}\n\n\t\treturn this.items.join(this.settings.delimiter);\n\t}\n\n\t/**\n\t * Resets the selected items to the given value.\n\t *\n\t */\n\tsetValue( value:string|string[], silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change'];\n\n\t\tdebounce_events(this, events,() => {\n\t\t\tthis.clear(silent);\n\t\t\tthis.addItems(value, silent);\n\t\t});\n\t}\n\n\n\t/**\n\t * Resets the number of max items to the given value\n\t *\n\t */\n\tsetMaxItems(value:null|number){\n\t\tif(value === 0) value = null; //reset to unlimited items.\n\t\tthis.settings.maxItems = value;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Sets the selected item.\n\t *\n\t */\n\tsetActiveItem( item?:TomItem, e?:MouseEvent|KeyboardEvent ){\n\t\tvar self = this;\n\t\tvar eventName;\n\t\tvar i, begin, end, swap;\n\t\tvar last;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\t// clear the active selection\n\t\tif( !item ){\n\t\t\tself.clearActiveItems();\n\t\t\tif (self.isFocused) {\n\t\t\t\tself.inputState();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// modify selection\n\t\teventName = e && e.type.toLowerCase();\n\n\t\tif (eventName === 'click' && isKeyDown('shiftKey',e) && self.activeItems.length) {\n\t\t\tlast\t= self.getLastActive();\n\t\t\tbegin\t= Array.prototype.indexOf.call(self.control.children, last);\n\t\t\tend\t\t= Array.prototype.indexOf.call(self.control.children, item);\n\n\t\t\tif (begin > end) {\n\t\t\t\tswap = begin;\n\t\t\t\tbegin = end;\n\t\t\t\tend = swap;\n\t\t\t}\n\t\t\tfor (i = begin; i <= end; i++) {\n\t\t\t\titem = self.control.children[i] as TomItem;\n\t\t\t\tif (self.activeItems.indexOf(item) === -1) {\n\t\t\t\t\tself.setActiveItemClass(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpreventDefault(e);\n\t\t} else if ((eventName === 'click' && isKeyDown(constants.KEY_SHORTCUT,e) ) || (eventName === 'keydown' && isKeyDown('shiftKey',e))) {\n\t\t\tif( item.classList.contains('active') ){\n\t\t\t\tself.removeActiveItem( item );\n\t\t\t} else {\n\t\t\t\tself.setActiveItemClass(item);\n\t\t\t}\n\t\t} else {\n\t\t\tself.clearActiveItems();\n\t\t\tself.setActiveItemClass(item);\n\t\t}\n\n\t\t// ensure control has focus\n\t\tself.inputState();\n\t\tif (!self.isFocused) {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Set the active and last-active classes\n\t *\n\t */\n\tsetActiveItemClass( item:TomItem ){\n\t\tconst self = this;\n\t\tconst last_active = self.control.querySelector('.last-active');\n\t\tif( last_active ) removeClasses(last_active as HTMLElement,'last-active');\n\n\t\taddClasses(item,'active last-active');\n\t\tself.trigger('item_select', item);\n\t\tif( self.activeItems.indexOf(item) == -1 ){\n\t\t\tself.activeItems.push( item );\n\t\t}\n\t}\n\n\t/**\n\t * Remove active item\n\t *\n\t */\n\tremoveActiveItem( item:TomItem ){\n\t\tvar idx = this.activeItems.indexOf(item);\n\t\tthis.activeItems.splice(idx, 1);\n\t\tremoveClasses(item,'active');\n\t}\n\n\t/**\n\t * Clears all the active items\n\t *\n\t */\n\tclearActiveItems(){\n\t\tremoveClasses(this.activeItems,'active');\n\t\tthis.activeItems = [];\n\t}\n\n\t/**\n\t * Sets the selected item in the dropdown menu\n\t * of available options.\n\t *\n\t */\n\tsetActiveOption( option:null|HTMLElement,scroll:boolean=true ):void{\n\n\t\tif( option === this.activeOption ){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearActiveOption();\n\t\tif( !option ) return;\n\n\t\tthis.activeOption = option;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':option.getAttribute('id')});\n\t\tsetAttr(option,{'aria-selected':'true'});\n\t\taddClasses(option,'active');\n\t\tif( scroll ) this.scrollToOption(option);\n\t}\n\n\t/**\n\t * Sets the dropdown_content scrollTop to display the option\n\t *\n\t */\n\tscrollToOption( option:null|HTMLElement, behavior?:string ):void{\n\n\t\tif( !option ) return;\n\n\t\tconst content\t\t= this.dropdown_content;\n\t\tconst height_menu\t= content.clientHeight;\n\t\tconst scrollTop\t\t= content.scrollTop || 0;\n\t\tconst height_item\t= option.offsetHeight;\n\t\tconst y\t\t\t\t= option.getBoundingClientRect().top - content.getBoundingClientRect().top + scrollTop;\n\n\t\tif (y + height_item > height_menu + scrollTop) {\n\t\t\tthis.scroll(y - height_menu + height_item, behavior);\n\n\t\t} else if (y < scrollTop) {\n\t\t\tthis.scroll(y, behavior);\n\t\t}\n\t}\n\n\t/**\n\t * Scroll the dropdown to the given position\n\t *\n\t */\n\tscroll( scrollTop:number, behavior?:string ):void{\n\t\tconst content = this.dropdown_content;\n\t\tif( behavior ){\n\t\t\tcontent.style.scrollBehavior = behavior;\n\t\t}\n\t\tcontent.scrollTop = scrollTop;\n\t\tcontent.style.scrollBehavior = '';\n\t}\n\n\t/**\n\t * Clears the active option\n\t *\n\t */\n\tclearActiveOption(){\n\t\tif( this.activeOption ){\n\t\t\tremoveClasses(this.activeOption,'active');\n\t\t\tsetAttr(this.activeOption,{'aria-selected':null});\n\t\t}\n\t\tthis.activeOption = null;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':null});\n\t}\n\n\n\t/**\n\t * Selects all items (CTRL + A).\n\t */\n\tselectAll() {\n\t\tconst self = this;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\tconst activeItems = self.controlChildren();\n\n\t\tif( !activeItems.length ) return;\n\n\t\tself.inputState();\n\t\tself.close();\n\n\t\tself.activeItems = activeItems;\n\t\titerate( activeItems, (item:TomItem) => {\n\t\t\tself.setActiveItemClass(item);\n\t\t});\n\n\t}\n\n\t/**\n\t * Determines if the control_input should be in a hidden or visible state\n\t *\n\t */\n\tinputState(){\n\t\tvar self = this;\n\n\t\tif( !self.control.contains(self.control_input) ) return;\n\n\t\tsetAttr(self.control_input,{placeholder:self.settings.placeholder});\n\n\t\tif( self.activeItems.length > 0 || (!self.isFocused && self.settings.hidePlaceholder && self.items.length > 0) ){\n\t\t\tself.setTextboxValue();\n\t\t\tself.isInputHidden = true;\n\n\t\t}else{\n\n\t\t\tif( self.settings.hidePlaceholder && self.items.length > 0 ){\n\t\t\t\tsetAttr(self.control_input,{placeholder:''});\n\t\t\t}\n\t\t\tself.isInputHidden = false;\n\t\t}\n\n\t\tself.wrapper.classList.toggle('input-hidden', self.isInputHidden );\n\t}\n\n\t/**\n\t * Get the input value\n\t */\n\tinputValue(){\n\t\treturn this.control_input.value.trim();\n\t}\n\n\t/**\n\t * Gives the control focus.\n\t */\n\tfocus() {\n\t\tvar self = this;\n\t\tif( self.isDisabled || self.isReadOnly) return;\n\n\t\tself.ignoreFocus = true;\n\n\t\tif( self.control_input.offsetWidth ){\n\t\t\tself.control_input.focus();\n\t\t}else{\n\t\t\tself.focus_node.focus();\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tself.ignoreFocus = false;\n\t\t\tself.onFocus();\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Forces the control out of focus.\n\t *\n\t */\n\tblur():void {\n\t\tthis.focus_node.blur();\n\t\tthis.onBlur();\n\t}\n\n\t/**\n\t * Returns a function that scores an object\n\t * to show how good of a match it is to the\n\t * provided query.\n\t *\n\t * @return {function}\n\t */\n\tgetScoreFunction(query:string) {\n\t\treturn this.sifter.getScoreFunction(query, this.getSearchOptions());\n\t}\n\n\t/**\n\t * Returns search options for sifter (the system\n\t * for scoring and sorting results).\n\t *\n\t * @see https://github.com/orchidjs/sifter.js\n\t * @return {object}\n\t */\n\tgetSearchOptions() {\n\t\tvar settings = this.settings;\n\t\tvar sort = settings.sortField;\n\t\tif (typeof settings.sortField === 'string') {\n\t\t\tsort = [{field: settings.sortField}];\n\t\t}\n\n\t\treturn {\n\t\t\tfields : settings.searchField,\n\t\t\tconjunction : settings.searchConjunction,\n\t\t\tsort : sort,\n\t\t\tnesting : settings.nesting\n\t\t};\n\t}\n\n\t/**\n\t * Searches through available options and returns\n\t * a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string) : ReturnType<Sifter['search']>{\n\t\tvar result, calculateScore;\n\t\tvar self = this;\n\t\tvar options = this.getSearchOptions();\n\n\t\t// validate user-provided result scoring function\n\t\tif ( self.settings.score ){\n\t\t\tcalculateScore = self.settings.score.call(self,query);\n\t\t\tif (typeof calculateScore !== 'function') {\n\t\t\t\tthrow new Error('Tom Select \"score\" setting must be a function that returns a function');\n\t\t\t}\n\t\t}\n\n\t\t// perform search\n\t\tif (query !== self.lastQuery) {\n\t\t\tself.lastQuery\t\t\t= query;\n\t\t\tresult\t\t\t\t\t= self.sifter.search(query, Object.assign(options, {score: calculateScore}));\n\t\t\tself.currentResults\t\t= result;\n\t\t} else {\n\t\t\tresult\t\t\t\t\t= Object.assign( {}, self.currentResults);\n\t\t}\n\n\t\t// filter out selected items\n\t\tif( self.settings.hideSelected ){\n\t\t\tresult.items = result.items.filter((item) => {\n\t\t\t\tlet hashed = hash_key(item.id);\n\t\t\t\treturn !(hashed && self.items.indexOf(hashed) !== -1 );\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Refreshes the list of available options shown\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\trefreshOptions( triggerDropdown:boolean = true ){\n\t\tvar i, j, k, n, optgroup, optgroups, html:DocumentFragment, has_create_option, active_group;\n\t\tvar create;\n\n\t\ttype Group = {fragment:DocumentFragment,order:number,optgroup:string}\n\t\tconst groups: {[key:string]:number} = {};\n\t\tconst groups_order:Group[]\t= [];\n\n\t\tvar self\t\t\t\t\t= this;\n\t\tvar query\t\t\t\t\t= self.inputValue();\n\t\tconst same_query\t\t\t= query === self.lastQuery || (query == '' && self.lastQuery == null);\n\t\tvar results\t\t\t\t\t= self.search(query);\n\t\tvar active_option:HTMLElement|null = null;\n\t\tvar show_dropdown\t\t\t= self.settings.shouldOpen || false;\n\t\tvar dropdown_content\t\t= self.dropdown_content;\n\n\n\t\tif( same_query ){\n\t\t\tactive_option\t\t\t= self.activeOption;\n\n\t\t\tif( active_option ){\n\t\t\t\tactive_group = active_option.closest('[data-group]') as HTMLElement;\n\t\t\t}\n\t\t}\n\n\t\t// build markup\n\t\tn = results.items.length;\n\t\tif (typeof self.settings.maxOptions === 'number') {\n\t\t\tn = Math.min(n, self.settings.maxOptions);\n\t\t}\n\n\t\tif( n > 0 ){\n\t\t\tshow_dropdown = true;\n\t\t}\n\n\t\t// get fragment for group and the position of the group in group_order\n\t\tconst getGroupFragment = (optgroup:string,order:number):[number,DocumentFragment] => {\n\n\t\t\tlet group_order_i = groups[optgroup];\n\n\t\t\tif( group_order_i !== undefined ){\n\t\t\t\tlet order_group = groups_order[group_order_i];\n\t\t\t\tif( order_group !== undefined ){\n\t\t\t\t\treturn [group_order_i,order_group.fragment];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet group_fragment = document.createDocumentFragment();\n\t\t\tgroup_order_i = groups_order.length;\n\t\t\tgroups_order.push({fragment:group_fragment,order,optgroup});\n\n\t\t\treturn [group_order_i,group_fragment]\n\t\t}\n\n\t\t// render and group available options individually\n\t\tfor (i = 0; i < n; i++) {\n\n\t\t\t// get option dom element\n\t\t\tlet item\t\t\t= results.items[i];\n\t\t\tif( !item ) continue;\n\n\t\t\tlet opt_value\t\t= item.id;\n\t\t\tlet option\t\t\t= self.options[opt_value];\n\n\t\t\tif( option === undefined ) continue;\n\n\t\t\tlet opt_hash\t\t= get_hash(opt_value);\n\t\t\tlet option_el\t\t= self.getOption(opt_hash,true) as HTMLElement;\n\n\t\t\t// toggle 'selected' class\n\t\t\tif( !self.settings.hideSelected ){\n\t\t\t\toption_el.classList.toggle('selected', self.items.includes(opt_hash) );\n\t\t\t}\n\n\t\t\toptgroup = option[self.settings.optgroupField] || '';\n\t\t\toptgroups = Array.isArray(optgroup) ? optgroup : [optgroup];\n\t\t\t\n\n\t\t\tfor (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n\t\t\t\toptgroup = optgroups[j];\n\n\t\t\t\tlet order = option.$order;\n\t\t\t\tlet self_optgroup = self.optgroups[optgroup];\n\t\t\t\tif( self_optgroup === undefined ){\t\t\t\t\t\n\t\t\t\t\toptgroup = '';\n\t\t\t\t}else{\n\t\t\t\t\torder = self_optgroup.$order;\n\t\t\t\t}\n\n\t\t\t\tconst [group_order_i,group_fragment] = getGroupFragment(optgroup,order);\n\n\n\t\t\t\t// nodes can only have one parent, so if the option is in mutple groups, we need a clone\n\t\t\t\tif( j > 0 ){\n\t\t\t\t\toption_el = option_el.cloneNode(true) as HTMLElement;\n\t\t\t\t\tsetAttr(option_el,{id: option.$id+'-clone-'+j,'aria-selected':null});\n\t\t\t\t\toption_el.classList.add('ts-cloned');\n\t\t\t\t\tremoveClasses(option_el,'active');\n\n\n\t\t\t\t\t// make sure we keep the activeOption in the same group\n\t\t\t\t\tif( self.activeOption && self.activeOption.dataset.value == opt_value ){\n\t\t\t\t\t\tif( active_group && active_group.dataset.group === optgroup.toString() ){\n\t\t\t\t\t\t\tactive_option = option_el;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\t\n\t\t\t\t\n\t\t\t\tgroup_fragment.appendChild(option_el);\n\t\t\t\tif( optgroup != '' ){\n\t\t\t\t\tgroups[optgroup] = group_order_i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// sort optgroups\n\t\tif( self.settings.lockOptgroupOrder ){\n\t\t\tgroups_order.sort((a, b) => {\n\t\t\t\treturn a.order - b.order;\n\t\t\t});\n\t\t}\n\n\t\t// render optgroup headers & join groups\n\t\thtml = document.createDocumentFragment();\n\t\titerate( groups_order, (group_order:Group) => {\n\n\t\t\tlet group_fragment = group_order.fragment;\n\t\t\tlet optgroup = group_order.optgroup\n\n\t\t\tif( !group_fragment || !group_fragment.children.length ) return;\n\n\t\t\tlet group_heading = self.optgroups[optgroup];\n\n\t\t\tif( group_heading !== undefined ){\n\n\t\t\t\tlet group_options = document.createDocumentFragment();\n\t\t\t\tlet header = self.render('optgroup_header', group_heading);\n\t\t\t\tappend( group_options, header );\n\t\t\t\tappend( group_options, group_fragment );\n\n\t\t\t\tlet group_html = self.render('optgroup', {group:group_heading,options:group_options} );\n\n\t\t\t\tappend( html, group_html );\n\n\t\t\t} else {\n\t\t\t\tappend( html, group_fragment );\n\t\t\t}\n\t\t});\n\n\t\tdropdown_content.innerHTML = '';\n\t\tappend( dropdown_content, html );\n\n\t\t// highlight matching terms inline\n\t\tif (self.settings.highlight) {\n\t\t\tremoveHighlight( dropdown_content );\n\t\t\tif (results.query.length && results.tokens.length) {\n\t\t\t\titerate( results.tokens, (tok) => {\n\t\t\t\t\thighlight( dropdown_content, tok.regex);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// helper method for adding templates to dropdown\n\t\tvar add_template = (template:TomTemplateNames) => {\n\t\t\tlet content = self.render(template,{input:query});\n\t\t\tif( content ){\n\t\t\t\tshow_dropdown = true;\n\t\t\t\tdropdown_content.insertBefore(content, dropdown_content.firstChild);\n\t\t\t}\n\t\t\treturn content;\n\t\t};\n\n\n\t\t// add loading message\n\t\tif( self.loading ){\n\t\t\tadd_template('loading');\n\n\t\t// invalid query\n\t\t}else if( !self.settings.shouldLoad.call(self,query) ){\n\t\t\tadd_template('not_loading');\n\n\t\t// add no_results message\n\t\t}else if( results.items.length === 0 ){\n\t\t\tadd_template('no_results');\n\n\t\t}\n\n\n\n\t\t// add create option\n\t\thas_create_option = self.canCreate(query);\n\t\tif (has_create_option) {\n\t\t\tcreate = add_template('option_create');\n\t\t}\n\n\n\t\t// activate\n\t\tself.hasOptions = results.items.length > 0 || has_create_option;\n\t\tif( show_dropdown ){\n\n\t\t\tif (results.items.length > 0) {\n\n\t\t\t\tif( !active_option && self.settings.mode === 'single' && self.items[0] != undefined ){\n\t\t\t\t\tactive_option = self.getOption(self.items[0]);\n\t\t\t\t}\n\n\t\t\t\tif( !dropdown_content.contains(active_option) ){\n\n\t\t\t\t\tlet active_index = 0;\n\t\t\t\t\tif( create && !self.settings.addPrecedence ){\n\t\t\t\t\t\tactive_index = 1;\n\t\t\t\t\t}\n\t\t\t\t\tactive_option = self.selectable()[active_index] as HTMLElement;\n\t\t\t\t}\n\n\t\t\t}else if( create ){\n\t\t\t\tactive_option = create;\n\t\t\t}\n\n\t\t\tif( triggerDropdown && !self.isOpen ){\n\t\t\t\tself.open();\n\t\t\t\tself.scrollToOption(active_option,'auto');\n\t\t\t}\n\t\t\tself.setActiveOption(active_option);\n\n\t\t}else{\n\t\t\tself.clearActiveOption();\n\t\t\tif( triggerDropdown && self.isOpen ){\n\t\t\t\tself.close(false); // if create_option=null, we want the dropdown to close but not reset the textbox value\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return list of selectable options\n\t *\n\t */\n\tselectable():NodeList{\n\t\treturn this.dropdown_content.querySelectorAll('[data-selectable]');\n\t}\n\n\n\n\t/**\n\t * Adds an available option. If it already exists,\n\t * nothing will happen. Note: this does not refresh\n\t * the options list dropdown (use `refreshOptions`\n\t * for that).\n\t *\n\t * Usage:\n\t *\n\t * this.addOption(data)\n\t *\n\t */\n\taddOption( data:TomOption, user_created = false ):false|string {\n\t\tconst self = this;\n\n\t\t// @deprecated 1.7.7\n\t\t// use addOptions( array, user_created ) for adding multiple options\n\t\tif( Array.isArray(data) ){\n\t\t\tself.addOptions( data, user_created);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst key = hash_key(data[self.settings.valueField]);\n\t\tif( key === null || self.options.hasOwnProperty(key) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tdata.$order\t\t\t= data.$order || ++self.order;\n\t\tdata.$id\t\t\t= self.inputId + '-opt-' + data.$order;\n\t\tself.options[key]\t= data;\n\t\tself.lastQuery\t\t= null;\n\n\t\tif( user_created ){\n\t\t\tself.userOptions[key] = user_created;\n\t\t\tself.trigger('option_add', key, data);\n\t\t}\n\n\t\treturn key;\n\t}\n\n\t/**\n\t * Add multiple options\n\t *\n\t */\n\taddOptions( data:TomOption[], user_created = false ):void{\n\t\titerate( data, (dat:TomOption) => {\n\t\t\tthis.addOption(dat, user_created);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 1.7.7\n\t */\n\tregisterOption( data:TomOption ):false|string {\n\t\treturn this.addOption(data);\n\t}\n\n\t/**\n\t * Registers an option group to the pool of option groups.\n\t *\n\t * @return {boolean|string}\n\t */\n\tregisterOptionGroup(data:TomOption) {\n\t\tvar key = hash_key(data[this.settings.optgroupValueField]);\n\n\t\tif ( key === null ) return false;\n\n\t\tdata.$order = data.$order || ++this.order;\n\t\tthis.optgroups[key] = data;\n\t\treturn key;\n\t}\n\n\t/**\n\t * Registers a new optgroup for options\n\t * to be bucketed into.\n\t *\n\t */\n\taddOptionGroup(id:string, data:TomOption) {\n\t\tvar hashed_id;\n\t\tdata[this.settings.optgroupValueField] = id;\n\n\t\tif( hashed_id = this.registerOptionGroup(data) ){\n\t\t\tthis.trigger('optgroup_add', hashed_id, data);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an existing option group.\n\t *\n\t */\n\tremoveOptionGroup(id:string) {\n\t\tif (this.optgroups.hasOwnProperty(id)) {\n\t\t\tdelete this.optgroups[id];\n\t\t\tthis.clearCache();\n\t\t\tthis.trigger('optgroup_remove', id);\n\t\t}\n\t}\n\n\t/**\n\t * Clears all existing option groups.\n\t */\n\tclearOptionGroups() {\n\t\tthis.optgroups = {};\n\t\tthis.clearCache();\n\t\tthis.trigger('optgroup_clear');\n\t}\n\n\t/**\n\t * Updates an option available for selection. If\n\t * it is visible in the selected items or options\n\t * dropdown, it will be re-rendered automatically.\n\t *\n\t */\n\tupdateOption(value:string, data:TomOption) {\n\t\tconst self = this;\n\t\tvar item_new;\n\t\tvar index_item;\n\n\t\tconst value_old\t\t= hash_key(value);\n\t\tconst value_new\t\t= hash_key(data[self.settings.valueField]);\n\n\t\t// sanity checks\n\t\tif( value_old === null ) return;\n\n\t\tconst data_old\t\t= self.options[value_old];\n\n\t\tif( data_old == undefined ) return;\n\t\tif( typeof value_new !== 'string' ) throw new Error('Value must be set in option data');\n\n\n\t\tconst option\t\t= self.getOption(value_old);\n\t\tconst item\t\t\t= self.getItem(value_old);\n\n\n\t\tdata.$order = data.$order || data_old.$order;\n\t\tdelete self.options[value_old];\n\n\t\t// invalidate render cache\n\t\t// don't remove existing node yet, we'll remove it after replacing it\n\t\tself.uncacheValue(value_new);\n\n\t\tself.options[value_new] = data;\n\n\t\t// update the option if it's in the dropdown\n\t\tif( option ){\n\t\t\tif( self.dropdown_content.contains(option) ){\n\n\t\t\t\tconst option_new\t= self._render('option', data);\n\t\t\t\treplaceNode(option, option_new);\n\n\t\t\t\tif( self.activeOption === option ){\n\t\t\t\t\tself.setActiveOption(option_new);\n\t\t\t\t}\n\t\t\t}\n\t\t\toption.remove();\n\t\t}\n\n\t\t// update the item if we have one\n\t\tif( item ){\n\t\t\tindex_item = self.items.indexOf(value_old);\n\t\t\tif (index_item !== -1) {\n\t\t\t\tself.items.splice(index_item, 1, value_new);\n\t\t\t}\n\n\t\t\titem_new\t= self._render('item', data);\n\n\t\t\tif( item.classList.contains('active') ) addClasses(item_new,'active');\n\n\t\t\treplaceNode( item, item_new);\n\t\t}\n\n\t\t// invalidate last query because we might have updated the sortField\n\t\tself.lastQuery = null;\n\t}\n\n\t/**\n\t * Removes a single option.\n\t *\n\t */\n\tremoveOption(value:string, silent?:boolean):void {\n\t\tconst self = this;\n\t\tvalue = get_hash(value);\n\n\t\tself.uncacheValue(value);\n\n\t\tdelete self.userOptions[value];\n\t\tdelete self.options[value];\n\t\tself.lastQuery = null;\n\t\tself.trigger('option_remove', value);\n\t\tself.removeItem(value, silent);\n\t}\n\n\t/**\n\t * Clears all options.\n\t */\n\tclearOptions(filter?:TomClearFilter ) {\n\n\t\tconst boundFilter = (filter || this.clearFilter).bind(this);\n\n\t\tthis.loadedSearches\t\t= {};\n\t\tthis.userOptions\t\t= {};\n\t\tthis.clearCache();\n\n\t\tconst selected:TomOptions\t= {};\n\t\titerate(this.options,(option:TomOption,key:string)=>{\n\t\t\tif( boundFilter(option,key as string) ){\n\t\t\t\tselected[key] = option;\n\t\t\t}\n\t\t});\n\n\t\tthis.options = this.sifter.items = selected;\n\t\tthis.lastQuery = null;\n\t\tthis.trigger('option_clear');\n\t}\n\n\t/**\n\t * Used by clearOptions() to decide whether or not an option should be removed\n\t * Return true to keep an option, false to remove\n\t *\n\t */\n\tclearFilter(option:TomOption,value:string){\n\t\tif( this.items.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the dom element of the option\n\t * matching the given value.\n\t *\n\t */\n\tgetOption(value:undefined|null|boolean|string|number, create:boolean=false):null|HTMLElement {\n\n\t\tconst hashed = hash_key(value);\n\t\tif( hashed === null ) return null;\n\n\t\tconst option = this.options[hashed];\n\t\tif( option != undefined ){\n\n\t\t\tif( option.$div ){\n\t\t\t\treturn option.$div;\n\t\t\t}\n\n\t\t\tif( create ){\n\t\t\t\treturn this._render('option', option);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the dom element of the next or previous dom element of the same type\n\t * Note: adjacent options may not be adjacent DOM elements (optgroups)\n\t *\n\t */\n\tgetAdjacent( option:null|HTMLElement, direction:number, type:string = 'option' ) : HTMLElement|null{\n\t\tvar self = this, all;\n\n\t\tif( !option ){\n\t\t\treturn null;\n\t\t}\n\n\t\tif( type == 'item' ){\n\t\t\tall\t\t\t= self.controlChildren();\n\t\t}else{\n\t\t\tall\t\t\t= self.dropdown_content.querySelectorAll('[data-selectable]');\n\t\t}\n\n\t\tfor( let i = 0; i < all.length; i++ ){\n\t\t\tif( all[i] != option ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( direction > 0 ){\n\t\t\t\treturn all[i+1] as HTMLElement;\n\t\t\t}\n\n\t\t\treturn all[i-1] as HTMLElement;\n\t\t}\n\t\treturn null;\n\t}\n\n\n\t/**\n\t * Returns the dom element of the item\n\t * matching the given value.\n\t *\n\t */\n\tgetItem(item:string|TomItem|null):null|TomItem {\n\n\t\tif( typeof item == 'object' ){\n\t\t\treturn item;\n\t\t}\n\n\t\tvar value = hash_key(item);\n\t\treturn value !== null\n\t\t\t? this.control.querySelector(`[data-value=\"${addSlashes(value)}\"]`)\n\t\t\t: null;\n\t}\n\n\t/**\n\t * \"Selects\" multiple items at once. Adds them to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItems( values:string|string[], silent?:boolean ):void{\n\t\tvar self = this;\n\n\t\tvar items = Array.isArray(values) ? values : [values];\n\t\titems = items.filter(x => self.items.indexOf(x) === -1);\n\t\tconst last_item = items[items.length - 1];\n\t\titems.forEach(item => {\n\t\t\tself.isPending = (item !== last_item);\n\t\t\tself.addItem(item, silent);\n\t\t});\n\t}\n\n\t/**\n\t * \"Selects\" an item. Adds it to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItem( value:string, silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change','dropdown_close'];\n\n\t\tdebounce_events(this, events, () => {\n\t\t\tvar item, wasFull;\n\t\t\tconst self = this;\n\t\t \tconst inputMode = self.settings.mode;\n\t\t\tconst hashed = hash_key(value);\n\n\t\t\tif( hashed && self.items.indexOf(hashed) !== -1 ){\n\n\t\t\t\tif( inputMode === 'single' ){\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( inputMode === 'single' || !self.settings.duplicates ){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hashed === null || !self.options.hasOwnProperty(hashed)) return;\n\t\t\tif (inputMode === 'single') self.clear(silent);\n\t\t\tif (inputMode === 'multi' && self.isFull()) return;\n\n\t\t\titem = self._render('item', self.options[hashed]);\n\n\t\t\tif( self.control.contains(item) ){ // duplicates\n\t\t\t\titem = item.cloneNode(true) as HTMLElement;\n\t\t\t}\n\n\t\t\twasFull = self.isFull();\n\t\t\tself.items.splice(self.caretPos, 0, hashed);\n\t\t\tself.insertAtCaret(item);\n\n\t\t\tif (self.isSetup) {\n\n\t\t\t\t// update menu / remove the option (if this is not one item being added as part of series)\n\t\t\t\tif( !self.isPending && self.settings.hideSelected ){\n\t\t\t\t\tlet option = self.getOption(hashed);\n\t\t\t\t\tlet next = self.getAdjacent(option, 1);\n\t\t\t\t\tif( next ){\n\t\t\t\t\t\tself.setActiveOption(next);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// refreshOptions after setActiveOption(),\n\t\t\t\t// otherwise setActiveOption() will be called by refreshOptions() with the wrong value\n\t\t\t\tif( !self.isPending && !self.settings.closeAfterSelect ){\n\t\t\t\t\tself.refreshOptions(self.isFocused && inputMode !== 'single');\n\t\t\t\t}\n\n\t\t\t\t// hide the menu if the maximum number of items have been selected or no options are left\n\t\t\t\tif( self.settings.closeAfterSelect != false && self.isFull() ){\n\t\t\t\t\tself.close();\n\t\t\t\t} else if (!self.isPending) {\n\t\t\t\t\tself.positionDropdown();\n\t\t\t\t}\n\n\t\t\t\tself.trigger('item_add', hashed, item);\n\n\t\t\t\tif (!self.isPending) {\n\t\t\t\t\tself.updateOriginalInput({silent: silent});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.isPending || (!wasFull && self.isFull())) {\n\t\t\t\tself.inputState();\n\t\t\t\tself.refreshState();\n\t\t\t}\n\n\t\t});\n\t}\n\n\t/**\n\t * Removes the selected item matching\n\t * the provided value.\n\t *\n\t */\n\tremoveItem( item:string|TomItem|null=null, silent?:boolean ){\n\t\tconst self\t\t= this;\n\t\titem\t\t\t= self.getItem(item);\n\n\t\tif( !item ) return;\n\n\t\tvar i,idx;\n\t\tconst value\t= item.dataset.value;\n\t\ti = nodeIndex(item);\n\n\t\titem.remove();\n\t\tif( item.classList.contains('active') ){\n\t\t\tidx = self.activeItems.indexOf(item);\n\t\t\tself.activeItems.splice(idx, 1);\n\t\t\tremoveClasses(item,'active');\n\t\t}\n\n\t\tself.items.splice(i, 1);\n\t\tself.lastQuery = null;\n\t\tif (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n\t\t\tself.removeOption(value, silent);\n\t\t}\n\n\t\tif (i < self.caretPos) {\n\t\t\tself.setCaret(self.caretPos - 1);\n\t\t}\n\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.positionDropdown();\n\t\tself.trigger('item_remove', value, item);\n\n\t}\n\n\t/**\n\t * Invokes the `create` method provided in the\n\t * TomSelect options that should provide the data\n\t * for the new item, given the user input.\n\t *\n\t * Once this completes, it will be added\n\t * to the item list.\n\t *\n\t */\n\tcreateItem( input:null|string=null, callback:TomCreateCallback = ()=>{} ):boolean{\n\n\t\t// triggerDropdown parameter @deprecated 2.1.1\n\t\tif( arguments.length === 3 ){\n\t\t\tcallback = arguments[2];\n\t\t}\n\t\tif( typeof callback != 'function' ){\n\t\t\tcallback = () => {};\n\t\t}\n\n\t\tvar self = this;\n\t\tvar caret = self.caretPos;\n\t\tvar output;\n\t\tinput = input || self.inputValue();\n\n\t\tif (!self.canCreate(input)) {\n\t\t\tcallback();\n\t\t\treturn false;\n\t\t}\n\n\t\tself.lock();\n\n\t\tvar created = false;\n\t\tvar create = (data?:boolean|TomOption) => {\n\t\t\tself.unlock();\n\n\t\t\tif (!data || typeof data !== 'object') return callback();\n\t\t\tvar value = hash_key(data[self.settings.valueField]);\n\t\t\tif( typeof value !== 'string' ){\n\t\t\t\treturn callback();\n\t\t\t}\n\n\t\t\tself.setTextboxValue();\n\t\t\tself.addOption(data,true);\n\t\t\tself.setCaret(caret);\n\t\t\tself.addItem(value);\n\t\t\tcallback(data);\n\t\t\tcreated = true;\n\t\t};\n\n\t\tif( typeof self.settings.create === 'function' ){\n\t\t\toutput = self.settings.create.call(this, input, create);\n\t\t}else{\n\t\t\toutput = {\n\t\t\t\t[self.settings.labelField]: input,\n\t\t\t\t[self.settings.valueField]: input,\n\t\t\t};\n\t\t}\n\n\t\tif( !created ){\n\t\t\tcreate(output);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Re-renders the selected item lists.\n\t */\n\trefreshItems() {\n\t\tvar self = this;\n\t\tself.lastQuery = null;\n\n\t\tif (self.isSetup) {\n\t\t\tself.addItems(self.items);\n\t\t}\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Updates all state-dependent attributes\n\t * and CSS classes.\n\t */\n\trefreshState() {\n\t\tconst self = this;\n\n\t\tself.refreshValidityState();\n\n\t\tconst isFull\t= self.isFull();\n\t\tconst isLocked\t= self.isLocked;\n\n\t\tself.wrapper.classList.toggle('rtl',self.rtl);\n\n\n\t\tconst wrap_classList = self.wrapper.classList;\n\n\t\twrap_classList.toggle('focus', self.isFocused)\n\t\twrap_classList.toggle('disabled', self.isDisabled)\n\t\twrap_classList.toggle('readonly', self.isReadOnly)\n\t\twrap_classList.toggle('required', self.isRequired)\n\t\twrap_classList.toggle('invalid', !self.isValid)\n\t\twrap_classList.toggle('locked', isLocked)\n\t\twrap_classList.toggle('full', isFull)\n\t\twrap_classList.toggle('input-active', self.isFocused && !self.isInputHidden)\n\t\twrap_classList.toggle('dropdown-active', self.isOpen)\n\t\twrap_classList.toggle('has-options', isEmptyObject(self.options) )\n\t\twrap_classList.toggle('has-items', self.items.length > 0);\n\n\t}\n\n\n\t/**\n\t * Update the `required` attribute of both input and control input.\n\t *\n\t * The `required` property needs to be activated on the control input\n\t * for the error to be displayed at the right place. `required` also\n\t * needs to be temporarily deactivated on the input since the input is\n\t * hidden and can't show errors.\n\t */\n\trefreshValidityState() {\n\t\tvar self = this;\n\n\t\tif( !self.input.validity ){\n\t\t\treturn;\n\t\t}\n\n\t\tself.isValid = self.input.validity.valid;\n\t\tself.isInvalid = !self.isValid;\n\t}\n\n\t/**\n\t * Determines whether or not more items can be added\n\t * to the control without exceeding the user-defined maximum.\n\t *\n\t * @returns {boolean}\n\t */\n\tisFull() {\n\t\treturn this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n\t}\n\n\t/**\n\t * Refreshes the original <select> or <input>\n\t * element to reflect the current state.\n\t *\n\t */\n\tupdateOriginalInput( opts:TomArgObject = {} ){\n\t\tconst self = this;\n\t\tvar option, label;\n\n\t\tconst empty_option = self.input.querySelector('option[value=\"\"]') as HTMLOptionElement;\n\n\t\tif( self.is_select_tag ){\n\n\t\t\tconst selected:HTMLOptionElement[]\t\t= [];\n\t\t\tconst has_selected:number\t\t\t\t= self.input.querySelectorAll('option:checked').length;\n\n\t\t\tfunction AddSelected(option_el:HTMLOptionElement|null, value:string, label:string):HTMLOptionElement{\n\n\t\t\t\tif( !option_el ){\n\t\t\t\t\toption_el = getDom('<option value=\"' + escape_html(value) + '\">' + escape_html(label) + '</option>') as HTMLOptionElement;\n\t\t\t\t}\n\n\t\t\t\t// don't move empty option from top of list\n\t\t\t\t// fixes bug in firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1725293\n\t\t\t\tif( option_el != empty_option ){\n\t\t\t\t\tself.input.append(option_el);\n\t\t\t\t}\n\n\t\t\t\tselected.push(option_el);\n\n\t\t\t\t// marking empty option as selected can break validation\n\t\t\t\t// fixes https://github.com/orchidjs/tom-select/issues/303\n\t\t\t\tif( option_el != empty_option || has_selected > 0 ){\n\t\t\t\t\toption_el.selected = true;\n\t\t\t\t}\n\n\t\t\t\treturn option_el;\n\t\t\t}\n\n\t\t\t// unselect all selected options\n\t\t\tself.input.querySelectorAll('option:checked').forEach((option_el:Element) => {\n\t\t\t\t(<HTMLOptionElement>option_el).selected = false;\n\t\t\t});\n\n\n\t\t\t// nothing selected?\n\t\t\tif( self.items.length == 0 && self.settings.mode == 'single' ){\n\n\t\t\t\tAddSelected(empty_option, \"\", \"\");\n\n\t\t\t// order selected <option> tags for values in self.items\n\t\t\t}else{\n\n\t\t\t\tself.items.forEach((value)=>{\n\t\t\t\t\toption\t\t\t= self.options[value]!;\n\t\t\t\t\tlabel\t\t\t= option[self.settings.labelField] || '';\n\n\t\t\t\t\tif( selected.includes(option.$option) ){\n\t\t\t\t\t\tconst reuse_opt = self.input.querySelector(`option[value=\"${addSlashes(value)}\"]:not(:checked)`) as HTMLOptionElement;\n\t\t\t\t\t\tAddSelected(reuse_opt, value, label);\n\t\t\t\t\t}else{\n\t\t\t\t\t\toption.$option\t= AddSelected(option.$option, value, label);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t} else {\n\t\t\tself.input.value = self.getValue() as string;\n\t\t}\n\n\t\tif (self.isSetup) {\n\t\t\tif (!opts.silent) {\n\t\t\t\tself.trigger('change', self.getValue() );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shows the autocomplete dropdown containing\n\t * the available options.\n\t */\n\topen() {\n\t\tvar self = this;\n\n\t\tif (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\n\t\tself.isOpen = true;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'true'});\n\t\tself.refreshState();\n\t\tapplyCSS(self.dropdown,{visibility: 'hidden', display: 'block'});\n\t\tself.positionDropdown();\n\t\tapplyCSS(self.dropdown,{visibility: 'visible', display: 'block'});\n\t\tself.focus();\n\t\tself.trigger('dropdown_open', self.dropdown);\n\t}\n\n\t/**\n\t * Closes the autocomplete dropdown menu.\n\t */\n\tclose(setTextboxValue=true) {\n\t\tvar self = this;\n\t\tvar trigger = self.isOpen;\n\n\t\tif( setTextboxValue ){\n\n\t\t\t// before blur() to prevent form onchange event\n\t\t\tself.setTextboxValue();\n\n\t\t\tif (self.settings.mode === 'single' && self.items.length) {\n\t\t\t\tself.inputState();\n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'false'});\n\t\tapplyCSS(self.dropdown,{display: 'none'});\n\t\tif( self.settings.hideSelected ){\n\t\t\tself.clearActiveOption();\n\t\t}\n\t\tself.refreshState();\n\n\t\tif (trigger) self.trigger('dropdown_close', self.dropdown);\n\t}\n\n\t/**\n\t * Calculates and applies the appropriate\n\t * position of the dropdown if dropdownParent = 'body'.\n\t * Otherwise, position is determined by css\n\t */\n\tpositionDropdown(){\n\n\t\tif( this.settings.dropdownParent !== 'body' ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar context\t\t\t= this.control;\n\t\tvar rect\t\t\t= context.getBoundingClientRect();\n\t\tvar top\t\t\t\t= context.offsetHeight + rect.top + window.scrollY;\n\t\tvar left\t\t\t= rect.left + window.scrollX;\n\n\n\t\tapplyCSS(this.dropdown,{\n\t\t\twidth : rect.width + 'px',\n\t\t\ttop : top + 'px',\n\t\t\tleft : left + 'px'\n\t\t});\n\n\t}\n\n\t/**\n\t * Resets / clears all selected items\n\t * from the control.\n\t *\n\t */\n\tclear(silent?:boolean) {\n\t\tvar self = this;\n\n\t\tif (!self.items.length) return;\n\n\t\tvar items = self.controlChildren();\n\t\titerate(items,(item:TomItem)=>{\n\t\t\tself.removeItem(item,true);\n\t\t});\n\n\t\tself.inputState();\n\t\tif( !silent ) self.updateOriginalInput();\n\t\tself.trigger('clear');\n\t}\n\n\t/**\n\t * A helper method for inserting an element\n\t * at the current caret position.\n\t *\n\t */\n\tinsertAtCaret(el:HTMLElement) {\n\t\tconst self\t\t= this;\n\t\tconst caret\t\t= self.caretPos;\n\t\tconst target\t= self.control;\n\n\t\ttarget.insertBefore(el, target.children[caret] || null);\n\t\tself.setCaret(caret + 1);\n\t}\n\n\t/**\n\t * Removes the current selected item(s).\n\t *\n\t */\n\tdeleteSelection(e:KeyboardEvent):boolean {\n\t\tvar direction, selection, caret, tail;\n\t\tvar self = this;\n\n\t\tdirection = (e && e.keyCode === constants.KEY_BACKSPACE) ? -1 : 1;\n\t\tselection = getSelection(self.control_input);\n\n\n\t\t// determine items that will be removed\n\t\tconst rm_items:TomItem[]\t= [];\n\n\t\tif (self.activeItems.length) {\n\n\t\t\ttail = getTail(self.activeItems, direction);\n\t\t\tcaret = nodeIndex(tail);\n\n\t\t\tif (direction > 0) { caret++; }\n\n\t\t\titerate(self.activeItems, (item:TomItem) => rm_items.push(item) );\n\n\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n\t\t\tconst items = self.controlChildren();\n\t\t\tlet rm_item;\n\t\t\tif( direction < 0 && selection.start === 0 && selection.length === 0 ){\n\t\t\t\trm_item = items[self.caretPos - 1];\n\n\t\t\t}else if( direction > 0 && selection.start === self.inputValue().length ){\n\t\t\t\trm_item = items[self.caretPos];\n\t\t\t}\n\n\t\t\tif( rm_item !== undefined ){\n\t\t\t\trm_items.push( rm_item );\n\t\t\t}\n\t\t}\n\n\t\tif( !self.shouldDelete(rm_items,e) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tpreventDefault(e,true);\n\n\t\t// perform removal\n\t\tif (typeof caret !== 'undefined') {\n\t\t\tself.setCaret(caret);\n\t\t}\n\n\t\twhile( rm_items.length ){\n\t\t\tself.removeItem(rm_items.pop());\n\t\t}\n\n\t\tself.inputState();\n\t\tself.positionDropdown();\n\t\tself.refreshOptions(false);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return true if the items should be deleted\n\t */\n\tshouldDelete(items:TomItem[],evt:MouseEvent|KeyboardEvent){\n\n\t\tconst values = items.map(item => item.dataset.value);\n\n\t\t// allow the callback to abort\n\t\tif( !values.length || (typeof this.settings.onDelete === 'function' && this.settings.onDelete(values,evt) === false) ){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Selects the previous / next item (depending on the `direction` argument).\n\t *\n\t * > 0 - right\n\t * < 0 - left\n\t *\n\t */\n\tadvanceSelection(direction:number, e?:MouseEvent|KeyboardEvent) {\n\t\tvar last_active, adjacent, self = this;\n\n\t\tif (self.rtl) direction *= -1;\n\t\tif( self.inputValue().length ) return;\n\n\n\t\t// add or remove to active items\n\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) || isKeyDown('shiftKey',e) ){\n\n\t\t\tlast_active\t\t\t= self.getLastActive(direction);\n\t\t\tif( last_active ){\n\n\t\t\t\tif( !last_active.classList.contains('active') ){\n\t\t\t\t\tadjacent\t\t\t= last_active;\n\t\t\t\t}else{\n\t\t\t\t\tadjacent\t\t\t= self.getAdjacent(last_active,direction,'item');\n\t\t\t\t}\n\n\t\t\t// if no active item, get items adjacent to the control input\n\t\t\t}else if( direction > 0 ){\n\t\t\t\tadjacent\t\t\t= self.control_input.nextElementSibling;\n\t\t\t}else{\n\t\t\t\tadjacent\t\t\t= self.control_input.previousElementSibling;\n\t\t\t}\n\n\n\t\t\tif( adjacent ){\n\t\t\t\tif( adjacent.classList.contains('active') ){\n\t\t\t\t\tself.removeActiveItem(last_active);\n\t\t\t\t}\n\t\t\t\tself.setActiveItemClass(adjacent); // mark as last_active !! after removeActiveItem() on last_active\n\t\t\t}\n\n\t\t// move caret to the left or right\n\t\t}else{\n\t\t\tself.moveCaret(direction);\n\t\t}\n\t}\n\n\tmoveCaret(direction:number){}\n\n\t/**\n\t * Get the last active item\n\t *\n\t */\n\tgetLastActive(direction?:number){\n\n\t\tlet last_active = this.control.querySelector('.last-active');\n\t\tif( last_active ){\n\t\t\treturn last_active;\n\t\t}\n\n\n\t\tvar result = this.control.querySelectorAll('.active');\n\t\tif( result ){\n\t\t\treturn getTail(result,direction);\n\t\t}\n\t}\n\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tsetCaret(new_pos:number) {\n\t\tthis.caretPos = this.items.length;\n\t}\n\n\t/**\n\t * Return list of item dom elements\n\t *\n\t */\n\tcontrolChildren():TomItem[]{\n\t\treturn Array.from( this.control.querySelectorAll('[data-ts-item]') ) as TomItem[];\n\t}\n\n\t/**\n\t * Disables user input on the control. Used while\n\t * items are being asynchronously created.\n\t */\n\tlock() {\n\t\tthis.setLocked(true);\n\t}\n\n\t/**\n\t * Re-enables user input on the control.\n\t */\n\tunlock() {\n\t\tthis.setLocked(false);\n\t}\n\n\t/**\n\t * Disable or enable user input on the control\n\t */\n\tsetLocked( lock:boolean = this.isReadOnly || this.isDisabled ){\n\t\tthis.isLocked = lock;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Disables user input on the control completely.\n\t * While disabled, it cannot receive focus.\n\t */\n\tdisable() {\n\t\tthis.setDisabled(true);\n\t\tthis.close();\n\t}\n\n\t/**\n\t * Enables the control so that it can respond\n\t * to focus and user input.\n\t */\n\tenable() {\n\t\tthis.setDisabled(false);\n\t}\n\n\tsetDisabled(disabled:boolean){\n\t\tthis.focus_node.tabIndex\t\t= disabled ? -1 : this.tabIndex;\n\t\tthis.isDisabled\t\t\t\t\t= disabled;\n\t\tthis.input.disabled\t\t\t\t= disabled;\n\t\tthis.control_input.disabled\t\t= disabled;\n\t\tthis.setLocked();\n\t}\n\n\tsetReadOnly(isReadOnly:boolean){\n\t\tthis.isReadOnly\t\t\t\t\t= isReadOnly;\n\t\tthis.input.readOnly\t\t\t\t= isReadOnly;\n\t\tthis.control_input.readOnly\t\t= isReadOnly;\n\t\tthis.setLocked();\n\t}\n\n\t/**\n\t * Completely destroys the control and\n\t * unbinds all event listeners so that it can\n\t * be garbage collected.\n\t */\n\tdestroy() {\n\t\tvar self = this;\n\t\tvar revertSettings = self.revertSettings;\n\n\t\tself.trigger('destroy');\n\t\tself.off();\n\t\tself.wrapper.remove();\n\t\tself.dropdown.remove();\n\n\t\tself.input.innerHTML = revertSettings.innerHTML;\n\t\tself.input.tabIndex = revertSettings.tabIndex;\n\n\t\tremoveClasses(self.input,'tomselected','ts-hidden-accessible');\n\n\t\tself._destroy();\n\n\t\tdelete self.input.tomselect;\n\t}\n\n\t/**\n\t * A helper method for rendering \"item\" and\n\t * \"option\" templates, given the data.\n\t *\n\t */\n\trender( templateName:TomTemplateNames, data?:any ):null|HTMLElement{\n\t\tvar id, html;\n\t\tconst self = this;\n\n\t\tif( typeof this.settings.render[templateName] !== 'function' ){\n\t\t\treturn null;\n\t\t}\n\n\t\t// render markup\n\t\thtml = self.settings.render[templateName].call(this, data, escape_html);\n\n\t\tif( !html ){\n\t\t\treturn null;\n\t\t}\n\n\t\thtml = getDom( html );\n\n\t\t// add mandatory attributes\n\t\tif (templateName === 'option' || templateName === 'option_create') {\n\n\t\t\tif( data[self.settings.disabledField] ){\n\t\t\t\tsetAttr(html,{'aria-disabled':'true'});\n\t\t\t}else{\n\t\t\t\tsetAttr(html,{'data-selectable': ''});\n\t\t\t}\n\n\t\t}else if (templateName === 'optgroup') {\n\t\t\tid = data.group[self.settings.optgroupValueField];\n\t\t\tsetAttr(html,{'data-group': id});\n\t\t\tif(data.group[self.settings.disabledField]) {\n\t\t\t\tsetAttr(html,{'data-disabled': ''});\n\t\t\t}\n\t\t}\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tconst value\t= get_hash(data[self.settings.valueField]);\n\t\t\tsetAttr(html,{'data-value': value });\n\n\n\t\t\t// make sure we have some classes if a template is overwritten\n\t\t\tif( templateName === 'item' ){\n\t\t\t\taddClasses(html,self.settings.itemClass);\n\t\t\t\tsetAttr(html,{'data-ts-item':''});\n\t\t\t}else{\n\t\t\t\taddClasses(html,self.settings.optionClass);\n\t\t\t\tsetAttr(html,{\n\t\t\t\t\trole:'option',\n\t\t\t\t\tid:data.$id\n\t\t\t\t});\n\n\t\t\t\t// update cache\n\t\t\t\tdata.$div = html;\n\t\t\t\tself.options[value] = data;\n\t\t\t}\n\n\n\t\t}\n\n\t\treturn html;\n\n\t}\n\n\n\t/**\n\t * Type guarded rendering\n\t *\n\t */\n\t_render( templateName:TomTemplateNames, data?:any ):HTMLElement{\n\t\tconst html = this.render(templateName, data);\n\n\t\tif( html == null ){\n\t\t\tthrow 'HTMLElement expected';\n\t\t}\n\t\treturn html;\n\t}\n\n\n\t/**\n\t * Clears the render cache for a template. If\n\t * no template is given, clears all render\n\t * caches.\n\t *\n\t */\n\tclearCache():void{\n\n\t\titerate(this.options, (option:TomOption)=>{\n\t\t\tif( option.$div ){\n\t\t\t\toption.$div.remove();\n\t\t\t\tdelete option.$div;\n\t\t\t}\n\t\t});\n\n\t}\n\n\t/**\n\t * Removes a value from item and option caches\n\t *\n\t */\n\tuncacheValue(value:string){\n\n\t\tconst option_el\t\t\t= this.getOption(value);\n\t\tif( option_el ) option_el.remove();\n\n\t}\n\n\t/**\n\t * Determines whether or not to display the\n\t * create item prompt, given a user input.\n\t *\n\t */\n\tcanCreate( input:string ):boolean {\n\t\treturn this.settings.create && (input.length > 0) && (this.settings.createFilter as TomCreateFilter ).call(this, input);\n\t}\n\n\n\t/**\n\t * Wraps this.`method` so that `new_fn` can be invoked 'before', 'after', or 'instead' of the original method\n\t *\n\t * this.hook('instead','onKeyDown',function( arg1, arg2 ...){\n\t *\n\t * });\n\t */\n\thook( when:string, method:string, new_fn:any ){\n\t\tvar self = this;\n\t\tvar orig_method = self[method];\n\n\n\t\tself[method] = function(){\n\t\t\tvar result, result_new;\n\n\t\t\tif( when === 'after' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\tresult_new = new_fn.apply(self, arguments );\n\n\t\t\tif( when === 'instead' ){\n\t\t\t\treturn result_new;\n\t\t\t}\n\n\t\t\tif( when === 'before' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t}\n\n};\n","/**\n * Plugin: \"change_listener\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { addEvent } from '../../utils';\n\nexport default function(this:TomSelect) {\n\taddEvent(this.input,'change',()=>{\n\t\tthis.sync();\n\t});\n};\n","/**\n * Plugin: \"checkbox_options\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { preventDefault, hash_key } from '../../utils';\nimport { getDom } from '../../vanilla';\nimport { CBOptions } from './types';\n\n\nexport default function(this:TomSelect, userOptions:CBOptions) {\n\tvar self = this;\n\tvar orig_onOptionSelect = self.onOptionSelect;\n\n\tself.settings.hideSelected = false;\n\n\tconst cbOptions : CBOptions = Object.assign({\n\t\t// so that the user may add different ones as well\n\t\tclassName : \"tomselect-checkbox\",\n\n\t\t// the following default to the historic plugin's values\n\t\tcheckedClassNames : undefined,\n\t\tuncheckedClassNames : undefined,\n\t}, userOptions);\n\n\n\tvar UpdateChecked = function(checkbox:HTMLInputElement, toCheck : boolean) {\n\t\tif( toCheck ){\n\t\t\tcheckbox.checked = true;\n\t\t\tif (cbOptions.uncheckedClassNames) {\n\t\t\t\tcheckbox.classList.remove(...cbOptions.uncheckedClassNames);\n\t\t\t}\n\t\t\tif (cbOptions.checkedClassNames) {\n\t\t\t\tcheckbox.classList.add(...cbOptions.checkedClassNames);\n\t\t\t}\n\t\t}else{\n\t\t\tcheckbox.checked = false;\n\t\t\tif (cbOptions.checkedClassNames) {\n\t\t\t\tcheckbox.classList.remove(...cbOptions.checkedClassNames);\n\t\t\t}\n\t\t\tif (cbOptions.uncheckedClassNames) {\n\t\t\t\tcheckbox.classList.add(...cbOptions.uncheckedClassNames);\n\t\t\t}\n\t\t}\n\t}\n\n\t// update the checkbox for an option\n\tvar UpdateCheckbox = function(option:HTMLElement){\n\t\tsetTimeout(()=>{\n\t\t\tvar checkbox = option.querySelector('input.' + cbOptions.className);\n\t\t\tif( checkbox instanceof HTMLInputElement ){\n\t\t\t\tUpdateChecked(checkbox, option.classList.contains('selected'));\n\t\t\t}\n\t\t},1);\n\t};\n\n\t// add checkbox to option template\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_option = self.settings.render.option;\n\n\t\tself.settings.render.option = (data, escape_html) => {\n\t\t\tvar rendered = getDom(orig_render_option.call(self, data, escape_html));\n\t\t\tvar checkbox = document.createElement('input');\n\t\t\tif (cbOptions.className) {\n\t\t\t\tcheckbox.classList.add(cbOptions.className);\n\t\t\t}\n\t\t\tcheckbox.addEventListener('click',function(evt){\n\t\t\t\tpreventDefault(evt);\n\t\t\t});\n\n\t\t\tcheckbox.type = 'checkbox';\n\t\t\tconst hashed = hash_key(data[self.settings.valueField]);\n\n\t\t\tUpdateChecked(checkbox, !!(hashed && self.items.indexOf(hashed) > -1) );\n\n\t\t\trendered.prepend(checkbox);\n\t\t\treturn rendered;\n\t\t};\n\t});\n\n\t// uncheck when item removed\n\tself.on('item_remove',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\toption.classList.remove('selected'); // selected class won't be removed yet\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\t// check when item added\n\tself.on('item_add',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\n\t// remove items when selected option is clicked\n\tself.hook('instead','onOptionSelect',( evt:KeyboardEvent, option:HTMLElement )=>{\n\n\t\tif( option.classList.contains('selected') ){\n\t\t\toption.classList.remove('selected')\n\t\t\tself.removeItem(option.dataset.value);\n\t\t\tself.refreshOptions();\n\t\t\tpreventDefault(evt,true);\n\t\t\treturn;\n }\n\n\t\torig_onOptionSelect.call(self, evt, option);\n\n\t\tUpdateCheckbox(option);\n\t});\n\n};\n","/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { CBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:CBOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\tclassName: 'clear-button',\n\t\ttitle: 'Clear All',\n\t\thtml: (data:CBOptions) => {\n\t\t\treturn `<div class=\"${data.className}\" title=\"${data.title}\">&#10799;</div>`;\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar button = getDom(options.html(options));\n\t\tbutton.addEventListener('click',(evt)=>{\n\n\t\t\tif( self.isLocked ) return;\n\n\t\t\tself.clear();\n\n\t\t\tif( self.settings.mode === 'single' && self.settings.allowEmptyOption ){\n\t\t\t\tself.addItem('');\n\t\t\t}\n\n\t\t\tevt.preventDefault();\n\t\t\tevt.stopPropagation();\n\t\t});\n\t\tself.control.appendChild(button);\n\t});\n\n};\n","/**\n * Plugin: \"drag_drop\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { TomOption, TomItem } from '../../types/index';\nimport { escape_html, preventDefault, addEvent } from '../../utils';\nimport { getDom, setAttr } from '../../vanilla';\n\n\nconst insertAfter = (referenceNode:Element, newNode:Element) => {\n\treferenceNode.parentNode?.insertBefore(newNode, referenceNode.nextSibling);\n}\n\nconst insertBefore = (referenceNode:Element, newNode:Element) => {\n\treferenceNode.parentNode?.insertBefore(newNode, referenceNode);\n}\n\nconst isBefore = (referenceNode:Element|undefined|null, newNode:Element|undefined|null) =>{\n\t\n\tdo{\n\t\tnewNode = newNode?.previousElementSibling;\n\n\t\tif( referenceNode == newNode ){\n\t\t\treturn true;\n\t\t}\n\n\t}while( newNode && newNode.previousElementSibling );\n\n\treturn false;\n}\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tif (self.settings.mode !== 'multi') return;\n\n\tvar orig_lock\t\t= self.lock;\n\tvar orig_unlock\t\t= self.unlock;\n\tlet sortable = true;\n\t\tlet drag_item:TomItem|undefined;\n\n\n\t/**\n\t * Add draggable attribute to item\n\t */\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\t\t\tconst item = getDom(orig_render_item.call(self, data, escape)) as TomItem;\n\t\t\tsetAttr(item,{'draggable':'true'});\n\n\n\t\t\t// prevent doc_mousedown (see tom-select.ts)\n\t\t\tconst mousedown = (evt:Event) => {\n\t\t\t\tif( !sortable ) preventDefault(evt);\n\t\t\t\tevt.stopPropagation();\n\t\t\t}\n\n\t\t\tconst dragStart = (evt:Event) => {\n\t\t\t\tdrag_item = item;\n\t\t\t\t\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\titem.classList.add('ts-dragging');\n\t\t\t\t}, 0);\n\t\t\t\t\n\t\t\t}\n\n\t\t\tconst dragOver = (evt:Event) =>{\n\t\t\t\tevt.preventDefault();\n\t\t\t\titem.classList.add('ts-drag-over');\n\t\t\t\tmoveitem(item,drag_item);\n\t\t\t}\n\n\t\t\tconst dragLeave = () => {\n\t\t\t\titem.classList.remove('ts-drag-over');\n\t\t\t}\n\n\t\t\tconst moveitem = (targetitem:TomItem, dragitem:TomItem|undefined) => {\n\t\t\t\tif( dragitem === undefined ) return;\n\t\t\t\t\n\t\t\t\tif( isBefore(dragitem,item) ){\n\t\t\t\t\tinsertAfter(targetitem,dragitem);\n\t\t\t\t}else{\n\t\t\t\t\tinsertBefore(targetitem,dragitem);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst dragend = () => {\n\t\t\t\tdocument.querySelectorAll('.ts-drag-over').forEach(el=> el.classList.remove('ts-drag-over'));\n\t\t\t\tdrag_item?.classList.remove('ts-dragging');\n\t\t\t\tdrag_item = undefined;\n\n\t\t\t\tvar values:string[] = [];\n\t\t\t\tself.control.querySelectorAll(`[data-value]`).forEach((el:Element)=> {\n\t\t\t\t\tif( (<HTMLOptionElement>el).dataset.value ){\n\t\t\t\t\t\tlet value = (<HTMLOptionElement>el).dataset.value;\n\t\t\t\t\t\tif( value ){\n\t\t\t\t\t\t\tvalues.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tself.setValue(values);\n\t\t\t}\t\n\n\n\t\t\taddEvent(item,'mousedown', mousedown);\n\t\t\taddEvent(item,'dragstart', dragStart);\n\t\t\taddEvent(item,'dragenter', dragOver)\n\t\t\taddEvent(item,'dragover', dragOver);\n\t\t\taddEvent(item,'dragleave', dragLeave);\n\t\t\taddEvent(item,'dragend', dragend);\n\t\t\t\t\n\t\t\treturn item;\n\t\t}\t\n\t});\n\n\n\n\tself.hook('instead','lock',()=>{\n\t\tsortable = false;\n\t\treturn orig_lock.call(self);\n\t});\n\n\tself.hook('instead','unlock',()=>{\n\t\tsortable = true;\n\t\treturn orig_unlock.call(self);\n\t});\n\n};\n","/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { preventDefault } from '../../utils';\nimport { DHOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:DHOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttitle : 'Untitled',\n\t\theaderClass : 'dropdown-header',\n\t\ttitleRowClass : 'dropdown-header-title',\n\t\tlabelClass : 'dropdown-header-label',\n\t\tcloseClass : 'dropdown-header-close',\n\n\t\thtml: (data:DHOptions) => {\n\t\t\treturn (\n\t\t\t\t'<div class=\"' + data.headerClass + '\">' +\n\t\t\t\t\t'<div class=\"' + data.titleRowClass + '\">' +\n\t\t\t\t\t\t'<span class=\"' + data.labelClass + '\">' + data.title + '</span>' +\n\t\t\t\t\t\t'<a class=\"' + data.closeClass + '\">&times;</a>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t'</div>'\n\t\t\t);\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar header = getDom(options.html(options));\n\n\t\tvar close_link = header.querySelector('.'+options.closeClass);\n\t\tif( close_link ){\n\t\t\tclose_link.addEventListener('click',(evt)=>{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\tself.close();\n\t\t\t});\n\t\t}\n\n\t\tself.dropdown.insertBefore(header, self.dropdown.firstChild);\n\t});\n\n};\n","/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { nodeIndex, removeClasses } from '../../vanilla';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tself.hook('instead','setCaret',(new_pos:number) => {\n\n\t\tif( self.settings.mode === 'single' || !self.control.contains(self.control_input) ) {\n\t\t\tnew_pos = self.items.length;\n\t\t} else {\n\t\t\tnew_pos = Math.max(0, Math.min(self.items.length, new_pos));\n\n\t\t\tif( new_pos != self.caretPos && !self.isPending ){\n\n\t\t\t\tself.controlChildren().forEach((child,j) => {\n\t\t\t\t\tif( j < new_pos ){\n\t\t\t\t\t\tself.control_input.insertAdjacentElement('beforebegin', child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.control.appendChild( child );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tself.caretPos = new_pos;\n\t});\n\n\tself.hook('instead','moveCaret',(direction:number) => {\n\n\t\tif( !self.isFocused ) return;\n\n\t\t// move caret before or after selected items\n\t\tconst last_active\t\t= self.getLastActive(direction);\n\t\tif( last_active ){\n\t\t\tconst idx = nodeIndex(last_active);\n\t\t\tself.setCaret(direction > 0 ? idx + 1: idx);\n\t\t\tself.setActiveItem();\n\t\t\tremoveClasses(last_active as HTMLElement,'last-active');\n\n\t\t// move caret left or right of current position\n\t\t}else{\n\t\t\tself.setCaret(self.caretPos + direction);\n\n\t\t}\n\n\t});\n\n};\n","/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { getDom, addClasses } from '../../vanilla';\nimport { addEvent, preventDefault } from '../../utils';\n\n\nexport default function(this:TomSelect) {\n\tconst self = this;\n\n\tself.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown\n\n\tself.hook('before','setup',()=>{\n\t\tself.focus_node\t\t= self.control;\n\n\t\taddClasses( self.control_input, 'dropdown-input');\n\n\t \tconst div = getDom('<div class=\"dropdown-input-wrap\">');\n\t\tdiv.append(self.control_input);\n\t\tself.dropdown.insertBefore(div, self.dropdown.firstChild);\n\n\t\t// set a placeholder in the select control\n\t\tconst placeholder = getDom('<input class=\"items-placeholder\" tabindex=\"-1\" />') as HTMLInputElement;\n\t\tplaceholder.placeholder = self.settings.placeholder ||'';\n\t\tself.control.append(placeholder);\n\n\t});\n\n\n\tself.on('initialize',()=>{\n\n\t\t// set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input\n\t\tself.control_input.addEventListener('keydown',(evt:KeyboardEvent) =>{\n\t\t//addEvent(self.control_input,'keydown' as const,(evt:KeyboardEvent) =>{\n\t\t\tswitch( evt.keyCode ){\n\t\t\t\tcase constants.KEY_ESC:\n\t\t\t\t\tif (self.isOpen) {\n\t\t\t\t\t\tpreventDefault(evt,true);\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\t\t\t\tcase constants.KEY_TAB:\n\t\t\t\t\tself.focus_node.tabIndex = -1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn self.onKeyDown.call(self,evt);\n\t\t});\n\n\t\tself.on('blur',()=>{\n\t\t\tself.focus_node.tabIndex = self.isDisabled ? -1 : self.tabIndex;\n\t\t});\n\n\n\t\t// give the control_input focus when the dropdown is open\n\t\tself.on('dropdown_open',() =>{\n\t\t\tself.control_input.focus();\n\t\t});\n\n\t\t// prevent onBlur from closing when focus is on the control_input\n\t\tconst orig_onBlur = self.onBlur;\n\t\tself.hook('instead','onBlur',(evt?:FocusEvent)=>{\n\t\t\tif( evt && evt.relatedTarget == self.control_input ) return;\n\t\t\treturn orig_onBlur.call(self);\n\t\t});\n\n\t\taddEvent(self.control_input,'blur', () => self.onBlur() );\n\n\t\t// return focus to control to allow further keyboard input\n\t\tself.hook('before','close',() =>{\n\n\t\t\tif( !self.isOpen ) return;\n\t\t\tself.focus_node.focus({preventScroll: true});\n\t\t});\n\n\t});\n\n};\n","/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { addEvent } from '../../utils';\n\nexport default function(this:TomSelect) {\n\tvar self\t\t\t\t\t= this;\n\n\tself.on('initialize',()=>{\n\n\n\t\tvar test_input\t\t\t\t= document.createElement('span');\n\t\tvar control\t\t\t\t\t= self.control_input;\n\t\ttest_input.style.cssText\t= 'position:absolute; top:-99999px; left:-99999px; width:auto; padding:0; white-space:pre; ';\n\n\t\tself.wrapper.appendChild(test_input);\n\n\n\t\tvar transfer_styles\t\t\t= [ 'letterSpacing', 'fontSize', 'fontFamily', 'fontWeight', 'textTransform' ];\n\n\t\tfor( const style_name of transfer_styles ){\n\t\t\t// @ts-ignore TS7015 https://stackoverflow.com/a/50506154/697576\n\t\t\ttest_input.style[style_name] = control.style[style_name];\n\t\t}\n\n\n\t\t/**\n\t\t * Set the control width\n\t\t *\n\t\t */\n\t\tvar resize = ()=>{\n\t\t\ttest_input.textContent\t= control.value;\n\t\t\tcontrol.style.width\t\t= test_input.clientWidth+'px';\n\t\t};\n\n\t\tresize();\n\t\tself.on('update item_add item_remove',resize);\n\t\taddEvent(control,'input', resize );\n\t\taddEvent(control,'keyup', resize );\n\t\taddEvent(control,'blur', resize );\n\t\taddEvent(control,'update', resize );\n\t});\n\n};\n","/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_deleteSelection = self.deleteSelection;\n\n\tthis.hook('instead','deleteSelection',(evt:KeyboardEvent) => {\n\n\t\tif( self.activeItems.length ){\n\t\t\treturn orig_deleteSelection.call(self, evt);\n\t\t}\n\n\t\treturn false;\n\t});\n\n};\n","/**\n * Plugin: \"no_active_items\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tthis.hook('instead','setActiveItem',() => {});\n\tthis.hook('instead','selectAll',() => {});\n};\n","/**\n * Plugin: \"optgroup_columns\" (Tom Select.js)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { parentMatch, nodeIndex } from '../../vanilla';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\tvar orig_keydown = self.onKeyDown;\n\n\tself.hook('instead','onKeyDown',(evt:KeyboardEvent)=>{\n\t\tvar index, option, options, optgroup;\n\n\t\tif( !self.isOpen || !(evt.keyCode === constants.KEY_LEFT || evt.keyCode === constants.KEY_RIGHT)) {\n\t\t\treturn orig_keydown.call(self,evt);\n\t\t}\n\n\t\tself.ignoreHover\t= true;\n\t\toptgroup\t\t\t= parentMatch(self.activeOption,'[data-group]');\n\t\tindex\t\t\t\t= nodeIndex(self.activeOption,'[data-selectable]');\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( evt.keyCode === constants.KEY_LEFT ){\n\t\t\toptgroup = optgroup.previousSibling;\n\t\t} else {\n\t\t\toptgroup = optgroup.nextSibling;\n\t\t}\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\toptions\t\t\t\t= (<HTMLOptGroupElement>optgroup).querySelectorAll('[data-selectable]');\n\t\toption\t\t\t\t= options[ Math.min(options.length - 1, index) ] as HTMLElement;\n\n\t\tif( option ){\n\t\t\tself.setActiveOption(option);\n\t\t}\n\n\t});\n\n};\n","/**\n * Plugin: \"remove_button\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { escape_html, preventDefault, addEvent } from '../../utils';\nimport { TomOption, TomItem } from '../../types/index';\nimport { RBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:RBOptions) {\n\n\tconst options = Object.assign({\n\t\t\tlabel : '&times;',\n\t\t\ttitle : 'Remove',\n\t\t\tclassName : 'remove',\n\t\t\tappend : true\n\t\t}, userOptions);\n\n\n\t//options.className = 'remove-single';\n\tvar self\t\t\t= this;\n\n\t// override the render method to add remove button to each item\n\tif( !options.append ){\n\t\treturn;\n\t}\n\n\tvar html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\n\t\t\tvar item = getDom(orig_render_item.call(self, data, escape)) as TomItem;\n\n\t\t\tvar close_button = getDom(html);\n\t\t\titem.appendChild(close_button);\n\n\t\t\taddEvent(close_button,'mousedown',(evt) => {\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t});\n\n\t\t\taddEvent(close_button,'click',(evt) => {\n\n\t\t\t\tif( self.isLocked ) return;\n\n\t\t\t\t// propagating will trigger the dropdown to show for single mode\n\t\t\t\tpreventDefault(evt,true);\n\n\t\t\t\tif( self.isLocked ) return;\n\t\t\t\tif( !self.shouldDelete([item],evt as MouseEvent) ) return;\n\n\t\t\t\tself.removeItem(item);\n\t\t\t\tself.refreshOptions(false);\n\t\t\t\tself.inputState();\n\t\t\t});\n\n\t\t\treturn item;\n\t\t};\n\n\t});\n\n\n};\n","/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\n\ntype TPluginOptions = {\n\ttext?:(option:TomOption)=>string,\n};\n\nexport default function(this:TomSelect, userOptions:TPluginOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttext: (option:TomOption) => {\n\t\t\treturn option[self.settings.labelField];\n\t\t}\n\t},userOptions);\n\n\tself.on('item_remove',function(value:string){\n\t\tif( !self.isFocused ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.control_input.value.trim() === '' ){\n\t\t\tvar option = self.options[value];\n\t\t\tif( option ){\n\t\t\t\tself.setTextboxValue(options.text.call(self, option));\n\t\t\t}\n\t\t}\n\t});\n\n};\n","/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\nimport { addClasses } from '../../vanilla';\n\nexport default function(this:TomSelect) {\n\tconst self\t\t\t\t\t\t\t= this;\n\tconst orig_canLoad\t\t\t\t\t= self.canLoad;\n\tconst orig_clearActiveOption\t\t= self.clearActiveOption;\n\tconst orig_loadCallback\t\t\t\t= self.loadCallback;\n\n\tvar pagination:{[key:string]:any}\t= {};\n\tvar dropdown_content:HTMLElement;\n\tvar loading_more\t\t\t\t\t= false;\n\tvar load_more_opt:HTMLElement;\n\tvar default_values: string[]\t\t= [];\n\n\tif( !self.settings.shouldLoadMore ){\n\n\t\t// return true if additional results should be loaded\n\t\tself.settings.shouldLoadMore = ():boolean=>{\n\n\t\t\tconst scroll_percent = dropdown_content.clientHeight / (dropdown_content.scrollHeight - dropdown_content.scrollTop);\n\t\t\tif( scroll_percent > 0.9 ){\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif( self.activeOption ){\n\t\t\t\tvar selectable\t= self.selectable();\n\t\t\t\tvar index\t\t= Array.from(selectable).indexOf(self.activeOption);\n\t\t\t\tif( index >= (selectable.length-2) ){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\n\tif( !self.settings.firstUrl ){\n\t\tthrow 'virtual_scroll plugin requires a firstUrl() method';\n\t}\n\n\n\t// in order for virtual scrolling to work,\n\t// options need to be ordered the same way they're returned from the remote data source\n\tself.settings.sortField\t\t\t= [{field:'$order'},{field:'$score'}];\n\n\n\t// can we load more results for given query?\n\tconst canLoadMore = (query:string):boolean => {\n\n\t\tif( typeof self.settings.maxOptions === 'number' && dropdown_content.children.length >= self.settings.maxOptions ){\n\t\t\treturn false;\n\t\t}\n\n\t\tif( (query in pagination) && pagination[query] ){\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tconst clearFilter = (option:TomOption, value:string):boolean => {\n\t\tif( self.items.indexOf(value) >= 0 || default_values.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\n\t// set the next url that will be\n\tself.setNextUrl = (value:string,next_url:any):void => {\n\t\tpagination[value] = next_url;\n\t};\n\n\t// getUrl() to be used in settings.load()\n\tself.getUrl = (query:string):any =>{\n\n\t\tif( query in pagination ){\n\t\t\tconst next_url = pagination[query];\n\t\t\tpagination[query] = false;\n\t\t\treturn next_url;\n\t\t}\n\n\t\t// if the user goes back to a previous query\n\t\t// we need to load the first page again\n\t\tself.clearPagination();\n\n\t\treturn self.settings.firstUrl.call(self,query);\n\t};\n\n\t// clear pagination\n\tself.clearPagination = ():void =>{\n\t\tpagination = {};\n\t};\n\n\t// don't clear the active option (and cause unwanted dropdown scroll)\n\t// while loading more results\n\tself.hook('instead','clearActiveOption',()=>{\n\n\t\tif( loading_more ){\n\t\t\treturn;\n\t\t}\n\n\t\treturn orig_clearActiveOption.call(self);\n\t});\n\n\t// override the canLoad method\n\tself.hook('instead','canLoad',(query:string)=>{\n\n\t\t// first time the query has been seen\n\t\tif( !(query in pagination) ){\n\t\t\treturn orig_canLoad.call(self,query);\n\t\t}\n\n\t\treturn canLoadMore(query);\n\t});\n\n\n\t// wrap the load\n\tself.hook('instead','loadCallback',( options:TomOption[], optgroups:TomOption[])=>{\n\n\t\tif( !loading_more ){\n\t\t\tself.clearOptions(clearFilter);\n\t\t}else if( load_more_opt ){\n\t\t\tconst first_option = options[0];\n\t\t\tif( first_option !== undefined ){\n\t\t\t\tload_more_opt.dataset.value\t\t= first_option[self.settings.valueField];\n\t\t\t}\n\t\t}\n\n\t\torig_loadCallback.call( self, options, optgroups);\n\n\t\tloading_more = false;\n\t});\n\n\n\t// add templates to dropdown\n\t//\tloading_more if we have another url in the queue\n\t//\tno_more_results if we don't have another url in the queue\n\tself.hook('after','refreshOptions',()=>{\n\n\t\tconst query\t\t= self.lastValue;\n\t\tvar option;\n\n\t\tif( canLoadMore(query) ){\n\n\t\t\toption = self.render('loading_more',{query:query});\n\t\t\tif( option ){\n\t\t\t\toption.setAttribute('data-selectable',''); // so that navigating dropdown with [down] keypresses can navigate to this node\n\t\t\t\tload_more_opt = option;\n\t\t\t}\n\n\t\t}else if( (query in pagination) && !dropdown_content.querySelector('.no-results') ){\n\t\t\toption = self.render('no_more_results',{query:query});\n\t\t}\n\n\t\tif( option ){\n\t\t\taddClasses(option,self.settings.optionClass);\n\t\t\tdropdown_content.append( option );\n\t\t}\n\n\t});\n\n\n\t// add scroll listener and default templates\n\tself.on('initialize',()=>{\n\t\tdefault_values = Object.keys(self.options);\n\t\tdropdown_content = self.dropdown_content;\n\n\t\t// default templates\n\t\tself.settings.render = Object.assign({}, {\n\t\t\tloading_more:() => {\n\t\t\t\treturn `<div class=\"loading-more-results\">Loading more results ... </div>`;\n\t\t\t},\n\t\t\tno_more_results:() =>{\n\t\t\t\treturn `<div class=\"no-more-results\">No more results</div>`;\n\t\t\t}\n\t\t},self.settings.render);\n\n\n\t\t// watch dropdown content scroll position\n\t\tdropdown_content.addEventListener('scroll',()=>{\n\n\t\t\tif( !self.settings.shouldLoadMore.call(self) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// !important: this will get checked again in load() but we still need to check here otherwise loading_more will be set to true\n\t\t\tif( !canLoadMore(self.lastValue) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// don't call load() too much\n\t\t\tif( loading_more ) return;\n\n\n\t\t\tloading_more = true;\n\t\t\tself.load.call(self,self.lastValue);\n\t\t});\n\t});\n\n};\n","import TomSelect from './tom-select';\n\nimport change_listener from './plugins/change_listener/plugin';\nimport checkbox_options from './plugins/checkbox_options/plugin';\nimport clear_button from './plugins/clear_button/plugin';\nimport drag_drop from './plugins/drag_drop/plugin';\nimport dropdown_header from './plugins/dropdown_header/plugin';\nimport caret_position from './plugins/caret_position/plugin';\nimport dropdown_input from './plugins/dropdown_input/plugin';\nimport input_autogrow from './plugins/input_autogrow/plugin';\nimport no_backspace_delete from './plugins/no_backspace_delete/plugin';\nimport no_active_items from './plugins/no_active_items/plugin';\nimport optgroup_columns from './plugins/optgroup_columns/plugin';\nimport remove_button from './plugins/remove_button/plugin';\nimport restore_on_backspace from './plugins/restore_on_backspace/plugin';\nimport virtual_scroll from './plugins/virtual_scroll/plugin';\n\nTomSelect.define('change_listener', change_listener);\nTomSelect.define('checkbox_options', checkbox_options);\nTomSelect.define('clear_button', clear_button);\nTomSelect.define('drag_drop', drag_drop);\nTomSelect.define('dropdown_header', dropdown_header);\nTomSelect.define('caret_position', caret_position);\nTomSelect.define('dropdown_input', dropdown_input);\nTomSelect.define('input_autogrow', input_autogrow);\nTomSelect.define('no_backspace_delete', no_backspace_delete);\nTomSelect.define('no_active_items', no_active_items);\nTomSelect.define('optgroup_columns', optgroup_columns);\nTomSelect.define('remove_button', remove_button);\nTomSelect.define('restore_on_backspace', restore_on_backspace);\nTomSelect.define('virtual_scroll', virtual_scroll);\n\nexport default TomSelect;\n"],"names":["forEvents","events","callback","split","forEach","event","MicroEvent","constructor","_events","on","fct","event_array","push","off","n","arguments","length","undefined","splice","indexOf","trigger","args","self","apply","MicroPlugin","Interface","plugins","names","settings","requested","loaded","define","name","fn","initializePlugins","key","queue","Array","isArray","plugin","options","hasOwnProperty","shift","require","loadPlugin","Error","iterate","object","getDom","query","jquery","HTMLElement","isHtmlString","tpl","document","createElement","innerHTML","trim","content","firstChild","querySelector","arg","escapeQuery","replace","triggerEvent","dom_el","event_name","createEvent","initEvent","dispatchEvent","applyCSS","css","Object","assign","style","addClasses","elmts","classes","norm_classes","classesArray","castAsArray","map","el","cls","classList","add","removeClasses","remove","_classes","concat","filter","Boolean","parentMatch","target","selector","wrapper","contains","matches","parentNode","getTail","list","direction","isEmptyObject","obj","keys","nodeIndex","amongst","nodeName","i","previousElementSibling","setAttr","attrs","val","attr","removeAttribute","setAttribute","replaceNode","existing","replacement","replaceChild","highlight","element","regex","RegExp","highlightText","node","match","data","spannode","className","middlebit","splitText","index","middleclone","cloneNode","appendChild","highlightChildren","nodeType","childNodes","test","tagName","from","highlightRecursive","removeHighlight","elements","querySelectorAll","prototype","call","parent","normalize","KEY_A","KEY_RETURN","KEY_ESC","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_BACKSPACE","KEY_DELETE","KEY_TAB","IS_MAC","navigator","userAgent","KEY_SHORTCUT","optgroups","delimiter","splitOn","persist","diacritics","create","createOnBlur","createFilter","openOnFocus","shouldOpen","maxOptions","maxItems","hideSelected","duplicates","addPrecedence","selectOnTab","preload","allowEmptyOption","refreshThrottle","loadThrottle","loadingClass","dataAttr","optgroupField","valueField","labelField","disabledField","optgroupLabelField","optgroupValueField","lockOptgroupOrder","sortField","searchField","searchConjunction","mode","wrapperClass","controlClass","dropdownClass","dropdownContentClass","itemClass","optionClass","dropdownParent","controlInput","copyClassesToDropdown","placeholder","hidePlaceholder","shouldLoad","render","hash_key","value","get_hash","escape_html","str","timeout","setTimeout","loadDebounce","delay","loading","Math","max","clearTimeout","loadedSearches","debounce_events","types","type","event_args","getSelection","input","start","selectionStart","selectionEnd","preventDefault","evt","stop","stopPropagation","addEvent","addEventListener","isKeyDown","key_name","count","altKey","ctrlKey","shiftKey","metaKey","getId","id","existing_id","getAttribute","addSlashes","append","getSettings","settings_user","defaults","attr_data","field_label","field_value","field_disabled","field_optgroup","field_optgroup_label","field_optgroup_value","tag_name","toLowerCase","option","textContent","settings_element","items","init_select","optionsMap","group_count","$order","readData","dataset","json","JSON","parse","addOption","group","arr","option_data","disabled","$option","selected","addGroup","optgroup","optgroup_data","children","hasAttribute","child","init_textbox","data_raw","values","opt","instance_i","TomSelect","input_arg","user_settings","control_input","dropdown","control","dropdown_content","focus_node","order","tabIndex","is_select_tag","rtl","inputId","_destroy","sifter","isOpen","isDisabled","isReadOnly","isRequired","isInvalid","isValid","isLocked","isFocused","isInputHidden","isSetup","ignoreFocus","ignoreHover","hasOptions","currentResults","lastValue","caretPos","activeOption","activeItems","userOptions","refreshTimeout","dir","tomselect","computedStyle","window","getComputedStyle","getPropertyValue","required","Sifter","setupCallbacks","setupTemplates","_render","inputMode","setup","passive_event","passive","listboxId","role","control_id","label","label_click","focus","bind","for","label_id","width","classes_plugins","join","multiple","escape_regex","load","e","target_match","onOptionHover","capture","onOptionSelect","onItemSelect","onClick","onKeyDown","onKeyPress","onInput","onBlur","onFocus","onPaste","doc_mousedown","composedPath","blur","inputState","win_scroll","positionDropdown","removeEventListener","revertSettings","insertAdjacentElement","sync","refreshState","updateOriginalInput","refreshItems","close","disable","readOnly","setReadOnly","enable","onChange","setupOptions","addOptions","registerOptionGroup","templates","optgroup_header","escape","item","option_create","no_results","not_loading","callbacks","get_settings","setValue","lastQuery","clearActiveItems","onMouseDown","pastedText","inputValue","splitInput","piece","hash","addItem","createItem","character","String","fromCharCode","keyCode","which","constants","selectAll","open","next","getAdjacent","setActiveOption","prev","canSelect","activeElement","advanceSelection","deleteSelection","_onInput","refreshOptions","wasFocused","hasFocus","deactivate","setActiveItem","setCaret","parentElement","closeAfterSelect","canLoad","loadCallback","clearActiveOption","setTextboxValue","changed","getValue","silent","clear","addItems","setMaxItems","eventName","begin","end","swap","last","getLastActive","setActiveItemClass","removeActiveItem","last_active","idx","scroll","scrollToOption","behavior","height_menu","clientHeight","scrollTop","height_item","offsetHeight","y","getBoundingClientRect","top","scrollBehavior","controlChildren","toggle","offsetWidth","getScoreFunction","getSearchOptions","sort","field","fields","conjunction","nesting","search","result","calculateScore","score","hashed","triggerDropdown","j","k","html","has_create_option","active_group","groups","groups_order","same_query","results","active_option","show_dropdown","closest","min","getGroupFragment","group_order_i","order_group","fragment","group_fragment","createDocumentFragment","opt_value","opt_hash","option_el","getOption","includes","self_optgroup","$id","toString","a","b","group_order","group_heading","group_options","header","group_html","tokens","tok","add_template","template","insertBefore","canCreate","active_index","selectable","user_created","dat","registerOption","addOptionGroup","hashed_id","removeOptionGroup","clearCache","clearOptionGroups","updateOption","item_new","index_item","value_old","value_new","data_old","getItem","uncacheValue","option_new","removeOption","removeItem","clearOptions","boundFilter","clearFilter","$div","all","x","last_item","isPending","wasFull","isFull","insertAtCaret","caret","output","lock","created","unlock","refreshValidityState","wrap_classList","validity","valid","opts","empty_option","has_selected","AddSelected","reuse_opt","visibility","display","context","rect","scrollY","left","scrollX","selection","tail","rm_items","rm_item","shouldDelete","pop","onDelete","adjacent","nextElementSibling","moveCaret","new_pos","setLocked","setDisabled","destroy","templateName","hook","when","method","new_fn","orig_method","result_new","orig_onOptionSelect","cbOptions","checkedClassNames","uncheckedClassNames","UpdateChecked","checkbox","toCheck","checked","UpdateCheckbox","HTMLInputElement","orig_render_option","rendered","prepend","title","button","insertAfter","referenceNode","newNode","_referenceNode$parent","nextSibling","_referenceNode$parent2","isBefore","_newNode","orig_lock","orig_unlock","sortable","drag_item","orig_render_item","mousedown","dragStart","dragOver","moveitem","dragLeave","targetitem","dragitem","dragend","_drag_item","headerClass","titleRowClass","labelClass","closeClass","close_link","div","orig_onBlur","relatedTarget","preventScroll","test_input","cssText","transfer_styles","style_name","resize","clientWidth","orig_deleteSelection","orig_keydown","previousSibling","close_button","text","orig_canLoad","orig_clearActiveOption","orig_loadCallback","pagination","loading_more","load_more_opt","default_values","shouldLoadMore","scroll_percent","scrollHeight","firstUrl","canLoadMore","setNextUrl","next_url","getUrl","clearPagination","first_option","no_more_results","change_listener","checkbox_options","clear_button","drag_drop","dropdown_header","caret_position","dropdown_input","input_autogrow","no_backspace_delete","no_active_items","optgroup_columns","remove_button","restore_on_backspace","virtual_scroll"],"mappings":"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","x_google_ignoreList":[2,3,4,5,6,7]}